ShaderLab syntax: SubShader

Unity의 각 쉐이더는 일련의 서브 쉐이더들로 구성됩니다. Unity가 메쉬를 보여줄 때 그것은 사용할 쉐이더를 찾은 후 사용자의 그래픽 카드에서 실행되는 첫 번째 서브 쉐이더를 선택할 것입니다.

Syntax

:_Subshader_ _{_ [Tags] [CommonState] Passdef [Passdef …] _}_: 서브 쉐이더를 선택적인 태그, 공통적인 상태 그리고 일련의 패스 정의로서 정의합니다.

Details

서브 쉐이더는 일련의 rendering passes를 정의하고 선택적으로 모든 패스에 공통적인 어떠한 상태를 세팅합니다. 추가적으로 서브쉐이더의 특정 Tags도 세팅될 수 있습니다.

Unity가 어떠한 서브 쉐이더로 표현할지를 결정할 때 그것은 정의된 각 패스를 위해서 물체를 한 번 그립니다 (그리고 조명 상호 작용 때문에 더 많이도 가능합니다). 각 물체를 그리는 것이 비싼 오퍼레이션이기 때문에 사용자는 가능하면 최소의 패스들로 쉐이더를 정의하기를 원합니다. 물론, 때때로 어떠한 그래픽 하드웨어에서는 필요한 효과가 한 번의 패스로 행해질 수 없습니다. 그러면 사용자는 다수의 패스를 사용하는 것 이외에 선택이 없습니다.

각 패스 정의는 regular Pass, Use Pass 또는 Grab Pass일 수 있습니다.

패스 정의에서 허락되는 어떠한 문장도 서브 쉐이더 블록에서 나타날 수 있습니다. 이것은 모든 패스가 이 "shared" 상태를 사용하도록 만들 것입니다.

Example

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

이 서브 쉐이더는 어떠한 조명도 끄고 MainTex라고 불리는 텍스쳐와 함께 하나의 메쉬를 보여주는 하나의 패스를 정의합니다.

역링크