프로그래밍 2015. 9. 22. 10:55
728x90

 

DX의 HDR lighting 예제를 참고하면서,

엔진에 구현해 보는 중.

 

사실, 진정한 hdr 과는 거리가 먼데,

렌더타겟의 포맷만을 hdr 포맷으로 해두고,

전체화면에 대한 다운샘플링처리를 하고,

전체화면에 대한 톤맵을 생성시키고,

bloom 을 적용시킨 것이다.

 

HDR 텍스쳐도,

HDR 라이팅도

적용하지 않았다.

 

텍스쳐는 dx 포맷으로 만들고, a 값의 영역을 r,g,b 값의 증폭값으로 사용하면 될듯 한데,

패스

 

hdr 라이팅은 뭐 그리 특별한 작업은 아니다.

말 그대로 전체 라이팅의 값을 증폭시켜 빛을 받아 빛나는 부분을 더욱 강한값으로 채워두는 것

스펙큘러 값이라든지...

 

 

 

 

 

위. 같은 하늘이라도 톤맵을 적용후, 카메라 시점에 따라 색상이 진해지고,

번들거리는 결과물을 볼수 있다.

 

 

 

 

 

위. 전체화면에 HDR bloom 을 적용

톤맵을 사용하면, 일정크기의 컬러값을 걸러내고 남은것들만 블룸버퍼에 기록하기 때문에,

밝게 빛나는 부분만을 따로 출려서 bloom 적용이 가능하다.

 

꼭 톤맵을 사용하지 않더라도

r,g,b 값을 일정크기이상만 기록해도 밝은 영역만을 적용시킬수 있다.

다만, 이쁘게 나오지 않을 가능성이 커진다. 

 

참고로, 톤맵은

검은색부터 흰색까지의 동일한 색상값으로 채워둔 렌더타겟이다.

오리지날 화면을 다운스케일 하면서 계속적으로 축소시켜

결국 1x1 버퍼에 저장해 둔것인데,

전체 화면을 대표하는 단 하나의 색상값으로 볼수 있겠다.

 

 

 

 

위. 이펙트 블룸은 따로 렌더타겟을 만들어서 별도로 처리한 것을 다시 더해준것

이유는 강한 증폭을 위해서.

 

전체화면에 강한 증폭의 블룸을 먹이면,

의도하는 화면을 만들수가 없다.

강한 증폭 블룸이 필요한 것들은 다시 모아서, 마음대로 증폭시키고 더해주자.

 

 

 

전체적으로 화면의 밝은 부분이 빛나는 처리가 된 것을 볼수 있다.

 

빛나는 정도,

감쇄 정도,

등의 모든 단계가 얼마든지 조정이 가능하고,

이 단계에 따라 결과물이 확 달라지기 때문에,

 

HDR 에 관련된 쉐이더 변수들을 추가하고,

각 맵마다, 변수들의 수치를 조종하여

원하는 색감의 느낌을 내는 것이 포인트 작업이 될듯!

 

굿블로그

http://allosha.tistory.com/51

 

 

 

728x90

'프로그래밍' 카테고리의 다른 글

SSAO 구현 1  (0) 2015.10.02
bloom 증폭  (0) 2015.09.23
게임 UI 해상도 변환  (0) 2015.06.25
특정 오브젝트만 bloom 적용, distortion 적용  (0) 2015.06.03
shadow vsm 구현 - 그림자 경계 다듬기 04  (0) 2015.05.12
posted by BK dddDang
: