쉐이더는 쉐이더 파일의 루트 명령입니다. 각 파일은 하나의 (오직 한 개의) 쉐이더만을 정의해야 합니다. 그것은 이 쉐이더를 사용하는 그것의 재질이 어떻게 렌더되는지를 지정합니다.
_Shader_ "name" _{_ [Properties] Subshaders [Fallback] _}_ 쉐이더를 정의합니다. 그것은 _name_ 아래에 리스트된 재료 인스펙터에서 나타날 것입니다. 쉐이더는 재료 세팅으로서 나타나는 _properties_의 리스트를 선택적으로 정의할 수 있습니다. 이것이 서브 쉐이더의 리스트가 온 후에 선택적으로 대체합니다.
쉐이더는 properties의 리스트를 가질 수 있습니다. 쉐이더 안에서 선언된 어떠한 속성이라도 Unity내부의 재료 인스펙터에서 보여집니다. 일반적인 속성은 물체의 색상, 텍스쳐 또는 쉐이더에 의해 사용되는 임의의 값입니다.
각 쉐이더는 sub-shaders의 리스트로 이루어집니다. 사용자는 최소한 하나를 가져야 합니다. 쉐이더를 로딩할 때 Unity는 서브 쉐이더의 리스트를 통해서 갈 것이고 사용자의 기계에 의해 지원되는 첫 번째 것을 선택합니다. 서브 쉐이더가 지원되지 않으면 Unity는 fallback shader를 사용하려고 노력할 것입니다.
다른 그래픽 카드는 다른 능력을 가집니다. 이것은 게임 개발자를 위한 영원한 이슈를 낳을 것입니다; 사용자는 사용자의 게임이 최신의 하드웨어에서 훌륭하게 보이기를 원하나 그것이 오직 인구의 3%에만 가능하기를 원하지는 않습니다. 이것은 서브 쉐이더가 들어오는 곳에 있습니다. 사용자가 꿈꿀 수 있는 모든 멋진 그래픽 효과를 가지는 서브 쉐이더를 생성하고나서 오래된 카드를 위한 더 많은 서브 쉐이더를 추가합니다. 이러한 서브 쉐이더는 사용자가 원하는 효과를 더 느린 방법으로 구현할지도 모르고 또는 그들은 디테일들을 구현하지 않는 것을 선택할지도 모릅니다.
Here is one of the simplest shaders possible:
// colored vertex lighting Shader "Simple colored lighting" { // a single color property Properties { _Color ("Main Color", Color) = (1,.5,.5,1) } // define one subshader SubShader { Pass { Material { Diffuse [_Color] } Lighting On } } }
이 쉐이더는 색 속성 _Color(material inspector에서 Main Color로 보여지는)을 기본값 (1, 0.5, 0.5, 1)로 정의합니다. 그리고 나서 하나의 서브 쉐이더는 정의됩니다. 서브 쉐이더는 정점 조명을 키는 하나의 Pass로 구성하고 그것을 위한 기본적인 재질을 셋업합니다.
(:tocportion:)