1. Direct3D Blending
1.1 Blending
1.1.1 Blending Formula
- 현재 래스터화하는 픽셀을 후면 버퍼에 이미 래스터화되어 있는 픽셀과 섞는 혼합 기법
- 현재 래스터화 중인 픽셀에 대해 픽셀 셰이더로 부터 출력한 색상과 현재 후면 버퍼에 있는 픽셀 색상
- 위 두가지에 대해 혼합을 사용하지 않으면 덮어써서 후면 버퍼의 새로운 색상이 됨
- 그러나 혼합을 사용하면 일정한 공식에 따라 혼합해서 얻은 새로운 색상을 덮어씀
- 원본 혼합 계수와 대상 혼합 계수를 사용해 다양한 방식으로 혼합해 여러 가지 효과를 낼 수 있음
- 혼합 공식은 색상의 RGB 성분들에만 적용, 알파 성분은 비슷하지만 구별되는 공식 적용
typedef enum D3D11_BLEND_0P;
- 서로 다른 혼합 연산자와 원본 혼합 계수, 대상 혼합 계수의 조합으로 수십 가지의 혼합 효과를 얻을 수 있음
- 밑의 함수를 통해 응용 프로그램에서 혼합 계수 색상을 지정 가능, 혼합 상태를 변경하기까지 변하지 않음
ID3D11DeviceContext::OMSetBlendState;
1.1.2 Blending State
- Direct3D 응용 프로그램에서 혼합 설정들은 렌더 상태의 하나인 혼합 상태를 나타내는 인터페이스 사용
- 밑에 코드로 부터 나오는 구조체를 채워 함수를 호출
typedef struct D3D11_BLEND_DESC;
HRESULT ID3D11Device::CreateBlendState;
- 구조체를 통해 알파 포괄도 변환이 활성화 & 각 렌더 대상(최대 8개) 마다 혼합을 개별적으로 수행할 수 있음
- 밑의 구조체는 다중 렌더 대상에 적용할 혼합 설정을 담은 구조체
D3D11_RENDER_TARGET_BLEND_DESC
- 밑의 구조체를 사용하면 혼합의 결과를 후면 버퍼의 어떤 색상 채널들에 기록할 것인지 결정
typedef enum D3D11_COLOR_WRITE_ENABLE;
- 마지막으로 위에서 생성한 혼합 상태 객체는 출력 병합기 단계(OM)에 묶어야 함
void ID3D11DeviceContext::OMSetBlendState;
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 21. EX App Program - Fog System (1) | 2023.06.17 |
---|---|
[Direct11] 20. Direct3D Blending - Blending System (0) | 2023.06.17 |
[Direct11] 18. EX App Program - Texture Box (0) | 2023.06.16 |
[Direct11] 17. Direct3D Texture - Filter & Mode (0) | 2023.06.16 |
[Direct11] 16. Direct3D Texture (0) | 2023.06.16 |