DirectX 자체엔진 개발

[DirectX 11] Emissive

종제로 2022. 3. 14. 10:55

Emissive를 활용한 전광판 표현

 

개발 일자 : 2022년 1월 26일

 

일본 테마의 맵

현재 개발 중인 프로젝트의 일본 테마 맵이 이런식인데, 창문이 굉장히 많습니다.

창문에서 햇빛이 들어오는 느낌을 표현하고 싶어서, Emissive를 개발해봤습니다.

본래, Emissive는 맨 위의 사진처럼 전광판같은 발광하는 오브젝트에 많이 사용됩니다.

 

왼쪽 Diffuse Map, 오른쪽 Emissive Map

기존처럼 Diffuse Map을 사용해 렌더링하는 부분은 동일한데, 추가적으로 Emissive Map을 이용해 밝아져야 하는 부분을 한 번 더 그려줍니다.

자세한 구현 방식은 아래와 같습니다.

 

1. 원본은 Diffuse Map을 이용해 그려줍니다.

 

2. Emissive Map만 따로 그려줍니다.
(Emissive Map만을 그리는 PS, Diffuse Map과 마찬가지로 Gamma Correction을 위해 2.2 제곱을 해줬습니다.)

 

3. (2)에 블러 처리를 해줍니다.

 

4. 원본과 (3)을 합성합니다.
(단순히 픽셀 값을 더해줍니다.)

 

5. 최종 합성된 이미지

 

창문으로 들어오는 햇빛을 표현하기 위해 Emissive를 개발했지만, 적합하지 않았습니다.

결론적으로 Emissive는 맨 위 사진처럼 전광판같이 인위적인 불빛을 표현하는 데 적합했습니다.

그래서 Bloom을 개발하게 되었습니다.

 

직접 둘 다 개발해본 결과, 제가 생각하는 둘의 차이점은 다음과 같았습니다.

 

마지막으로, Emissive Mapper 클래스를 제작하여 해당 기능을 담당하도록 했습니다.

Emissive Mapper 클래스

 

 

 Bloom에 대한 내용은 다음 글에서 이어집니다.

https://jongzero.tistory.com/20?category=989260 

 

[DirectX 11] Bloom

개발 일자 : 2022년 3월 7일 ~ 10일 지난 번에 창문으로 햇빛이 들어오는 효과를 위해서 Emissive를 개발했고 아트에게 Emissive Map도 요청해서 받았으나, 적용해보니 생각보다 느낌이 살지 않아 Bloom을

jongzero.tistory.com