Unity ShaderLab: Blend 커맨드 설명서
개요
이 문서에서는 Unity의 ShaderLab에서 블렌딩 작업을 설정하는 Blend
커맨드에 대해 설명합니다. 블렌딩은 GPU가 프래그먼트 셰이더의 출력을 렌더 타겟과 조합하는 방법을 결정하며, 다양한 그래픽스 API와 하드웨어에서 지원됩니다.
블렌딩 개념
블렌딩이 활성화되면 GPU의 최적화가 비활성화되어 프레임 시간이 늘어날 수 있습니다. 블렌딩 작업은 다양한 방식으로 설정할 수 있으며, 각 블렌딩 작업에 따라서 GPU가 처리하는 방식이 다릅니다.
지원되는 렌더 파이프라인
기능 이름 | 빌트인 렌더 파이프라인 | 유니버설 렌더 파이프라인(URP) | 고해상도 렌더 파이프라인(HDRP) | 커스텀 SRP |
---|---|---|---|---|
Blend | 지원 | 지원 | 지원 | 지원 |
사용법
블렌드는 Pass
블록 내에서 사용하거나, SubShader
블록에서 직접 설정하여 해당 서브셰이더의 모든 패스에 적용할 수 있습니다.
블렌딩 과정
BlendOp
커맨드가 사용되면, 블렌딩 작업이 해당 값으로 설정됩니다.- 블렌딩 작업이 Add, Sub, RevSub, Min 또는 Max일 때, 소스와 대상 인자를 각각 곱합니다.
- 최종 블렌딩 등식:
finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue
커맨드 예제
다음은 다양한 블렌딩 구문 예제입니다.
서명 | 예시 설명 |
---|---|
Blend Off | 기본 렌더 타겟의 블렌딩 비활성화 |
Blend |
특정 렌더 타겟의 블렌딩 비활성화 |
Blend | 기본 렌더 타겟의 블렌딩 활성화 |
Blend |
특정 렌더 타겟의 블렌딩 활성화 |
Blend | RGB와 알파값의 블렌딩 인자 별도 설정 |
유효한 파라미터 값
파라미터 | 값 | 설명 |
---|---|---|
render target | 0~7 | 렌더 타겟 인덱스 |
state | Off | 블렌딩 비활성화 |
factor | One, Zero | 소스 또는 대상 컬러의 값 |
SrcColor | - | 소스 컬러값과 곱 |
DstColor | - | 프레임 버퍼의 소스 컬러값과 곱 |
OneMinusSrcColor | - | (1 - 소스 컬러)와 곱 |
일반적인 블렌드 타입
블렌드 타입 | 구문 |
---|---|
전통적 투명도 | Blend SrcAlpha OneMinusSrcAlpha |
프리멀티플라이드 투명도 | Blend One OneMinusSrcAlpha |
애드티브 | Blend One One |
소프트 애드티브 | Blend OneMinusDstColor One |
곱셈 | Blend DstColor Zero |
2x 곱셈 | Blend DstColor SrcColor |
예제 코드
다음은 ShaderLab에서 블렌드를 사용하는 간단한 예제입니다.
Shader "Examples/CommandExample"
{
SubShader
{
// 이 서브셰이더에 대한 블렌딩 활성화
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
// 런타임에 필요한 코드
}
}
}
이 예제에서 Blend SrcAlpha OneMinusSrcAlpha
를 사용하여 알파 블렌딩을 활성화하고 있습니다.
결론
Blend
커맨드는.shaderLab에서 필수적인 요소로, 그래픽스의 외관을 조정하는 데 중요한 역할을 합니다. 다양한 블렌딩 구문을 이해하고 활용하여 여러분의 게임 개발에 많은 도움이 되길 바랍니다.