Unity ShaderLab: BlendOp 커맨드
이 문서는 Unity의 ShaderLab에서 BlendOp
커맨드에 대한 내용을 설명하며, 다양한 예제를 제공합니다. BlendOp
는 렌더 파이프라인에서 블렌딩 작업을 정의하는 데 중요한 역할을 합니다.
기본 개념
BlendOp란?
BlendOp
는 블렌딩 작업을 설정하는 커맨드입니다. 이 커맨드는 특정 패스 또는 서브셰이더에서 렌더 상태를 세부적으로 조절할 수 있습니다.
사용법
- 패스 블록: 패스 블록 내에서 사용하여 렌더 상태를 설정합니다.
- 서브셰이더 블록: 서브셰이더 내 모든 패스의 렌더 상태를 설정할 수 있습니다.
블렌딩 작업 목록
파라미터 값 | 기능 설명 |
---|---|
Add | 소스와 대상을 더한다. |
Sub | 소스에서 대상을 뺀다. |
RevSub | 대상에서 소스를 뺀다. |
Min | 소스와 대상 중 더 작은 값을 사용한다. |
Max | 소스와 대상 중 더 큰 값을 사용한다. |
LogicalClear | 논리 연산: Clear (0) |
LogicalSet | 논리 연산: Set (1) |
LogicalCopy | 논리 연산: Copy (s) |
LogicalCopyInverted | 논리 연산: Copy inverted (!s) |
LogicalNoop | 논리 연산: Noop (d) |
LogicalInvert | 논리 연산: Invert (!d) |
LogicalAnd | 논리 연산: And (s & d) |
LogicalOr | 논리 연산: Or (s |
Multiply | 고급 OpenGL 블렌딩 작업: Multiply |
Screen | 고급 OpenGL 블렌딩 작업: Screen |
Overlay | 고급 OpenGL 블렌딩 작업: Overlay |
Darken | 고급 OpenGL 블렌딩 작업: Darken |
Lighten | 고급 OpenGL 블렌딩 작업: Lighten |
... | ... (다른 블렌딩 작업도 포함될 수 있습니다.) |
참고 사항
Min
과Max
는 OpenGL ES 2의GL_EXT_blend_minmax
가 필요합니다.- 논리 연산은 DX 11.1+ 또는 Vulkan을 요구합니다.
- 고급 OpenGL 블렌딩 작업은 GLES3.1 AEP+, GL_KHR_blend_equation_advanced가 필수입니다.
코드 예제
예제 1: SubShader에서 BlendOp 사용하기
Shader "Examples/CommandExample"
{
SubShader
{
// 서브셰이더의 나머지 코드는 여기에 정의됩니다.
Pass
{
// 이 패스를 위한 감산 블렌딩 활성화
Blend SrcAlpha One
BlendOp RevSub
// 패스의 나머지 코드는 여기에 정의됩니다.
}
}
}
위의 예제 코드는 특정 SubShader 내에서 BlendOp
를 구현하는 방법을 보여줍니다.
예제 2: 패스 블록에서 BlendOp 사용하기
Shader "Examples/CommandExample"
{
SubShader
{
// 이 서브셰이더의 감산 블렌딩 활성화
Blend SrcAlpha One
BlendOp RevSub
// 서브셰이더의 나머지 코드는 여기에 정의됩니다.
Pass
{
// 패스의 나머지 코드는 여기에 정의됩니다.
}
}
}
이 예제는 SubShader와 패스 블록에서 BlendOp
커맨드를 사용하는 방법을 제공합니다.
요약
BlendOp
커맨드는 Unity의 ShaderLab에서 블렌딩 작업을 정의하는 데 중요한 역할을 합니다. 다양한 블렌딩 작업을 지원하며, 각 작업이 어떤 렌더링 효과를 주는지 이해하는 것이 중요합니다. 실제 예제를 통해 이 커맨드를 적용하는 방법을 익히고, 원하는 효과를 달성해보세요.