hdr meets black & white 2

39
HDR Meets Black & White 2 Shader Study 10.06.07 임임임

Upload: hal

Post on 05-Jan-2016

55 views

Category:

Documents


3 download

DESCRIPTION

HDR Meets Black & White 2. Shader Study 10.06.07 임정 환. What’s HDR rendering. 1.0 보다 큰 color luminance 를 표현할 수 있는 format 이 필요 Display device 들은 LDR 이라 HDR 에서 LDR 로 변환시켜줘야함. Why HDR?. 밝고 어두운 것을 명확하게 표현 밝고 어두움이 극명하게 표현된 씬에서 saturating 없이 표현. Black & white2 by night. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: HDR Meets Black & White 2

HDR Meets Black & White 2

Shader Study10.06.07

임정환

Page 2: HDR Meets Black & White 2

What’s HDR rendering

• 1.0 보다 큰 color luminance 를 표현할 수 있는 format 이 필요

• Display device 들은 LDR 이라 HDR 에서 LDR 로 변환시켜줘야함

Page 3: HDR Meets Black & White 2

Why HDR?

• 밝고 어두운 것을 명확하게 표현• 밝고 어두움이 극명하게 표현된 씬에서 sat-

urating 없이 표현

Page 4: HDR Meets Black & White 2

Black& white2 by night

• 모든 케이스에 들어맞는 lighting 을 셋업하기 참힘듬

• 특히 밤 Scene 은 low dynamic rage때문에 아주 참기힘들정도였다는

• HDR rendering 과 auto exposure 를 도입하여 밤 scene 에서 visual 퀄리티를 향상시킴

 

Page 5: HDR Meets Black & White 2

Black& white2 by night(2)

밤에는 luminance 히스토그램의 95 퍼센트가 0.5 보다 적은 값임

Page 6: HDR Meets Black & White 2

color luminance

• 빠르고 간편함 : HSL space 에서 직관적으로 color 밝기를 표현할 수 있는 값임

• RGB 로부터 luminance = dot(color, LUMINANCE_VECTOR)

• LUMINANCE_VECTOR ( 0.2125, 0.7154, 0.0721)

Page 7: HDR Meets Black & White 2

HSL vs HSV

Page 8: HDR Meets Black & White 2

Tonemapping

• 간단한 톤매핑if (luminance > 1.0) color = white

• 간단하지만 좀 더 생각해 볼 톤매핑new_luminance = luminance / max_luminancenew_color = color * new_luminance / lumi-

nance

• 그러나 Tone mapping 은 아티스트가 관여해야 함 , 아티스트로부터의 input 을 받는 것이 필요

Page 9: HDR Meets Black & White 2

HDR in Games

• 이 당시에는… .(2005 년 )– Half Life 2 Lost Coast (HDRL)– Far Cry and Splinter Cell (HDRR)– Some XBOX 360 Games

Page 10: HDR Meets Black & White 2

HDR “a la” Half Life 2 (1)

• High dynamic range values 를 사용함• Frame buffer 에 결과값을 쓰기전에 라이팅

계산의 마지막에 Tone map• D3DFMT_A8R8G8B8 render target

사용

Page 11: HDR Meets Black & White 2

HDR “a la” Half Life 2 (2)

• 장점 :– HDR hardware 를 요구하지 않음–MSAA 호환가능 , 상대적으로 값싼

• 단점 – tone mapping 포함하기위해 각각의 모든

shader 를 만져줘야했음– Scene 의 전체적인 dynamic range 를

이해하기 힘들었음–많이 overdraw 되면 값이 비쌈 (?)

Page 12: HDR Meets Black & White 2

HDR : The “floating” way(1)

• High dynamic range 를 사용하여 lighting 계산하는것은 결과값은 Floating point(16,32 bit per component) render target 에 값을 기입하는 것(D3DFMT_A16FG16FB16F)

• 평균 , 최대 luminance 를 HDR Image 로부터 계산한다 .• HDR image 를 LDR render target 으로 tone map 한다 .

Page 13: HDR Meets Black & White 2

HDR : The “floating” way(2)

• 장점 – 픽셀당 고정되고 예측가능한 코스트가 든다 .– 높은 정밀성 , 평균값과 최대값을 이용함으로써

노출도를 쉽게 조정가능하다 .

• 단점 – 비싸다 . 많은 bandwidth 가 요구된다 . 많은

메모리도 요구 (fp16 render target)– 최신의 하드웨어에서만 이용가능 ( 이당시 )– MSAA 와 잘 맞지않다 . MSAA 를 해결할 수 있는

하드웨어적 지원이 필요함

Page 14: HDR Meets Black & White 2

Other ways to do HDR

