ShaderLab에서 셰이더 오브젝트를 정의하려면 Shader
블록을 사용하십시오. 이 페이지는 Shader
블록을 사용하는 방법에 대한 정보를 포함합니다.
셰이더 오브젝트의 작동 방식 및 셰이더 오브젝트, 서브셰이더와 패스의 관계에 대해 알아보려면 셰이더 오브젝트 소개를 참조하십시오.
셰이더 오브젝트는 Unity 고유의 개념으로서, 셰이더 프로그램 및 기타 정보를 위한 래퍼입니다. 셰이더 오브젝트를 사용하면 같은 파일에서 여러 개의 셰이더 프로그램을 정의하고 Unity에 이러한 프로그램을 사용하는 방법을 지시할 수 있습니다.
셰이더 오브젝트는 중첩된 구조를 지니고 있습니다. 셰이더 오브젝트는 정보를 서브셰이더와 패스라는 구조로 정리합니다.
기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
---|---|---|---|---|
ShaderLab: Shader 블록 | 지원 | 지원 | 지원 | 지원 |
Shader
블록 내에서 다음을 수행할 수 있습니다.
Properties
블록을 사용하여 머티리얼 프로퍼티를 정의합니다. ShaderLab: 머티리얼 프로퍼티 정의를 참조하십시오.SubShader
블록을 사용하여 하나 이상의 서브셰이더를 정의합니다. ShaderLab: 서브셰이더 정의를 참조하십시오.Fallback
블록을 사용하여 폴백 셰이더 오브젝트 할당. ShaderLab: 폴백 할당을 참조하십시오.서명 | 기능 |
---|---|
Shader "<name>" { <optional: Material properties> <One or more SubShader definitions> <optional: custom editor> <optional: fallback> }
|
특정 이름의 셰이더 오브젝트를 정의합니다. |
Unity 5.0 이전에는 셰이더의 몇몇 기능이 해당 경로와 이름으로 결정되었습니다. Unity의 레거시 셰이더는 여전히 이러한 방식으로 작동합니다. 이러한 셰이더의 이름을 변경하면 해당 기능에 영향을 미칠 수 있습니다.
이 예제 코드는 셰이더 오브젝트의 기본적인 구문과 구조를 나타냅니다. 예제 셰이더 오브젝트에는 싱글 패스를 포함하는 단일 서브셰이더가 있습니다. 머티리얼 프로퍼티, 하나의 CustomEditor와 하나의 폴백을 정의합니다.
Shader "Examples/ShaderSyntax"
{
CustomEditor = "ExampleCustomEditor"
Properties
{
// Material property declarations go here
}
SubShader
{
// The code that defines the rest of the SubShader goes here
Pass
{
// The code that defines the Pass goes here
}
}
Fallback "ExampleFallbackShader"
}
여러 렌더 파이프라인과 호환되는 예제 커스텀 셰이더에 대한 내용은 예제 커스텀 셰이더를 참조하십시오.