ShaderLab 코드에서 머티리얼 프로퍼티를 정의할 수 있습니다. 머티리얼 프로퍼티는 Unity가 머티리얼 에셋의 일부로 저장하는 프로퍼티입니다. 이를 통해 아티스트는 다양한 설정의 머티리얼을 생성하고 편집하고 공유할 수 있습니다.
머티리얼 프로퍼티를 사용하는 경우:
머티리얼 프로퍼티를 사용하지 않는 경우:
일반적으로 머티리얼 프로퍼티를 생성하지 않는 경우는 오직 스크립트만 사용하여 셰이더 프로퍼티 값을 설정하려는 경우(예: 절차적 콘텐츠를 만드는 경우), 프로퍼티를 머티리얼 프로퍼티로 만들 수 없는 경우 또는 프로퍼티를 인스펙터에서 수정하지 않으려는 경우뿐입니다.
셰이더 프로퍼티 값은 다음 위치에서 발견되고 셰이더에 제공됩니다.
우선 순위는 위와 같습니다. 인스턴스당 데이터는 모든 것을 오버라이드합니다. 그러면 머티리얼 데이터가 사용됩니다. 그리고 마지막으로 셰이더 프로퍼티가 이 두 위치에 없으면 전역 프로퍼티 값이 사용됩니다. 마지막으로 셰이더 프로퍼티 값이 어느 곳에도 정의되지 않은 경우 ‘기본’ 값(플로트의 경우 0, 컬러의 경우 검은색, 텍스처의 경우 빈 흰색 텍스처)이 제공됩니다.
머티리얼은 직렬화 및 런타임에서 설정한 프로퍼티 값을 모두 포함할 수 있습니다.
직렬화된 데이터는 셰이더의 프로퍼티 블록에 정의된 모든 프로퍼티입니다. 일반적으로 머티리얼에 저장해야 하는 값이며, 머티리얼 인스펙터에서 사용자가 조정할 수 있습니다.
머티리얼은 셰이더가 사용하지만 셰이더의 프로퍼티 블록에 선언되지 않은 일부 프로퍼티도 가질 수 있습니다. 일반적으로 이는 런타임 시점에 스크립트 코드에서 설정된 프로퍼티(예: Material.SetColor를 통해)에 해당합니다. 매트릭스와 배열은 직렬화되지 않은 런타임 프로퍼티로만 존재할 수 있습니다(프로퍼티 블록에서 정의할 방법이 없기 때문).