프로그래밍 2019. 11. 30. 17:29
728x90

 

게임 색감이 밋밋해보인달까, 너무 올드해 보인달까,

어쨋든, 좀더 현실적인( 색상범위가 넓은 ) 색상을 출력하고 싶어서, 

hdr 을 파고들어가기 시작했다

 

일단 bloom 을 제외하고,

색상범위를 넓게 사용하는데에 촛점을 맞추었다

 

이전에 bloom 을 구현하면서, 텍스쳐타겟도 64비트포맷으로 바꾸어두었고,

휘도맵, 톤맵도 적용해 두었는데,

pow 를 사용해서 색상을 증폭시키면, 진한 bloom 이 출력되어서,

대충 사용을 해보~다~~가, 

전체적으로 색상이 부드러워진달까, 선명함이 떨어지는것이 싫어서,

( 원본화면에 bloom 이미지를 더해서 출력 )

bloom 자체를 꺼버렸었다 

 

일단은 bloom 부분은 신경쓰지 않고,

온전히,

좀 밋밋해 보이는 색감을 풍성하게 표현해보고 싶었다

 

우리가 알다시피, 각각의 채널당 256 색표현을 65536 색상으로 표현할수있는 것이

hdr 이다,

dx 에서 렌더타겟의 포맷은 D3DFMT_A16B16G16R16F 로 사용,

테스트로, 쉐이더에서 1이상의 값을 기록해서

받는 쪽에서 값을 확인해보면, 분명히 1 이상의 값이 제대로 넘어간다

(~32768 ~ 32768, 값범위는 분명 65536 )

 

와우! 멋지다

채널당 0~1 범위의 값이 아닌, 0 ~ 65536 범위의 값을 사용할수 있다니!

이제 진정한 현실적인 색표현을 할수있겠구나!

라는 생각이 들었다

 

hdr 만세~~!!

 

그래서, 일단 쉽게,

원본화면의 rgb * 1000 (숫자는 대략 큰 걸로 아무거나, 값범위 안에서)

로 출력을 시켜보면?

하얀 화면이 출력된다,

 

어라라, 하얗네,

 

증폭값을 좀 줄여보면?

 

어떤값으로 사용하던지간에,

전체적으로 화면이 허여므레 지는 것을 확인할수 있다

 

 

어라라라라?

우리가 바라던 뭔가 좀더 선명해지고, 넓어진 색상범위가 아니라, 

단지 허여므레지는 화면밖에 볼수없다

 

Why?

 

당연하지

 

1이상넘어가는 값은 모니터에서 그냥 1로 출력되니까

 

우리가 쉐이더에서 아무리 65536 범위의 값을 사용을 하더라도

그값을 그대로 출력시키면

1이 넘어가는 값은 모조리 1일 뿐이다

 

어라라라?

 

아, 그럼 증폭시키고 다시 값을 나누면?

 

어, 어라라라

 

a * 10000 / 10000;

 

하나마나다

 

...

 

...

 

아니, 그러면, 

 

이게 어떻게 써먹으라구~~~

 

자, 다음장으로

728x90
posted by BK dddDang
: