Unity ShaderLab 패스 태그 이해하기
이 문서에서는 Unity의 ShaderLab에서 패스를 정의하고 사용하는 방법에 대해 설명합니다. 주로 사용되는 LightMode
및 PassFlags
태그와 그 활용에 대해 살펴보겠습니다.
개요
ShaderLab은 Unity의 셰이더를 작성하는 데 사용하는 DSL(도메인 특화 언어)입니다. 이 언어를 통해 개발자는 그래픽스를 제어하고 원하는 효과를 얻을 수 있습니다.
LightMode 태그
LightMode
태그는 셰이더의 렌더링 방식에 대한 정보를 제공합니다. 다음은 빌트인 렌더 파이프라인에서 사용할 수 있는 주요 값입니다.
값 | 기능 |
---|---|
Always | 항상 렌더링되며, 조명이 적용되지 않음 (기본값) |
ForwardBase | 포워드 렌더링에 사용되며, 앰비언트 라이트, 주 방향 광원 등의 효과가 적용됨 |
ForwardAdd | 포워드 렌더링에 사용되며, 추가 픽셀당 광원이 적용됨 |
Deferred | 디퍼드 셰이딩에 사용되며, G버퍼를 렌더링 |
ShadowCaster | 오브젝트의 깊이를 섀도우맵 또는 깊이 텍스처에 렌더링 |
MotionVectors | 오브젝트의 모션 벡터를 계산하는 데 사용 |
Vertex | 레거시 버텍스 릿 렌더링에서 사용되며, 모든 버텍스 광원이 적용됨 |
VertexLMRGBM | RGBM으로 인코딩된 라이트맵에서 오브젝트가 라이트매핑된 경우 사용 |
VertexLM | double-LDR로 인코딩된 라이트맵에서 오브젝트가 라이트매핑된 경우 사용 |
Meta | 라이트맵 베이킹 또는 인라이튼 실시간 전역 조명에만 사용 |
LightMode 예제
Shader "Examples/ExampleLightMode"
{
SubShader
{
Pass
{
Tags { "LightMode" = "ForwardBase" }
// 이곳에 패스를 정의하는 나머지 코드 작성
}
}
}
PassFlags 태그
PassFlags
태그는 특정 렌더링 경로에 대한 데이터를 지정합니다. 아래는 주요 값입니다.
값 | 기능 |
---|---|
OnlyDirectional | ForwardBase인 패스에서만 유효하며, 주 방향 광원 및 앰비언트/라이트 프로브 데이터만 전달됨 |
PassFlags 예제
Shader "Examples/ExamplePassFlag"
{
SubShader
{
Pass
{
Tags { "LightMode" = "ForwardBase" "PassFlags" = "OnlyDirectional" }
// 이곳에 패스를 정의하는 나머지 코드 작성
}
}
}
RequireOptions 태그
RequireOptions
는 프로젝트 설정에 기반하여 패스를 활성화하거나 비활성화하는 태그입니다.
값 | 기능 |
---|---|
SoftVegetation | softVegetation이 활성화된 경우에만 이 패스를 렌더링 |
RequireOptions 예제
Shader "Examples/ExampleRequireOptions"
{
SubShader
{
Pass
{
Tags { "RequireOptions" = "SoftVegetation" }
// 이곳에 패스를 정의하는 나머지 코드 작성
}
}
}
결론
이 문서에서는 Unity ShaderLab의 패스에 대한 다양한 태그와 이들을 어떻게 활용할 수 있는지에 대해 알아보았습니다. 이러한 태그를 이해하고 적절하게 사용하는 것은 그래픽스를 최적화하고 원하는 비주얼 효과를 얻는 데 중요한 과정입니다. Unity에서 셰이더를 작성할 때 이 정보를 활용하여 다양한 렌더링 효과를 실현해보세요!