unity-shaders-rendering

v2026.09.24

Unity shaders, materials, and rendering pipelines (URP/HDRP/Built-in). PROACTIVELY activate for: (1) writing shaders in Shader Graph, HLSL, or ShaderLab, (2) URP and HDRP shader authoring, (3) custom render pipeline work (SRP), (4) lighting setup (baked vs realtime, lightmaps, Global Illumination), (5) post-processing stacks, (6) reflection probes and light probes, (7) custom render features and full-screen passes, (8) shader stripping and variant management, (9) compute shaders, (10) ray tracing in HDRP. Provides: Shader Graph templates, HLSL snippets, URP/HDRP differences, lighting setup recipes, render-feature examples, and shader-variant guidance.

GitHub
Install command
npx skhub add josiahsiegel/unity-shaders-rendering
Markdown
SKILL.md

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
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

plugins/unity-master/skills/unity-shaders-rendering

Default branch

main

Latest commit

5a1b112

Tree SHA

376c8e0