Version: 2021.2
언어: 한국어
ShaderLab: 패스에 이름 할당
ShaderLab: 빌트인 렌더 파이프라인의 사전 정의된 패스 태그

ShaderLab: 패스에 태그 할당

이 페이지는 패스에 태그를 할당하기 위해 ShaderLab 코드에서 Tags 블록을 사용하는 방법에 관한 정보를 포함합니다. 또한 LightMode 태그를 사용하는 방법에 관한 정보도 포함합니다.

셰이더 오브젝트의 작동 방식 및 셰이더 오브젝트, 서브셰이더와 패스의 관계에 대해 알아보려면 셰이더 오브젝트 기초를 참조하십시오.

개요

태그는 패스에 할당할 수 있는 데이터의 키-값 쌍입니다. Unity는 사전 정의된 태그와 값을 사용하여 특정 패스를 렌더하는 방식과 시점을 결정합니다. 커스텀 값으로 직접 커스텀 패스 태그를 만들고 C# 코드에서 이러한 태그에 액세스할 수 있습니다.

가장 자주 사용되는 사전 정의된 패스 태그는 LightMode 태그입니다. 이 태그는 모든 렌더 파이프라인에서 사용됩니다. 다른 패스 태그는 렌더 파이프라인별로 다릅니다. 자세한 내용은 다음 페이지를 참조하십시오.

렌더 파이프라인 호환성

기능 이름 빌트인 렌더 파이프라인 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 SRP
ShaderLab: Pass Tags 블록 지원 지원 지원 지원
ShaderLab: LightMode 패스 태그 지원 지원 지원 지원

Tags 블록 사용

ShaderLab에서 패스에 태그를 할당하려면 Pass 블록 안에 Tags 블록을 넣으십시오.

서브셰이더와 패스 모두 Tags 블록을 사용하지만, 두 가지는 서로 다르게 작동합니다. 서브셰이더 태그를 패스에 할당하는 것은 효과가 없으며, 반대도 마찬가지입니다. Tags 블록을 사용해야만 변화가 일어납니다.

  • 패스 태그를 정의하려면 Pass 블록 안에 Tags 블록을 넣으십시오.
  • 서브셰이더 태그를 정의하려면 SubShader 블록의 내부이지만 Pass 블록의 외부인 위치에 Tags 블록을 넣으십시오.

서브셰이더에 태그를 할당하는 방법에 관한 정보는 서브셰이더에 태그 할당을 참조하십시오.

서명 기능
Tags {"<name1>" = "<value1>" "<name2>" = "<value2>"} 주어진 태그를 패스에 적용합니다.

원하는 수만큼 태그를 정의할 수 있습니다.

C# 스크립트와 함께 패스 태그 사용

Shader.FindPassTagValue API를 사용하여 C# 스크립트에서 패스 태그 값에 액세스할 수 있습니다. 이는 Unity의 사전 정의된 패스 태그와 본인이 만든 커스텀 패스 태그에 대해 작동합니다.

참고: LightMode 패스 태그와 함께 직접 작동하는 API가 여러 개 있습니다. 자세한 내용은 C# 스크립트와 함께 LightMode 태그 사용을 참조하십시오.

LightMode 태그

LightMode 태그는 사전 정의된 패스 태그입니다. Unity는 이 패스 태그를 사용하여 특정 프레임 중 패스를 실행할지, Unity가 프레임 중 어느 시점에 패스를 실행할지 및 Unity가 결과로 무엇을 할지를 결정합니다.

참고: LightMode 태그는 조명과 관련된 LightMode 열거형과 관련되지 않았습니다.

모든 렌더 파이프라인은 LightMode 태그를 사용하지만, 사전 정의된 값과 그 의미는 다를 수 있습니다. 자세한 내용은 구문 및 유효값을 참조하십시오.

빌트인 렌더 파이프라인에서 LightMode 태그를 설정하지 않으면 Unity는 조명이나 그림자 없이 패스를 렌더링합니다. 이는 실질적으로 Always 대신 LightMode 값이 있는 것과 마찬가지입니다. 스크립터블 렌더 파이프라인에서는 SRPDefaultUnlit 값을 사용하여 LightMode 태그 없이 패스를 참조할 수 있습니다.

구문 및 유효값

서명 기능
“LightMode” = “[value]” 이 패스의 LightMode 값을 설정합니다.

이 태그에 대해 유효한 값은 렌더 파이프라인에 따라 다릅니다.

  • 빌트인 렌더 파이프라인의 LightMode 패스 태그 값에 관한 내용은 [빌트인 렌더 파이프라인의 사전 정의된 패스 태그](shader-predefined-pass-tags-built Value-in)를 참조하십시오.
  • 유니버설 렌더 파이프라인(URP)의 LightMode 패스 태그 값에 관한 내용은 URP 패스 태그: LightMode를 참조하십시오.

C# 스크립트와 함께 LightMode 태그 사용

Material.SetShaderPassEnabledShaderTagIdLightMode 태그 값을 사용하여 Unity가 특정 패스를 처리하는 방식을 결정합니다.

스크립터블 렌더 파이프라인에서 LightMode 태그의 커스텀 값을 만들 수 있습니다. 그런 다음 이러한 커스텀 값을 사용하여 DrawingSettings 구조체를 설정함으로써 ScriptableRenderContext.DrawRenderers에 대한 특정 호출 중 드로우할 패스를 결정할 수 있습니다. 자세한 내용과 코드 예제를 알아보려면 커스텀 스크립터블 렌더 파이프라인에서 간단한 렌더 루프 생성을 참조하십시오.

예제

Shader "Examples/ExampleLightMode"
{
    SubShader
    {
        Pass
        {    
              Tags { "LightMode" = "Always" }
            
              // The rest of the code that defines the Pass goes here.
        }
    }
}
ShaderLab: 패스에 이름 할당
ShaderLab: 빌트인 렌더 파이프라인의 사전 정의된 패스 태그