Bloom
- 카메라 렌즈에 빛이 들어올 때 카메라가 100% 정확히 그 빛의 정보를 담아내지 못하기 때문에, 태양과 같이 강렬한 빛을 찍으면 실제로 보이는 빛보다 더 큰 면적으로 찍히게 됩니다. 이런 현상은 마치 빛이 퍼져보이는 것과 같은 효과를 나타냅니다. 이것을 흉내내서 처리하는 것을 Bloom 효과라고 합니다.
- 위의 효과를 내기위에선 몇가지 단계가 필요한데, 그저 밝은 Pixel을 추출하여 Blur 효과만으론 번지는 효과를 나타내기 힘듭니다.
따라서 번지는 효과를 주기 위해 몇번의 Down Sampling과 Up Sampling을 통하여 이미지 합성을 통해 번지는 효과를 나타낼 수 있습니다.
Bloom 적용 방식
1) 원본 RenderTarget에서 Bloom Curve를 통해 Bright 영역을 추출하여 4x4 Down Sampling 실행
2) 6x6 Down Sampling 실행
3) 6x6 Down Sampling 실행
4) 3번의 Down Sampling한 상태에서 Blur 실행
5) 6x6 Up Sampling 실행 - ( 2, 4 이미지 Blending )
6) Blur 실행
7) 6x6 Up Sampling 실행 - ( 1, 6 이미지 Blending )
8) Blur 실행
9) 원본 이미지와 Blending
Bloom Curve
1) Bloom에 의해 불필요하기 밝아지게 되는 부분을 줄이기 위해서 Bloom Curve를 적용하여 밝은 부분과 어두운 부분의 영역을 보장시키기 위해 사용합니다.
2) HDR Rendering에서 임의로 설정한 발광 지점부터 자연스럽게 Bloom 효과를 주기 위해 사용합니다.
- 위 과정을 통해 그림과 같은 번지는 발광 효과를 나타낼 수 있다. 위 과정에서의 핵심은 결국 여러번의 Down Sampling과 Up Sampling을 통해 넓은 범위의 번짐 효과를 자연스럽게 낼 수 있다는 점이다.
적용 영상
'DirectX 11' 카테고리의 다른 글
[DirectX 11] Hardware Instancing (0) | 2022.03.02 |
---|---|
[DirectX 11] Deferred Fog (2) | 2022.02.21 |
[DirectX 11] Lambert / Half Lambert (0) | 2022.02.07 |
[DirectX 11] Tone Mapping (0) | 2022.02.03 |
[DirectX 11] IBL (Image Based Lighting) (0) | 2022.01.23 |