Version: 2020.3
ShaderLab: 서브셰이더에 태그 할당
ShaderLab: 패스 정의하기

ShaderLab: 서브셰이더에 LOD 값 할당

이 페이지는 ShaderLab 코드에서 LOD 블록을 사용하여 서브셰이더에 디테일 수준(LOD) 값을 할당하는 방법에 대한 정보를 포함합니다.

개요

서브셰이더에 LOD 값을 할당할 수 있습니다. 이 값은 서브셰이더가 연산적으로 얼마나 어려운지를 나타냅니다.

런타임 시 단일 셰이더 오브젝트나 모든 셰이더 오브젝트를 위한 셰이더 LOD 값을 설정할 수 있습니다. 그러면 Unity가 LOD 값이 보다 낮은 서브셰이더를 우선순위로 지정합니다. Unity가 서브셰이더를 사용해야 하는 때를 어떻게 선택하는지 알아보려면 셰이더 오브젝트: 렌더링 중 작업 순서를 참조하십시오.

참고: 이 기법은 메시 렌더링을 위한 LOD 기능의 이름을 차용했으나, 중요한 차이가 있습니다. 즉, 셰이더 LOD는 카메라와의 거리와 관련되지 않으며, Unity는 셰이더 LOD를 자동으로 계산하지 않습니다. 최대 셰이더 LOD는 수동으로 설정해야 합니다.

개요

이 기법을 사용하여 여러 하드웨어의 셰이더 성능을 세부적으로 조정하십시오. 서브셰이더가 이론적으로는 사용자의 하드웨어에서 지원되나, 하드웨어가 서브셰이더를 제대로 실행하지 못하는 경우 유용합니다.

렌더 파이프라인 호환성

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

LOD 블록 사용

ShaderLab에서는 SubShader 블록 안에 LOD 블록을 넣어 서브셰이더에 LOD 값을 할당합니다.

서명 기능
LOD [값] 특정 LOD 값을 서브셰이더에 할당합니다.

참고: Shader 블록 내에서 서브셰이더를 LOD 내림차순으로 배치해야 합니다. 예를 들어, LOD 값이 각각 200, 100, 500인 서브셰이더가 있는 경우 LOD 값이 500인 서브셰이더, LOD 값이 200인 서브셰이더, LOD 값이 100인 서브셰이더 순으로 배치해야 합니다. Unity는 첫 번째로 찾은 유효한 서브셰이더를 선택하므로, LOD가 더 낮은 서브셰이더를 먼저 찾으면 항상 해당 서브셰이더를 선택할 것이기 때문입니다.

C# 코드와 함께 서브셰이더 LOD 값 사용

특정 셰이더 오브젝트의 셰이더 LOD를 설정하려면 Shader.maximumLOD를 사용하십시오. 모든 셰이더 오브젝트를 위한 셰이더 LOD를 설정하려면 Shader.globalMaximumLOD를 사용하십시오. 기본적으로 최대 LOD는 설정되어 있지 않습니다.

코드 예제

이 예제 코드는 LOD 값이 200인 서브셰이더 하나와 LOD 값이 100인 서브셰이더 하나, 총 두 개의 서브셰이더를 포함하는 셰이더 오브젝트를 만듭니다. 서브셰이더는 LOD 값 내림차순으로 정렬되었습니다.

Shader "Examples/ExampleLOD"
{
    SubShader
    {
        LOD 200

        Pass
        {                
              // The rest of the code that defines the Pass goes here.
        }
    }

    SubShader
    {
        LOD 100

        Pass
        {                
              // The rest of the code that defines the Pass goes here.
        }
    }
}

Unity의 빌트인 셰이더를 위한 LOD 값

빌트인 렌더 파이프라인에서 Unity 빌트인 셰이더에는 다음 LOD 값이 있습니다.

LOD 값 셰이더 이름
100 Unlit/Texture
Unlit/Color
Unlit/Transparent
Unlit/Transparent Cutout
300 Standard
Standard (Specular Setup)
Autodesk Interactive

레거시 셰이더용 LOD 값

빌트인 렌더 파이프라인에서 Unity 빌트인 레거시 셰이더에는 다음 LOD 값이 있습니다.

LOD 값 셰이더 이름
100 VertexLit
150 Decal
Reflective VertexLit
200 디퓨즈
250 Diffuse Detail
Reflective Bumped Unlit
Reflective Bumped VertexLit
300 Bumped
Specular
400 범프 스페큘러
500 Parallax
600 Parallax Specular
ShaderLab: 서브셰이더에 태그 할당
ShaderLab: 패스 정의하기