Unity ShaderLab 가이드 (레거시)
Unity에서는 ShaderLab을 사용하여 다양한 셰이더를 정의할 수 있습니다. 이 문서는 ShaderLab의 레거시 기능, 특히 Vertex Lighting에 대한 설명을 제공합니다.
개요
머티리얼 및 조명 파라미터는 빌트인 버텍스 조명을 제어하는 데 사용됩니다. 버텍스 조명은 각 버텍스에 대해 계산되는 스탠다드 Direct3D/OpenGL 조명 모델입니다.
| 기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
|---|---|---|---|---|
| 레거시 조명 | 지원됨 | 지원 안 함 | 지원 안 함 | 지원 안 함 |
주요 커맨드
머티리얼 블록
머티리얼 블록은 오브젝트의 머티리얼 속성을 정의하는 데 사용됩니다. 다음은 간단한 구문입니다.
- 머티리얼: 머티리얼 블록을 정의합니다. || ||
머티리얼 프로퍼티
- 디퓨즈 컬러: 오브젝트의 베이스 컬러입니다.
- 앰비언트 컬러: 주변광와 연관된 컬러입니다.
- 스페큘러 하이라이트: 오브젝트의 스페큘러 하이라이트 컬러입니다.
- 하이라이트의 선명도: 값은 0과 1 사이로 설정됩니다.
- 이미션 컬러: 오브젝트에 광원이 닿지 않을 때의 컬러입니다.
예제
- 순수 빨간색 렌더링:
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
}
}
}
- 완전한 버텍스 리트 셰이더:
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
}
}
}
}
결론
위의 예제는 Unity의 ShaderLab에서 레거시 조명과 버텍스 조명에 대한 사용 방법을 보여줍니다. 디테일한 조명 제어는 그래픽 질감을 높이는 데 큰 도움이 됩니다. 추가적으로, 각 기능을 활용하여 여러분의 게임 오브젝트에 더욱 다양한 효과를 부여할 수 있습니다.