Game Dev/Unity Shader

Unity URP Multi-Pass 사용 with Cel Shading (3) - Unity Shader

Septentrions 2026. 1. 5. 13:40

 

기본적으로 URP HLSL에서는 Multi-Pass를 지원하지 않기 때문에, 다음 처럼 Outline Material을 추가해서 적용해야 한다.

 


https://docs.unity3d.com/kr/Packages/com.unity.render-pipelines.universal%4014.0/manual/urp-shaders/urp-shaderlab-pass-tags.html

 

URP ShaderLab 패스 태그 | Universal RP | 14.0.9

URP ShaderLab 패스 태그 이 섹션에는 URP 전용 ShaderLab 패스 태그에 대한 설명이 포함되어 있습니다. 참고: URP는 다음의 LightMode 태그를 지원하지 않습니다. Always, ForwardAdd, PrepassBase, PrepassFinal, Vertex, Ve

docs.unity3d.com

 

해당 Docs의 Tags 에는 SRPDefaultUnlit 라는 태그가 존재한다.

// URP의 Render Pipeline 정의
Tags
{
	"RenderType" = "Opaque"
    "RenderPipeline" = "UniversalPipeline"
}
Pass
{
	Tags
    {
    	"LightMode" = "UniverslaForward"
    }
    Name "UniversalForward"
    
    Cull Back
    Blend One Zero
    ZTest LEqual
    Zwrite On
    
    HLSLPROGRAM
    ...
    ENDHLSL
}

Pass
{
	Tags 
    {
    "LightMode" = "SRPDefaultUnlit"
    }
    Name "Outline"
    
    Cull Front
    Blend One Zero
    ZTest LEqual
    ZWrite On
    
    HLSLPROGRAM
    ...
    ENDHSLSL
}

 

왼쪽, Multi-Pass 적용. 오른 쪽, 개별 Material 추가

다음처럼 내 다른 Custom Outline Shader 코드를 그대로 복사해서 추가 Pass를 넣었더니 잘 동작하는걸 알 수 있다.