Version: Unity 6.0 (6000.0)
언어 : 한국어
ShaderLab의 AlphaToMask 커맨드 레퍼런스
ShaderLab의 BlendOp 커맨드 레퍼런스

ShaderLab의 Blend 커맨드 레퍼런스

GPU가 프래그먼트 셰이더의 출력을 렌더 타겟과 조합하는 방식을 결정합니다.

이 커맨드의 기능은 BlendOp 커맨드를 사용하여 설정할 수 있는 블렌딩 작업에 따라 다릅니다. 블렌딩 자체는 모든 그래픽스 API와 하드웨어에서 지원되지만 일부 블렌딩 작업은 더 제한적으로 지원됩니다.

블렌딩을 활성화하면 GPU의 일부 최적화(주로 숨겨진 표면 제거/Early-Z)가 비활성화되어 GPU 프레임 시간이 늘어날 수 있습니다.

이 커맨드는 렌더 상태를 변경합니다. Pass 블록에서 사용하여 해당 패스의 렌더 상태를 설정하거나, SubShader 블록에서 사용하여 해당 서브셰이더에 있는 모든 패스의 렌더 상태를 설정할 수 있습니다.

렌더 파이프라인 호환성

기능 이름 유니버설 렌더 파이프라인(URP) 고해상도 렌더 파이프라인(HDRP) 커스텀 SRP 빌트인 렌더 파이프라인
Blend 지원 지원 지원 지원

구문

서명 예제 구문 기능
Blend <state> Blend Off 기본 렌더 타겟의 블렌딩을 비활성화합니다. 기본값입니다.
Blend <render target> <state> Blend 1 Off 특정 렌더 타겟에 한하여 위와 동일합니다. (1)
Blend <source factor> <destination factor> Blend One Zero 기본 렌더 타겟의 블렌딩을 활성화합니다. RGBA 값의 블렌드 인자를 설정합니다.
Blend <render target> <source factor> <destination factor> Blend 1 One Zero 특정 렌더 타겟에 한하여 위와 동일합니다. (1)
Blend <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend One Zero, Zero One 기본 렌더 타겟 블렌딩을 활성화합니다. RGB 및 알파 값에 대한 별도의 블렌드 인자를 설정합니다. (2)
Blend <render target> <source factor RGB> <destination factor RGB>, <source factor alpha> <destination factor alpha> Blend 1 One Zero, Zero One 특정 렌더 타겟에 한하여 위와 동일합니다. (1) (2)

블렌딩이 활성화되면 다음과 같은 일이 발생합니다.

  • BlendOp 커맨드가 사용되면 블렌딩 작업이 해당 값으로 설정됩니다. 이외에는 블렌딩 작업이 기본적으로 Add로 설정됩니다.
  • 블렌딩 작업이 Add, Sub, RevSub, Min 또는 Max이면 GPU가 프래그먼트 셰이더의 출력값과 소스 인자를 곱합니다.
  • 블렌딩 작업이 Add, Sub, RevSub, Min 또는 Max이면 GPU가 이미 렌더 타겟에 있는 값과 대상 인자를 곱합니다.
  • GPU는 결과값에 대해 블렌딩 작업을 수행합니다.

참고:

  1. 렌더 타겟을 지정하는 모든 서명은 OpenGL 4.0+, GL_ARB_draw_buffers_blend 또는 OpenGL ES 3.2가 필수입니다.
  2. 별도의 RGB 및 알파 블렌딩은 고급 OpenGL 블렌딩 작업과 호환되지 않습니다.

파라미터

파라미터 기능
render target 0–7 범위의 정수 렌더 타겟 인덱스입니다.
상태 Off 블렌딩을 비활성화합니다.
factor One 이 입력의 값은 1입니다. 소스 또는 대상 컬러의 값을 사용하려면 이 값을 사용합니다.
Zero 이 입력의 값은 0입니다. 소스 또는 대상 값을 제거하려면 이 값을 사용합니다.
SrcColor GPU는 이 입력의 값과 소스 컬러값을 곱합니다.
SrcAlpha GPU는 이 입력의 값과 소스 알파값을 곱합니다.
SrcAlphaSaturate GPU는 이 입력의 값과 최소 source alpha(1 - destination alpha) 값을 곱합니다.
DstColor GPU는 이 입력의 값과 프레임 버퍼 소스 컬러값을 곱합니다.
DstAlpha GPU는 이 입력의 값과 프레임 버퍼 소스 알파값을 곱합니다.
OneMinusSrcColor GPU는 이 입력의 값과 (1 - 소스 컬러)를 곱합니다.
OneMinusSrcAlpha GPU는 이 입력의 값과 (1 - 소스 알파)를 곱합니다.
OneMinusDstColor GPU는 이 입력의 값과 (1 - 대상 컬러)를 곱합니다.
OneMinusDstAlpha GPU는 이 입력의 값과 (1 - 대상 알파)를 곱합니다.

블렌딩 등식은 다음과 같습니다.

finalValue = sourceFactor * sourceValue operation destinationFactor * destinationValue

이 등식에서:

  • finalValue는 GPU가 대상 버퍼에 작성하는 값입니다.
  • sourceFactor는 Blend 커맨드에 정의되어 있습니다.
  • sourceValue는 프래그먼트 셰이더에 의한 값 출력입니다.
  • operation은 블렌딩 작업입니다.
  • destinationFactor는 Blend 커맨드에 정의되어 있습니다.
  • destinationValue는 이미 대상 버퍼에 있는 값입니다.

추가 리소스

ShaderLab의 AlphaToMask 커맨드 레퍼런스
ShaderLab의 BlendOp 커맨드 레퍼런스