ShaderLab에서 셰이더 오브젝트에 머티리얼 프로퍼티를 할당하려면 Shader 블록 안에 Properties 블록을 넣으십시오.
셰이더 프로그램에서 이러한 프로퍼티 중 일부에 액세스하려면 동일한 이름과 일치하는 유형의 Cg/HLSL 변수를 선언해야 합니다.
예를 들어, 다음과 같은 셰이더 프로퍼티는
_MyColor ("Some Color", Color) = (1,1,1,1)
_MyVector ("Some Vector", Vector) = (0,0,0,0)
_MyFloat ("My float", Float) = 0.5
_MyTexture ("Texture", 2D) = "white" {}
_MyCubemap ("Cubemap", CUBE) = "" {}
Cg/HLSL에서 다음과 같이 액세스하기 위해 선언됩니다.
fixed4 _MyColor; // low precision type is usually enough for colors
float4 _MyVector;
float _MyFloat;
sampler2D _MyTexture;
samplerCUBE _MyCubemap;
Cg/HLSL은 uniform 키워드도 받아들일 수 있지만, 필수는 아닙니다.
uniform float4 _MyColor;
ShaderLab의 프로퍼티 유형은 다음과 같이 Cg/HLSL 변수 유형에 배치될 수 있습니다.
리니어 색 공간을 사용할 때 모든 머티리얼 컬러 프로퍼티는 sRGB 컬러로 공급되지만 셰이더로 전달될 때 리니어 값으로 전환됩니다.
예를 들어, 프로퍼티 셰이더 블록이 ‘_MyColor’라는 Color 프로퍼티를 포함하는 경우 상응하는 ‘_MyColor’ HLSL 변수가 리니어 컬러 값을 획득합니다.
Float 또는 Vector 유형으로 표시된 프로퍼티의 경우 기본적으로 색 공간 변환은 수행되지 않으며, 컬러가 아닌 데이터를 포함한다고 가정합니다. 플로트/벡터 프로퍼티에 대한 [Gamma] 속성을 추가하여 컬러처럼 sRGB 공간에서 지정되었음을 나타낼 수 있습니다(프로퍼티 참조).