Unity 매뉴얼: ShaderLab 명령어 사용법
소개
이 문서는 Unity의 ShaderLab에서 ColorMask 명령어를 사용하여 GPU가 렌더 타겟의 채널에 작성하는 것을 제어하는 방법을 다룹니다. 이 기능은 특정 효과를 구현할 때 유용합니다.
ColorMask
ColorMask 명령어는 기본적으로 GPU의 모든 채널(RGBA)에 작성하도록 설정되어 있습니다. 그러나 특정 채널을 비활성화하여 원하는 효과를 얻을 수 있습니다.
기본 행동
- GPU는 기본적으로 모든 컬러 채널에 작성합니다.
- 일부 이펙트에서는 특정 채널을 비활성화하는 것이 유리합니다.
사용 사례
- 색칠되지 않은 섀도우 렌더링
- 스텐실 버퍼 채우기 (렌더 타겟에 작성하지 않고도 가능)
렌더 파이프라인 호환성
| 기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
|---|---|---|---|---|
| ColorMask | 지원 | 지원 | 지원 | 지원 |
사용법
- ColorMask는 렌더 상태를 변경합니다.
Pass블록에서 사용하여 해당 패스의 렌더 상태를 설정하고,SubShader블록에서 모든 패스의 렌더 상태를 설정할 수 있습니다.
예제 구문
다음은 ColorMask 명령어 사용 예제입니다.
예제 1: Pass 내에서 ColorMask 사용
Shader "Examples/CommandExample"
{
SubShader
{
Pass
{
// RGB 채널에만 작성하도록 설정하여 알파 채널에 대한 작성을 비활성화합니다.
ColorMask RGB
// 나머지 코드...
}
}
}
예제 2: SubShader 내에서 ColorMask 사용
Shader "Examples/CommandExample"
{
SubShader
{
// RGB 채널에만 작성하도록 설정하여 알파 채널에 대한 작성을 비활성화합니다.
ColorMask RGB
// 나머지 코드...
Pass
{
// 나머지 코드...
}
}
}
유효한 파라미터 값
- render target: 0 또는 1, 렌더 타겟 인덱스입니다.
- channels: R, G, B, A 중 어느 채널로의 컬러 작성을 활성화할지 설정합니다.
- R: 빨간색 채널 활성화
- G: 초록색 채널 활성화
- B: 파란색 채널 활성화
- A: 알파 채널 활성화
- 조합 예: RB는 빨간색과 파란색 채널을 활성화합니다.
요약
ColorMask 명령어는 Unity의 ShaderLab에서 특정 채널에 대한 색상 작성을 제어하는 데 사용됩니다. 이를 통해 더 나은 그래픽과 효과를 제공할 수 있습니다. 다양한 효과를 구현하기 위해 이 기능을 적절히 활용해 보세요.