Unity 메타 패스 및 라이트맵 셰이더 개요
이 문서는 Unity의 라이트 매핑 시스템과 그에 대한 셰이더 작성 방법에 대해 설명합니다. 메타 패스를 사용하여 실시간 렌더링에 영향을 주지 않으면서도 게임 오브젝트의 조명 효과를 조절할 수 있습니다.
메타 패스란 무엇인가?
메타 패스는 전역 조명 시스템에서 알베도 및 이미션 값을 제공하는 셰이더 패스입니다. 즉, 이 기능을 통해 라이트베이킹 과정에서 게임 오브젝트의 조명 효과를 조절할 수 있으며, 런타임 시의 형상에는 영향을 주지 않습니다.
예시
예를 들어, 절벽의 녹색 이끼가 라이트매핑에서 더 과장된 효과를 원하면서도 실제 렌더링에서는 색상을 변경하지 않기를 원할 수 있습니다.
Unity의 빌트인 머티리얼
Unity의 모든 빌트인 머티리얼은 메타 패스를 포함하고 있으며, 일반적으로 추가 작업 없이도 사용할 수 있습니다. 커스텀 셰이더에서는 필요에 따라 메타 패스를 추가할 수 있습니다.
메타 패스가 포함된 셰이더 예시
다음은 메타 패스가 포함된 셰이더의 예시입니다. 이 셰이더는 런타임 시 형상에 영향을 주지 않으며, 조명 베이킹 시스템에서 사용되는 알베도 색상 및 텍스처를 설정합니다.
Shader "Custom/metaPassShader" {
Properties {
_Color ("Color", Color)=(1,1,1,1)
_MainTex ("Albedo (RGB)", 2D)="white" {}
...
}
SubShader {
Pass {
Name "META"
Tags {"LightMode"="Meta"}
Cull Off
CGPROGRAM
...
ENDCG
}
...
}
}
메타 패스 기술 정보
Unity의 메타 패스는 표면에서 알베도 값을 추출하고 전역 조명과 라이트 매핑을 처리하는 데 사용됩니다. 메타 패스는 물리적으로 정확한 알베도를 대신하여 메탈릭 색상으로 조정할 수 있습니다. 이러한 기능을 이용하여 커스텀 메타 패스를 작성할 수도 있습니다.
커스텀 RGB 투명도
Unity는 기본적으로 단색 투명도를 사용합니다. 하지만 라이트매핑 중에 커스텀 RGB 투명도를 설정할 수 있습니다. 이를 통해 머티리얼의 알베도와 독립적으로 투명도를 제어할 수 있습니다.
커스텀 RGB 투명도 설정 예
다음의 라인 코드를 ShaderLab에 추가하면 머티리얼 인스펙터에서 커스텀 투명도 텍스처를 사용할 수 있습니다.
_TransparencyLM ("Transmissive Texture", 2D) = "white" {}
이 코드 줄을 추가하면, "Transmissive Texture"라는 이름의 프로퍼티가 생성되어 원하는 텍스처를 할당할 수 있습니다.
요약
이 문서는 메타 패스와 관련된 여러 기능, 라이트매핑을 효과적으로 활용하기 위한 셰이더 작성 방법, 그리고 커스텀 RGB 투명도에 대해 설명하였습니다. 이를 통해 사용자들은 Unity의 라이트 매핑 시스템을 보다 잘 이해하고 효과적으로 사용할 수 있을 것입니다.