ShaderLab syntax: BindChannels
BindChannels 명령은 사용자가 그래픽 하드웨어에 꼭지점 데이터를 어떻게 매핑할지를 정하는 것을 허락합니다.
BindChannels은 바인딩이 정점 쉐이더 입력값에 따라 조절되는 경우로서 프로그래밍이 가능한 정점 쉐이더가 사용될 때 어떠한 영향도 미치지 않습니다.
기본적으로 Unity는 사용자를 위한 바인딩을 찾아내나 어떠한 경우에는 사용자가 사용자가 정의한 것이 사용되어지기를 원하기도 합니다.
예를 들어 사용자는 주요한 UV 세트를 첫 번째 텍스쳐 스테이지에서 사용되기 위해 매핑할 수 있고 부가적인 UV 세트를 두 번째 텍스쳐 스테이지에서 사용되도록 매핑할 수 있습니다. 또는 사용자는 정점 색상이 고려되어져야 하는 것을 하드웨어에 말할 수도 있습니다.
Syntax
- BindChannels { Bind "source", target }
- 정점 데이터 source를 하드웨어 target에 매핑하는 것을 지정합니다.
Source 다음 중에 하나일 수 있습니다:
- Vertex: 꼭지점 위치
- Normal: 꼭지점 normal
- Tangent: 꼭지점 탄젠트
- Texcoord: 주요 UV 좌표
- Texcoord1: 부가적인 UV 좌표
- Color: 픽셀당 색상
Target 다음 중에 하나일 수 있습니다:
- Vertex: 꼭지점 위치
- Normal: 꼭지점 normal
- Tangent: 꼭지점 탄젠트
- Texcoord0, Texcoord1, ...: 해당 텍스쳐 스테이지를 위한 텍스쳐 좌표
- Texcoord: 모든 텍스쳐 스테이지들을 위한 텍스쳐 좌표들
- Color: 꼭지점 색상
Details
Unity는 어떤 소스가 어떤 타겟에 매핑될 수 있는지에 대한 제한사항들을 가집니다. 소스와 타겟은Vertex, Normal,Tangent 그리고 Color를 위해서 반드시 매치되어야 합니다. 메쉬(Texcoord와 Texcoord1) 로 부터 텍스쳐 좌표는 텍스쳐 좌표 타겟으로 매핑될 수 있습니다(모든 텍스쳐 스테이지를 위해서는 Texcoord 그리고 특정한 스테이지를 위해서는 TexcoordN).
BindChannels를 위한 두 가지의 일반적인 사용 케이스가 있습니다:
- 꼭지점 색상을 고려하는 쉐이더.
- 두 가지의 UV 세트를 사용하는 쉐이더.
Examples
// Maps the first UV set to the first texture stage // and the second UV set to the second texture stage BindChannels { Bind "Vertex", vertex Bind "texcoord", texcoord0 Bind "texcoord1", texcoord1 }
// Maps the first UV set to all texture stages // and uses vertex colors BindChannels { Bind "Vertex", vertex Bind "texcoord", texcoord Bind "Color", color }