mcpField
U
unity-shaders-rendering

unity-shaders-rendering

github.com/josiahsiegelDevelopment59127 installsUpdated 19w ago
Repository

About unity-shaders-rendering

A rendering and shader reference for Unity developers, covering render pipelines, Shader Graph, hand-written shaders, lighting, and visual effects. It spans Built-in RP, URP, and HDRP, with guidance on rendering extensions and effect workflows.

Key features

  1. 01Compare Built-in RP, URP, and HDRP
  2. 02Build Shader Graph node networks
  3. 03Write ShaderLab and HLSL shaders
  4. 04Configure lighting, lightmaps, and post-processing
  5. 05Use VFX Graph and URP render features

Use cases

  1. 01Choose a render pipeline for a Unity project
  2. 02Create dissolve, glow, or vertex displacement shaders
  3. 03Configure scene lighting and light baking
  4. 04Implement outlines or screen-space effects in URP

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill unity-shaders-rendering

After installing, type/unity-shaders-renderingin Claude Code to confirm it loaded.

Details

From the project README

Unity Shaders and Rendering

Overview

Reference for Unity's rendering systems, shader development, lighting configuration, and visual effects. Covers all three render pipelines, Shader Graph, hand-written shaders, and VFX Graph.

Render Pipeline Comparison

FeatureBuilt-in RPURPHDRP
TargetLegacy projectsMobile, VR, wide rangeHigh-end PC/console
Shader languageSurface shaders + HLSLHLSL (no surface shaders)HLSL
Shader GraphYesYesYes
SRP BatcherNoYesYes
Render FeaturesNoYes (ScriptableRendererFeature)Custom Pass
Post-processingPost Processing Stack v2Volume system (built-in)Volume system (built-in)
Ray tracingNoNo (probe-based)Yes (DXR)
PerformanceModerateOptimized for scaleHighest fidelity

Recommendation: Use URP for new projects unless targeting high-end visuals exclusively (HDRP). Built-in RP is legacy -- migrate when possible.

Shader Graph

Getting Started
  1. Right-click in Project: Create > Shader Graph > URP > Lit Shader Graph
  2. Double-click to open Shader Graph editor
  3. Build node network connecting to Master Stack outputs
  4. Create a Material using the shader, assign to renderers
Master Stack Outputs (URP Lit)
OutputTypePurpose
Base ColorColor (RGB)Albedo/diffuse color
NormalVector3Tangent-space normal map
MetallicFloat (0-1)Metal vs. dielectric
SmoothnessFloat (0-1)Roughness inverse
EmissionColor (RGB)Self-illumination
AlphaFloat (0-1)Transparency
Alpha Clip ThresholdFloatCutoff for alpha testing
Common Node Patterns
EffectKey Nodes
DissolveNoise > Step > Alpha Clip + Edge emission
Scrolling UVTime > Multiply > Add to UV
Fresnel glowFresnel Effect > Multiply color > Emission
Triplanar mappingTriplanar node (avoids UV stretching)
Color shiftLerp between colors using parameter or time
Vertex displacementNoise > Multiply > Add to Position
OutlineTwo-pass: inverted hull in custom render feature
Shader Graph Sub Graphs

Extract reusable node groups into Sub Graphs (Create > Shader Graph > Sub Graph). Use for shared noise functions, UV transformations, or custom lighting models.

Hand-Written Shaders (ShaderLab + HLSL)

URP Shader Structure
Shader "Custom/SimpleUnlit"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Color ("Color", Color) = (1,1,1,1)
    }

    SubShader
    {
        Tags { "RenderType"="Opaque" "RenderPipeline"="UniversalPipeline" }

        Pass
        {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

            struct Attributes
            {
                float4 positionOS : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct Varyings
            {
                float4 positionHCS : SV_POSITION;
                float2 uv : TEXCOORD0;
            };

            TEXTURE2D(_MainTex);
            SAMPLER(sampler_MainTex);

            CBUFFER_START(UnityPerMaterial)
                float4 _MainTex_ST;
                half4 _Color;
            CBUFFER_END

            Varyings vert(Attributes IN)
            {
                Varyings OUT;
                OUT.positionHCS = TransformObjectToHClip(IN.positionOS.xyz);
                OUT.uv = TRANSFORM_TEX(IN.uv, _MainTex);
                return OUT;
            }

            half4 frag(Varyings IN) : SV_Target
            {
                half4 tex = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, IN.uv);
                return tex * _Color;
            }
            ENDHLSL
        }
    }
}

Key differences from Built-in shaders:

  • Use HLSLPROGRAM/ENDHLSL (not CGPROGRAM/ENDCG)
  • Include URP shader library, not UnityCG.cginc
  • Use TEXTURE2D/SAMPLER macros (not sampler2D)
  • Wrap properties in CBUFFER_START(UnityPerMaterial) for SRP Batcher compatibility

Lighting

Light Types
TypeUse ForShadow Cost
DirectionalSun, global illuminationLow (cascaded shadow maps)
PointTorches, lampsMedium
SpotFlashlights, stage lightsMedium
Area (baked only)Soft window light, panelsHigh (bake only)
Lighting Modes
ModeDescriptionBest For
RealtimeComputed every frameDynamic objects, few lights
BakedPre-computed into lightmapsStatic environments
MixedBaked indirect + realtime directBest balance
Lightmap Baking Tips
  • Set lightmap resolution based on scene scale (10-40 texels/unit for indoor)
  • Use Light Probes for dynamic objects in baked scenes
  • Use Reflection Probes for metallic/reflective surfaces
  • Enable GPU Lightmapper for faster bake times
  • Mark objects as Contribute GI in the Static flags

Post-Processing (Volume System)

Setup:
1. Add a Volume (Global or Local) to the scene
2. Create a Volume Profile asset
3. Add overrides: Bloom, Color Adjustments, Tonemapping, etc.
4. Camera must have Post Processing enabled (URP Camera settings)
EffectPerformanceNotes
BloomLowUse threshold to control intensity
Color AdjustmentsVery LowSaturation, contrast, color filter
TonemappingVery LowACES for cinematic look
VignetteVery LowFrame darkening
Ambient Occlusion (SSAO)MediumDisable on mobile
Depth of FieldHighUse Bokeh only for cinematics
Motion BlurMediumCan cause motion sickness in VR

VFX Graph vs Particle System

FeatureParticle System (Shuriken)VFX Graph
ExecutionCPUGPU (compute shader)
Particle countThousandsMillions
ComplexityComponent-based, simpleNode-based, complex
PlatformAllCompute shader capable only
IntegrationPhysics, collisionLimited physics

Use Particle System for gameplay-integrated effects (physics collisions, small counts). Use VFX Graph for visual spectacles (rain, fire, magic, ambient particles).

URP Render Features

Extend URP rendering with custom ScriptableRendererFeatures:

public class OutlineFeature : ScriptableRendererFeature
{
    OutlinePass _pass;

    public override void Create()
    {
        _pass = new OutlinePass();
        _pass.renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
    }

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData data)
    {
        renderer.EnqueuePass(_pass);
    }
}

Common uses: custom outlines, screen-space effects, render texture generation, stencil-based effects.

Additional Resources

Reference Files
  • references/shader-recipes.md -- Complete shader implementations: toon/cel shading, water, dissolve, hologram, force field, procedural skybox, stencil portal, vertex animation, custom lighting models
  • references/lighting-vfx-detail.md -- Advanced lighting setups, GI troubleshooting, VFX Graph cookbook (fire, smoke, electricity, portals), Scriptable Render Pipeline customization, custom render passes

Comments

Markdown supported