ShaderLab에서 서브셰이더를 정의하려면 SubShader
블록을 사용하십시오. 이 페이지는 SubShader
블록을 사용하는 방법에 대한 정보를 포함합니다.
셰이더 오브젝트의 작동 방식 및 셰이더 오브젝트, 서브셰이더와 패스의 관계에 대해 알아보려면 셰이더 오브젝트 소개를 참조하십시오.
셰이더 오브젝트는 하나 이상의 서브셰이더를 포함합니다. 서브셰이더를 사용하여 여러 하드웨어를 위한 각종 GPU 설정과 셰이더 프로그램, 렌더 파이프라인 및 런타임 설정을 정의할 수 있습니다. 일부 셰이더 오브젝트는 하나의 서브셰이더만 포함하는 반면, 여러 설정을 지원하기 위해 여러 개의 서브셰이더를 포함하는 셰이더 오브젝트도 있습니다.
기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
---|---|---|---|---|
ShaderLab: SubShader 블록 | 지원 | 지원 | 지원 | 지원 |
ShaderLab에서는 Shader
블록 안에 SubShader
블록을 넣어 서브셰이더를 정의합니다.
SubShader
블록 내에서 다음을 수행할 수 있습니다.
LOD
블록을 사용하여 디테일 수준(LOD) 값을 서브셰이더에 할당합니다. 서브셰이더에 LOD 값 할당을 참조하십시오.Tags
블록을 사용하여 서브셰이더에 데이터의 키-값 쌍을 할당합니다. ShaderLab: 서브셰이더에 태그 할당을 참조하십시오.Pass
블록을 사용하여 하나 이상의 패스를 정의합니다. ShaderLab: 패스 정의를 참조하십시오.PackageRequirements
블록을 사용하여 패키지 요구 사항을 지정합니다. 그러면 필수 패키지가 설치된 경우에만 Unity가 서브셰이더를 실행합니다. ShaderLab: 패키지 요구 사항 지정을 참조하십시오.서명 | 기능 |
---|---|
SubShader { <optional: LOD> <optional: tags> <optional: commands> <One or more Pass definitions> }
|
서브셰이더를 정의합니다. 서브셰이더 내에서 원하는 수만큼 패스를 정의할 수 있습니다. |
이 예제 코드는 싱글 패스를 포함한 단일 서브셰이더를 포함하는 셰이더 오브젝트를 만들기 위한 구문을 나타냅니다.
Shader "Examples/SinglePass"
{
SubShader
{
Tags { "ExampleSubShaderTagKey" = "ExampleSubShaderTagValue" }
LOD 100
// ShaderLab commands that apply to the whole SubShader go here.
Pass
{
Name "ExamplePassName"
Tags { "ExamplePassTagKey" = "ExamplePassTagValue" }
// ShaderLab commands that apply to this Pass go here.
// HLSL code goes here.
}
}
}