Version: 2018.2
ShaderLab: 프로퍼티
ShaderLab: 패스

ShaderLab: 서브셰이더

Unity의 각 셰이더는 여러 서브셰이더(subshader)로 구성됩니다. Unity는 메시를 표시해야 할 때 먼저 사용할 셰이더를 찾은 다음 사용자의 그래픽 카드에서 실행되는 첫 서브셰이더를 선택합니다.

구문

Subshader { [Tags] [CommonState] Passdef [Passdef ...] }

서브셰이더를 선택 항목인 태그, 공통 스테이트, 패스 정의 리스트로 정의합니다.

세부 정보

서브셰이더는 렌더링 패스 리스트를 정의하고 선택적으로 모든 패스에 공통인 스테이트를 설정합니다. 추가로 서브셰이더 특화 태그를 설정할 수 있습니다.

Unity가 렌더에 사용할 서브셰이더를 선택할 때 정의된 각 패스에 대해 오브젝트를 한 번 렌더링하며 광원의 상호작용으로 인해 몇 번 더 렌더링할 수도 있습니다. 각 오브젝트 렌더는 비용이 큰 작업이므로 가능하다면 최소 비용이 드는 패스에서 셰이더를 정의하고자 할 것입니다. 물론 일부 그래픽스 하드웨어에서는 필요로 하는 효과를 단일 패스로는 구현이 불가능할 때도 있습니다. 이러한 경우에는 멀티플 패스를 사용해야 합니다.

각 패스는 일반 패스, 유즈 패스(Use Pass), 그랩 패스(Grab Pass) 중 하나로 정의됩니다.

패스 정의에서 허용되는 모든 명령은 서브셰이더 블록에도 사용할 수 있습니다. 이를 통해 모든 패스가 이 “공유” 스테이트를 사용할 수 있습니다.

예제

// ...
SubShader {
    Pass {
        Lighting Off
        SetTexture [_MainTex] {}
    }
}
// ...

이 서브셰이더는 모든 조명을 끄고 _\MainTex__ 라는 이름의 텍스처가 있는 메시만을 표시하는 하나의 패스를 정의합니다.

ShaderLab: 프로퍼티
ShaderLab: 패스