ShaderLab syntax: Properties
쉐이더는 Unity의 material inspector에서 아티스트에 의해 세팅된 파라미터의 리스트를 정의할 수 있습니다. 쉐이더 파일의 속성 블록은 그들을 정의합니다.
Syntax
:_Properties_ { Property [Property …] }: 속성 블록을 정의합니다. 중괄호안에 다수의 속성은 다음과 같이 정의됩니다. :name ("display name", _Range_ (min, max)) = number: 인스펙터에서 min과 max 사이의 슬라이더로 나타나는 소수점 속성을 정의합니다. :name ("display name", _Color_) = (number,number,number,number): 색상 속성을 정의합니다. :name ("display name", _2D_) = "name" { options }: 2D 텍스쳐 속성을 정의합니다. :name ("display name", _Rect_) = "name" { options }: 직사각형 (2의 지수가 아닌) 텍스쳐 속성을 정의합니다. :name ("display name", _Cube_) = "name" { options }: Cubemap 텍스쳐 속성을 정의합니다. :name ("display name", _Float_) = number: 소수점 속성을 정의합니다. :name ("display name", _Vector_) = (number,number,number,number): 네 개의 컴포넌트 벡터 속성을 정의합니다.
Details
쉐이더 내부의 각 속성은 _name_에 의해 참조됩니다 (Unity에서 밑줄과 함께 쉐이더 속성 이름을 시작하는 것이 공통적입니다). 속성은 _display name_로서 재질 인스펙터에 나타날 것입니다. 각 속성을 위해서 기본값은 등호 이후에 주어집니다:
- Range 와 Float 속성을 위해서 그것은 단순한 하나의 숫자입니다.
- Color 와 Vector 속성을 위해서 그것은 괄호안의 네 개의 숫자입니다.
- 텍스쳐를 위해서 (2D, Rect, Cube) 기본값은 빈 스트링이거나 또는 내장된 기본 텍스쳐 중 하나입니다: "white", "black", "gray" 또는 "bump".
이후에 이 쉐이더에서 속성 값은 사각 괄호안에 속성 이름을 사용해서 접근됩니다: _[name]_.
Example
Properties { // properties for water shader _WaveScale ("Wave scale", Range (0.02,0.15)) = 0.07 // sliders _ReflDistort ("Reflection distort", Range (0,1.5)) = 0.5 _RefrDistort ("Refraction distort", Range (0,1.5)) = 0.4 _RefrColor ("Refraction color", Color) = (.34, .85, .92, 1) // color _ReflectionTex ("Environment Reflection", 2D) = "" {} // textures _RefractionTex ("Environment Refraction", 2D) = "" {} _Fresnel ("Fresnel (A) ", 2D) = "" {} _BumpMap ("Bumpmap (RGB) ", 2D) = "" {} }
Texture property options
텍스쳐 속성의 괄호안의 옵션은 선택적입니다. 가능한 옵션은 다음과 같습니다:
:_TexGen_ texgenmode: 이 텍스쳐를 위한 자동적인 텍스쳐 좌표 생성 모드. ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal 중 하나일 수 있습니다; 이러한 것들은 직접적으로OpenGL texgen 모드와 관련됩니다. 사용자 정의 꼭지점 프로그램이 사용되면 TexGen이 무시되는 것을 참고하시기 바랍니다. :_LightmapMode_: 주어지면 이 텍스쳐는 렌더러 당 lightmap 파라미터에 의해서 영향을 받을 것입니다. 즉 사용하는 텍스쳐는 재질안에 있을 수 없습니다. 그러나 그것은 렌더러의 세팅으로부터 취해질 수 있습니다. Renderer scripting documentation을 참고하시기 바랍니다.
Example
// EyeLinear texgen mode example Shader "Texgen/Eye Linear" { Properties { _MainTex ("Base", 2D) = "white" { TexGen EyeLinear } } SubShader { Pass { SetTexture [_MainTex] { combine texture } } } }
- 출처: 유니티코리아위키 (CC BY-NC-SA 2.0)