Version: 2020.3
ShaderLab: 서브셰이더에 LOD 값 할당
ShaderLab: 패스에 이름 할당

ShaderLab: 패스 정의하기

ShaderLab에서 패스를 정의하려면 Pass 블록을 사용하십시오. 이 페이지는 Pass 블록을 사용하는 방법에 관한 정보를 포함합니다. 셰이더 오브젝트의 작동 방식 및 셰이더 오브젝트, 서브셰이더와 패스의 관계에 대해 알아보려면 셰이더 오브젝트 기초를 참조하십시오.

개요

패스는 셰이더 오브젝트의 기초 요소로, GPU 상태 및 GPU에서 실행되는 셰이더 프로그램을 설정하기 위한 명령을 포함합니다.

단순한 셰이더 오브젝트는 싱글 패스만 포함할 수 있으나, 보다 복잡한 셰이더는 여러 개의 패스를 포함할 수 있습니다. 셰이더 오브젝트의 서로 다르게 작동하는 부분을 정의하기 위해 별도의 패스를 사용할 수 있습니다(예: 렌더 상태의 변경을 요구하는 부분, 서로 다른 셰이더 프로그램 또는 다른 LightMode 패스 태그).

참고: 스크립터블 렌더 파이프라인에 기반한 렌더 파이프라인에서 RenderStateBlock을 사용하면 별도의 패스를 요구할 필요 없이 GPU에서 렌더 상태를 변경할 수 있습니다.

렌더 파이프라인 호환성

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

Pass 블록 사용

ShaderLab에서 일반 패스를 정의하려면 SubShader 블록 안에 Pass 블록을 넣으십시오.

Pass 블록 내에서 다음을 수행할 수 있습니다.

UsePass 또는 GrabPass 커맨드를 사용하여 두 가지의 특별한 패스 타입을 정의할 수 있습니다. 이러한 커맨드에 관한 내용은 ShaderLab 커맨드: UsePass 또는 ShaderLab 커맨드: GrabPass를 참조하십시오.

서명 기능
Pass
{
    <optional: name>
 <optional: tags>
    <optional: commands>
   <optional: shader code>
}
패스를 정의합니다.

예제

이 예제 코드는 싱글 패스를 포함한 단일 서브셰이더를 포함하는 셰이더 오브젝트를 만들기 위한 구문을 나타냅니다.

Shader "Examples/SinglePass"
{
    SubShader
    {
        Pass
        {                
              Name "ExamplePassName"
              Tags { "ExampleTagKey" = "ExampleTagValue" }

              // ShaderLab commands go here.

              // HLSL code goes here.
        }
    }
}
ShaderLab: 서브셰이더에 LOD 값 할당
ShaderLab: 패스에 이름 할당