참고: 이 페이지의__ ShaderLab__셰이더 오브젝트의 구조를 정의하기 위한 Unity 언어입니다. 자세한 정보
See in Glossary 기능은 레거시이며 이전 버전과의 호환성을 위해서만 문서화되었습니다. 셰이더 소스 파일에 HLSL 코드가 포함된 경우 Unity는 이러한 커맨드를 완전히 무시합니다. 셰이더 소스 파일에 HLSL 코드가 포함되어 있지 않으면 Unity는 임포트 시 이러한 커맨드를 일반 셰이더 프로그램에 컴파일합니다.
| 기능 이름 | 빌트인 렌더 파이프라인 | URP(유니버설 렌더 파이프라인) | HDRP(고해상도 렌더 파이프라인) | 커스텀 SRP |
|---|---|---|---|---|
| 레거시 조명 | 지원 | 지원 안 함 | 지원 안 함 | 지원 안 함 |
머티리얼과 조명 파라미터는 빌트인 버텍스 조명을 제어하는 데 사용됩니다. 버텍스 조명은 각 버텍스에 계산되는 표준 Direct3D/OpenGL 조명 모델입니다. Lighting On 으로 조명을 켭니다. 조명은 Material 블록, ColorMaterial 및 SeparateSpecular 커맨드의 영향을 받습니다.
버텍스 컬러링 및 조명은 렌더링된 지오메트리에 처음으로 계산되는 효과입니다. 이는 버텍스 수준에서 작동하며 텍스처를 적용하기 전에 사용되는 기본 컬러를 계산합니다.
상위 수준 커맨드는 고정 함수 조명 사용 여부와 일부 설정 옵션을 제어합니다. 기본 설정은 아래에 자세히 설명된 머티리얼 블록에 있습니다.
Color color
오브젝트를 단색으로 설정합니다. 컬러는 괄호 안에 있는 RGBA 값 4개이거나 대괄호 안에 있는 컬러 프로퍼티 이름입니다.
Material {Material Block}
머티리얼 블록은 오브젝트의 머티리얼 프로퍼티를 정의하는 데 사용됩니다.
Lighting On | Off
머티리얼 블록에 정의된 설정이 효과를 나타내려면 Lighting On 커맨드를 사용하여 조명을 활성화해야 합니다. 조명이 꺼진 경우 Color 커맨드의 컬러가 직접 사용됩니다.
SeparateSpecular On | Off
커맨드를 실행하면 스페큘러 조명이 셰이더 패스 끝에 추가되므로 스페큘러 조명이 텍스처링의 영향을 받지 않습니다. Lighting On 을 사용하는 경우에만 적용됩니다.
ColorMaterial AmbientAndDiffuse | Emission
머티리얼에 설정된 컬러 대신 버텍스별 컬러를 사용합니다. AmbientAndDiffuse 는 머티리얼의 앰비언트 및 디퓨즈 값을 바꾸고 Emission 은 머티리얼의 이미션 값을 바꿉니다.
여기에는 머티리얼이 광원에 반응하는 방식에 대한 설정이 포함되어 있습니다. 이러한 프로퍼티는 모두 제외될 수 있으며, 이 경우 기본적으로 검은색(즉, 효과 없음)으로 설정됩니다.
Diffuse color: 디퓨즈 컬러 컴포넌트입니다. 이는 오브젝트의 기본 컬러입니다.
Ambient color: 앰비언트 컬러 컴포넌트입니다. Lighting 창에서 설정한 주변광이 닿으면 오브젝트에 이 컬러가 표시됩니다.
Specular color: 오브젝트의 스페큘러 하이라이트 컬러입니다.
Shininess number: 0과 1 사이의 하이라이트 선명도입니다. 0으로 설정하면 디퓨즈 조명과 매우 비슷한 큰 하이라이트가 표시되고 1로 설정하면 작은 점이 표시됩니다.
Emission color: 오브젝트에 광원이 닿지 않을 때 오브젝트에 표시되는 컬러입니다.
오브젝트에 닿는 광원의 전체 컬러는 다음과 같습니다.
Ambient * Lighting 창의 Ambient Intensity 설정 + (Light Color * Diffuse + Light Color * Specular) + Emission
등식의(괄호 안에 있는) 광원 부분은 오브젝트에 닿는 모든 광원에 반복됩니다.
일반적으로 디퓨즈 및 앰비언트 컬러를 동일하게 유지하는 것이 좋습니다(모든 빌트인 셰이더에서 이렇게 작동합니다).
오브젝트를 항상 순수한 빨간색으로 렌더링합니다.
Shader "Solid Red" {
SubShader {
Pass { Color (1,0,0,0) }
}
}
다음은 오브젝트에 흰색을 표시하고 버텍스 조명을 적용하는 기본 셰이더입니다.
Shader "VertexLit White" {
SubShader {
Pass {
Material {
Diffuse (1,1,1,1)
Ambient (1,1,1,1)
}
Lighting On
}
}
}
다음은 머티리얼 컬러를 머티리얼 인스펙터에 표시되는 프로퍼티로 추가하는 확장 버전입니다.
Shader "VertexLit Simple" {
Properties {
_Color ("Main Color", COLOR) = (1,1,1,1)
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
}
Lighting On
}
}
}
마지막은 완전한 버텍스 릿 셰이더입니다(SetTexture 레퍼런스 페이지 참조).
Shader "VertexLit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Pass {
Material {
Diffuse [_Color]
Ambient [_Color]
Shininess [_Shininess]
Specular [_SpecColor]
Emission [_Emission]
}
Lighting On
SeparateSpecular On
SetTexture [_MainTex] {
Combine texture * primary DOUBLE, texture * primary
}
}
}
}