• HDR 컬러를 표현가능한 RGBE 를 사용–manually 하게 blending 해줘야함– NO MSAA

• HSL 에서 더 많은 BIT 를 L 에 할당을 하고 계산한다 .–올바르게 구현하기 어렵고 , 값이 비쌈

• 애네들은 16-bit floating-point 를 썻다고 함

Page 15: HDR Meets Black & White 2

High Quality 32-Bit HDR Colors with LogLUV( 책에있는챕터 )

• CIE Luv – 3 가지 요소– L – Luminance– u,v – Chromaticity coordinate

• 우선 RGB -> XYZ 로 변형• 그다음 XYZ -> CIE Luv 로

Page 16: HDR Meets Black & White 2

High Quality 32-Bit HDR Colors with LogLUV ( 책 )

L = Y

Page 17: HDR Meets Black & White 2

High Quality 32-Bit HDR Colors with LogLUV ( 책 )

• U,v 는 8 비트로 L 은 16 bit logarithm 으로 저장• Shader 를 사용하여 가능

• 장점– 4 byte 로 표현가능– 계산이 쉬움

• 단점– Alpha blending 에 제약이있음– LogLuv texture 를 sampling 하면 artifact 가 있음

( 왜냐하면 LogLuv 가 linear 하지 못하기 때문이라고 함 )

Page 18: HDR Meets Black & White 2

High Quality 32-Bit HDR Colors with LogLUV (책 )

float eps = pow(2, -64);

float3x3 mRGB_to_XYZ ={

{0.497, 0.256, 0.023},{0.339, 0.678, 0.113},{0.164, 0.066, 0.864}

};

float4 ConvertRGBToLogLuv(float3 RGB){

float3 XYZ = mul(mRGB_to_XYZ, RGB);XYZ = max(XYZ, float3(eps, eps, eps)); //avoid by 0float2 xy = XYZ.xz / dot( float3(1,1,1), XYZ);float2 uv = float4(4, 9) * xy / dot(float3(-2,12,3), float3(xy, 1));

float LogL = 256 * log(XYZ,y + 64); //avoid neg valuefloat LogL_LSB = frac(LogL); // get 8 least significant bits;

return float4(uv, LogL_LSB, LogL);}

Page 19: HDR Meets Black & White 2

Tonemapping( 책 )

• Lw 는 mapping 되어지는 pixel 의 luminance• Lwhite 는 완전 하얀색에 mapping 될 가장 작은 luminance• Lmin 은 완전 검정색에 mapping 될 가장 작은 luminance• Lave 는 scene 의 평균 luminance• Ld(x,y) 는 coordinate x,y 위치에 [0..1] 사이의 값으로

새로구해져 매핑될 luminance

이해하기 쉽고 아티스트가 조정가능하면서 real-time 에 적합한 Tone Mapping 이다 ~

Page 20: HDR Meets Black & White 2

Minimum, Maximum, and Average Luminance( 책 )

• 최대값 , 최소값 , 평균값을 다운 샘플하면서 Average 구할수 있다 .

Page 21: HDR Meets Black & White 2

Average luminance and the GPU

• 평균 luminance 를 구하는 것은 전형적인 ‘ gathering’ operation 인데…

• GPU 는 data 를 gathering 하기에 좋지 않음

• CPU 가 매우좋다 .

Page 22: HDR Meets Black & White 2

Average luminance and the CPU

• HDR 이미지를 메인메모리로 다시가져와야한다 .–메우느림 (PCI-E 에서는 그렇게 느리지는

않다고함 )–다음 콘솔환경에서는 문제가 되지 않을것으로 봄

• 전체 image histogram 을 계산해보자 .

Page 23: HDR Meets Black & White 2

Image Histogram( 책 )

• 씬에서 min,max,avg 값을 구하는 것은 이미 전체영역에 대한 모든 픽셀들에 대한 계산이 요구되는 작업임

• 여기에다가 약간의 작업을 좀 더 추가하면 더 많은 정보를 얻어낼 수 있다 .

• Luminance 를 단계 ( 슬롯 ) 를 나누어 구분하자 .( 예를 들어 1024)

• 각 슬롯들은 해당되는 luminance 를 가지는 픽셀들의 숫자를 기록함

Page 24: HDR Meets Black & White 2

Image Histogram

1. 최대값과 최소값을 찾자 (Lmax, Lmin)2. Luminance range 를 확실한

숫자슬롯으로 나누자 ( 예를들어 1024)3. 각 슬롯마다 픽셀의 숫자를 찾자 .4. Frequency 를 얻기위해 각 슬롯을 픽셀의

숫자로 나누자 .

Page 25: HDR Meets Black & White 2

Histogram Equalisation(1)

• 여기서는전체 dynamic range 를 이용할 수 있게 균등화할 수 있는 image his-togram 로 바꿔봅시다 .~

Page 26: HDR Meets Black & White 2

Histogram Equalisation(2)

• From “Digital image processing”, page 91-93:– Input image 에서 R 의 luminance 를 가지는

각각의 slot 들을 S 로 mapping 시킨다 .– S 는 R 보다 작거나 같은 모든 frequency 들의

Page 27: HDR Meets Black & White 2

AutoExposure(1)

• 균등화된 histogram 으로부터 Lnew_min, Lnew_max, Lnew_avg 를 계산해내자 .– Lnew_min 은 S 가 Pmin 보다 큰 첫번째 slot 임 ..– Lnew_max 는 S 가 Pmax 보다 큰 첫번째 slot 임– Lnew_avg 는 S 가 Pavg 보다 큰 첫번째 slot 임

• 일반적으로 Pmin, Pmax, Pavg 는 0.01(1%), 0.99(99%), 0.50(50%) 임

Page 28: HDR Meets Black & White 2

AutoExposure(2)

• 최소값과 최대값의 percentage 는 매우작은 부분의 밝거나 어두운 지역을 무시해 버릴수도 있음 ..

Page 29: HDR Meets Black & White 2

AutoExposure(3)

• Auto exposure 는 최소값 , 최대값 ,평균값을 트래킹함으로써 구현된다 .– Act_value += new_value * (1.0f –

pow(1.0f – speed, 30.0f * elapsed_time));

– Speed 는 아티스트가 조절가능한 숫자로 얼마나 빨리 노출도가 적용되는가를 나타낸다 .

Page 30: HDR Meets Black & White 2

Luminance mapping(1)

• Luminance mapping 을 저장할 1024 * 1 짜리 texture 를 만든다 .– Lact_min 보다 적은 luminance 는 0.0 으로 매핑– Lact_max 보다 큰 것은 1.0 으로 매핑 ( 그러면

bloomed)–나머지 영역은 간단한 gamma ramp 로 map

할수있다 .float xp = 1.0f + (Lact_avg – Lact_min)/(Lact_max-

Lact_min);gamma_ramp = powf(x, xp + bias);

Page 31: HDR Meets Black & White 2

Luminance mapping(2)

• Bias 값은 scene 에 contrast 를 증감시킬수있는 값이다 .– 낮에는 contrast 를 높게– 밤에는 낮게

Page 32: HDR Meets Black & White 2

Luminance mapping(3)

• 아티팩트를 줄이기위해 luminance map 은 D3DFMT_R16F 로

• Tone mapper 에서의 픽셀쉐이더Float Li = dot(colorln, LUMINANCE_VECTOR);Float Ld = tex1D(LuminanceMapSampler, Li);colorOut.rgb = LuminanceScale * (Colorln.rgb/

Li)*Ld;

Page 33: HDR Meets Black & White 2

Histogram based HDR Pros and Cons

• 장점 (Pros.)– GPU파워를 위해 GPU 에서 CPU 로 bandwidth 를 옮길수있다 .

( 보통 남지만 그러나 부족한 ) – 이미지를 특색있게 컨트롤할수있음– 매우 flexible 하고 simple 한 pixel shader tone mapper– 3d texture 들에 기초한 color correction techniques 로

plug 하기 쉽다 .( 색변형시키기 쉽다 )

• 단점 (Cons)– 많은 GPU 에서 CPU 로의 bandwidth 가 필요함

• 그러나 console 에서는 free

– HDR image 의 더블 buffer 에 많은 메모리가 필요하다 .– HDR IMAGE 를 분석하는데 CPU 사이클이 필요하다 .

Page 34: HDR Meets Black & White 2

HDR in Black & White 2

• B&W 에서는 HDR 을 끼워넣는데 부분적인 수정만하였다 .–기존의 Shader 를 수정할 필요가없음– Art asset 을 수정할 필요없음

• HDR 의 장점을 잘이용하기위해 아티스트가 Process중간에서 개입할필요는있다 .

Page 35: HDR Meets Black & White 2

Performance analysis

• Origin size(1024*768) 은 대략 6MB 의 video Ram 을 더먹고 4xMSAA 를 사용하면 최대 25MB까지 더 먹음 ..

• 1024*768 fp16 의 scaled down ver-sion 은 대략 11mb/s 의 bandwidth 를 요구한다 .–꽤 많이 먹네 ;;

• 약 10ms 가 걸리며 분석하는데는 AMD64 3500mhz 로 1ms 가 걸린다 .

Page 36: HDR Meets Black & White 2

Before

Page 37: HDR Meets Black & White 2

After

Page 38: HDR Meets Black & White 2

Before

Page 39: HDR Meets Black & White 2

After