C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 20. Direct3D Blending - Blending System

GameChoi 2023. 6. 17. 18:01

1. Direct3D Blending

1.1 Blending System

1.1.1 Zero

 - 원본 피셀이 대상 픽셀을 덮어쓰거나 섞이는 일 없이 대상 픽셀이 그대로 유지

   - 렌더링 결과를 깊이 스텐실 버퍼에만 기록, 후면 버퍼에 기록하지 않고자 할 때 유용

     - 혼합 계수, 대상 혼합 계수, 혼합 연산자를 밑의 코드로 적용

MD11_BLEND_ZERO; MD11_BLEND_ONE; D3D11_BLEND_OP_ADD;

     - 또한 구조체를 사용하여 어떤 색상 채널에도 값이 기록되지 않게 해도 같은 효과를 얻을 수 있음

D3D11_RENDER_TARGET_BLEND_DESC;

1.1.2 ADD & ODD Blending

 - 원본 픽셀을 대상 픽셀에 더하고자 한다면 밑의 코드를 적용 & 빼고자 한다면 혼합 연산자만 변경

D3D11_BLEND_ONE; D3D11_BLEND_ONE; D3D11_BLEND_OP_ADD;
				D3D11_BLEND_OP_SUBTRACT;

1.1.3 Multiply Blending

 - 대상 픽셀에 원본 픽셀을 성분별로 곱하는 혼합을 사용

MD11_BLEND_ZERO; MD11_BLEND_SRC_COLOR; D3D11_BLEND_OP_ADD;

1.1.4 Transparency

 - 원본 픽셀과 대상 픽셀을 원본 픽셀의 불투명도에 비례해서 혼합

MD11_BLEND_SRC_ALPHA; MD11_BLEND_INV_SRC_ALPHA; D3D11_BLEND_OP_ADD;

   - 혼합 방법에서 물체들을 그리는 순서가 중요함을 주목

     - 혼합을 사용하지 않는 물체들을 먼저 그리고, 혼합을 사용하는 물체들을 카메라와의 거리를 기준으로 정렬

       - 물체들을 뒤에서 앞의 순서로 그림, 각 물체가 부분적으로 뒤에 있는 물체들과 혼합

         - 물체가 투명하다면 각 물체가 부분적으로 뒤에 있는 물체들과 혼합

   - 투명한 물체 뒤에 있는 모든 픽셀이 이미 후면 버퍼에 기록

     - 투명한 원본 픽셀을 그 뒤에 있는 장면의 대상 픽셀과 혼합할 수 있음