SlideShare una empresa de Scribd logo
1 de 56
H D RHigh Dynamic Range 김정희 최유표
Agenda HDR, Tone Mapping, Luminance Gamma Filmic HDR in Uncharted2 Q&A
HDR HDR : High Dynamic Range 디스플레이의 밝기/색상범위 등에 얽매이지 않고 폭넓은 밝기/색상범위를 수행하는 것 RGBA 24Bit Color = 1677만색= 70dB 실제 세계 = 1012색 = 120dB  16Bit Color = 4.4* 1012 = 120dB 어둠   달밤    여명   방안   햇빛 원추체 : 밝은 빛이나 색을 느낌 간상체: 어두운 빛을 느낌 dB = 10 * Log10(X) 1012 = 120dB 원추체 간상체
HDR HDR로 얻을 수 있는 이점 음영을 큰 손실 없이 리얼하게 표현 노출 시뮬레이션 눈부심 표현
음영표현 예 아스팔트 반사율 7% 0~255에서는 18  어둡다! 하지만 현실에서는 둔하게나마 빛나 보임! 태양은 255보다 훨씬 큰 휘도를 갖기 때문에… 아스팔트 <<넘사벽<<태양
음영표현
노출 시뮬레이션 인간이 지각할 수 있는 Dynamic Range 80~120dB, 10-6 ~ 106 하지만 보고 있는 Scene의 최대or평균 휘도에 영향을 많이 받음 액정을 어두운 곳에서 보았을 때  대낮의 야외에서 보았을 때 광채(Iris)라는 눈의 부위가 안구로 통하는 광량을 조정하고 있기 때문에
노출 시뮬레이션 Scene의 평균 휘도를 구한 후 Tone Mapping을 실행하면 적정 휘도로 Scene을 표현할 수 있다! 즉 눈의 광채가 광량을 보기 편하게 조정하는 동작을 흉내 낼 수 있다. Tone Mapping HDR 영상을 디스플레이로 표현하기 위한 색상 조정/가공 과정
노출 시뮬레이션 어두운 곳에 눈이 익숙해져 있는 상태에서 밝은 곳으로 이동하면 사물이 눈부시게 보인다. 밝은 곳에서 일정 시간이 지난 후에야 노출이 적절하게 보정된다.
눈부심 표현 휘도가 높은 빛이 렌즈 안에서 반사되거나 속눈썹에서 회절 되어서 생기는 현상 Bloom : 고휘도의 빛이 희미하게 넘침 Glare : 고휘도의 물체에서 나오는 빛줄기 < Bloom(좌) / Glare(우) >
HDR Process HDR  프레임버퍼 HDR 텍스쳐 Tone Mapping HDR 광원 표시 Bloom/Glare HDR 렌더타겟 동적인 환경맵 등을 이용 HDR 텍스쳐 Int8 LDR 텍스쳐여도 상관없지만 환경 맵이나 자체 발광 텍스쳐는HDR을 사용하는 것이 좋음
유사 HDR Int8 LDR 텍스쳐 사용 0~255 색  0~1 휘도 (보통의 경우) 0~255 색  0~2or0~4 휘도 (색표현↓휘도↑) DXTC 압축이 가능 < 0~1(좌), 0~2(중), 0~4(우) >
유사 HDR 로스트플래닛 (2007) 압축 기법 DXT5 이용 {r,g,b,1.0} 중 최대값 M 선택 인코딩: {r/M, g/M, b/M, 1/M} = {R, G, B, A} 디코딩: {R/A, G/A, B/A} = {R*M, G*M, B*M} 단점  알파값을 사용할 수 없음 R,G,B의 차이가 크면 해상도가 떨어짐
Bloom/Glare Bloom 평균 휘도 계산  고휘도 추출 (Tone Mapping과 연관) 고휘도 부분 Blur Gaussian Filter 1/4 통합 1/8 1/16 1/32
Work Buffer 회전해서 압축 Blur 원래대로  되돌림 모두 합성 Bloom/Glare Glare
Tone Mapping 동일한 Scene이라도 어느 휘도를 기준으로 영상을 조정하는가에 따라서 다르게 보일 수 있다.  	 Tone Mapping의 기본 개념
Tone Mapping 평균 휘도를Key로 프레임 내의 컬러들을 Display가 표현 가능한 1677만색으로 가중치를 붙여 조정하는 것 가장 단순한 선형 변환 비선형 변환 비선형의 조합
Tone Mapping 조정을 하지 않는다면 색이 치우침 조정을 통하여 색이 풍부해지는 효과
휘도 측정 Luminance 평균 구하기 Lum(x,y) : (x,y) 픽셀의 휘도값 δ : 아주 작은 값 MipMap최저 레벨인 1x1 픽셀의 휘도를 이용할 수도 있음 (DirectX Sample)
휘도 측정 Lum(x,y) : CIE Yxy이용 RGB  Luminance Luminance  RGB
휘도 측정 각 픽셀의 Luminance (3x3) Down Sampling (4x4)
휘도 조정 기본 공식 예 LumAvg 0.36, MiddleGrey 0.18  ½ 어두워짐 LumAvg 0.09, MiddleGrey 0.18  2 밝아짐
휘도 조정 휘도를0~1로 압축
휘도 조정 Reinhard의 방식 Lwhite = 흰색으로 매핑하고자 하는 가장 작은 휘도값 White 2 White 6
휘도 조정 Sample White = Lwhite* Lwhite
빛 적응 휘도가 크게 차이나는 곳을 이동하면 적응이 필요함 어두운 곳  밝은 곳 (몇 초만에) 밝은 곳  어두운 곳 (약 30분 정도) 게임에서는 적응 휘도를 사용하여 적당히!
빛 적응 dt : 프레임 시간 간격 τtau: 적응률 τRods : 간상체의적응률, 약 0.2 τCones : 추상체의 적응률, 약 0.4
빛 적응 LumAdapted : 현재 프레임의 Adapted Lum (?) LumAvg = 0.5 LumAvg = 0.5 LumAvg = 0.1 < 4 프레임을 저장할 때 >
빛 적응 암순응 밝기와 명도 감소 이미지 분산 약간 청색으로 보임 암순응 휘도 ?
Gamma Gamma? TV에서 수상부 입력 전압에 대한 음극선관 휘도와 피사체 휘도에 대한 카메라 출력 전압의 비율 γ, r로표기 Gamma와 CRT TV나모니터 속에는 형광물질이 발라진 CRT가 있는데이 CRT는 발광소자의 특성 및 기술적 한계로 인해 전기 신호의 입력값을 비례적으로 재현하지 못한다. CRT의 입력과 출력 비율은 평균 2.2  대부분 2.0~2.4 vs Mac 1.72
Gamma 우리가 보는 일반 모니터도 r2.2 제대로 보이는 이유는 이미지가 밝게 보정되어 저장되어있기 때문
Gamma
Gamma
Gamma
Linear Space Lighting 어떤 이미지가 더 좋아 보이는가? Good vs Correct
Linear Space Lighting OMG!
Linear Space Lighting Gamma 보정
Linear Space Lighting
Linear Space Lighting HW 및 DX의 지원 D3DSAMP_SRGBTEXTURE (Texture) D3DRS_SRGBWRITEENABLE (RenderTarget) pow Function이 필요없다!
Linear Space Lighting
Linear Space Lighting Diffuse Map  Gamma Space Normal Map Linear Space Specular Uncharted 2 : Linear 하지만 Gamma Space가 맞는것 같다. Ambient Occlusion Uncharted 2 : Linear 하지만 Gamma Space가 맞는것 같다.
Filmic Tone Mapping
Filmic Tone Mapping
Filmic Tone Mapping
Filmic Tone Mapping Linear Curve vsReinhard L.C : 색조가 심하게 변화됨 R : 부드러운 변화, 하지만검은성분이 사라짐 < Linear Curve (위), Reinhard (아래) >
Filmic Tone Mapping Filmic Tone Mapping 풍부한 색상, 선명한 검은색 어떤 색상에서도 선명함 < Reinhard (위), Filmic Curve (아래) >
Filmic Tone Mapping 검은색 표현 : Filmic > Linear > Reinhard Soft Highlight : Filmic = Reinhard > Linear
Filmic Tone Mapping Linear
Filmic Tone Mapping Reinhard
Filmic Tone Mapping Filmic
Filmic Tone Mapping ,[object Object],float4 ps_main( float2 texCoord  : TEXCOORD0 ) : COLOR {    float3 texColor = tex2D(Texture0, texCoord );    float3 ld = 0.002;    float linReference = 0.18;    float logReference = 444;    float logGamma = 0.45;    float3 LogColor;    LogColor.rgb = (log10(0.4*texColor.rgb/linReference) / ld * logGamma + logReference) / 1023.f;    LogColor.rgb = saturate(LogColor.rgb);    float FilmLutWidth = 256; float Padding = .5/FilmLutWidth; //  apply response lookup and color grading for target display    float3 retColor; retColor.r = tex2D(FilmLut, float2( lerp(Padding,1-Padding,LogColor.r), .5)).r; retColor.g = tex2D(FilmLut, float2( lerp(Padding,1-Padding,LogColor.g), .5)).r; retColor.b = tex2D(FilmLut, float2( lerp(Padding,1-Padding,LogColor.b), .5)).r;    return float4(retColor,1); } pow(1/2.2) 불필요 3번의 Texture Look Up이 필요
Filmic Tone Mapping by Jim Hejl, Richard Burgess-Dawson 이전 페이지 버전의 근사/최적화 pow(1/2.2) 불필요 float4 ps_main( float2 texCoord  : TEXCOORD0 ) : COLOR {    float3 texColor = tex2D(Texture0, texCoord ); 	float3 x = max(0,texColor-0.004);    float3 retColor = (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06);    return float4(retColor,1); }
Filmic Tone Mapping float A = 0.15; // Shoulder Strength float B = 0.50; // Linear Strength float C = 0.10; // Linear Angle float D = 0.20; // Toe Strength float E = 0.02; // Toe Numerator (분자) float F = 0.30; // Toe Denominator (분모) float W = 11.2; // Linear White Point Value float3 Uncharted2Tonemap(float3 x) {    return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F; } float4 ps_main( float2 texCoord  : TEXCOORD0 ) : COLOR {    float3 texColor = tex2D(Texture0, texCoord );    float ExposureBias = 2.0f;    float3 curr = Uncharted2Tonemap(ExposureBias*texColor);    float3 whiteScale = 1.0f/Uncharted2Tonemap(W);    float3 color = curr*whiteScale;    return float4( pow(color, 1/2.2), 1 ); } Toe, Shoulder 등을 조정할 수 있음 pow(1/2.2) 필요함
Filmic Tone Mapping 적용하려면… Lighting 모두를 손대야 할 수도 있다. LDR 상태에서 Lighting을 조정(Tweak)했다면 단순히 공식 적용하는 것만으로는 부족하다.
References Filmic Tone Mapping http://filmicgames.com/ http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting?from=ss_embed HDR/Luminance http://kyruie.tistory.com/13#ph1_12 http://allosha.tistory.com/category/3D%20%EA%B7%B8%EB%9E%98%ED%94%BD%EC%8A%A4%20%EB%A7%A4%EB%8B%88%EC%95%85%EC%8A%A4/HDR%20%EB%A0%8C%EB%8D%94%EB%A7%81 Linear Space  GPU Gems 3, Chapter 24
Q & A ?

Más contenido relacionado

La actualidad más candente

언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정Dae Hyek KIM
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space MarinePope Kim
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해tartist
 
감마가 어디감마
감마가 어디감마감마가 어디감마
감마가 어디감마JP Jung
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1MoonLightMS
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술henjeon
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용JP Jung
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)포프 김
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)MinGeun Park
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현민웅 이
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationGuerrilla
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunElectronic Arts / DICE
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019devCAT Studio, NEXON
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John HableNaughty Dog
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Tiago Sousa
 

La actualidad más candente (20)

언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정언차티드4 테크아트 파트1 톤맵핑&색보정
언차티드4 테크아트 파트1 톤맵핑&색보정
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
Rendering Tech of Space Marine
Rendering Tech of Space MarineRendering Tech of Space Marine
Rendering Tech of Space Marine
 
물리 기반 셰이더의 이해
물리 기반 셰이더의 이해물리 기반 셰이더의 이해
물리 기반 셰이더의 이해
 
감마가 어디감마
감마가 어디감마감마가 어디감마
감마가 어디감마
 
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다  공개용
물리 기반 셰이더의 허와 실:물리기반 셰이더를 가르쳐 봤습니다 공개용
 
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3DirectX 11 Rendering in Battlefield 3
DirectX 11 Rendering in Battlefield 3
 
[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)[0821 박민근] 렌즈 플레어(lens flare)
[0821 박민근] 렌즈 플레어(lens flare)
 
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
Taking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next GenerationTaking Killzone Shadow Fall Image Quality Into The Next Generation
Taking Killzone Shadow Fall Image Quality Into The Next Generation
 
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The RunFive Rendering Ideas from Battlefield 3 & Need For Speed: The Run
Five Rendering Ideas from Battlefield 3 & Need For Speed: The Run
 
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
 
Lighting Shading by John Hable
Lighting Shading by John HableLighting Shading by John Hable
Lighting Shading by John Hable
 
Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)Rendering Technologies from Crysis 3 (GDC 2013)
Rendering Technologies from Crysis 3 (GDC 2013)
 
카툰 렌더링
카툰 렌더링카툰 렌더링
카툰 렌더링
 

Destacado

GPU Gems3 Vegetation
GPU Gems3 VegetationGPU Gems3 Vegetation
GPU Gems3 VegetationYoupyo Choi
 
D2 Depth of field
D2 Depth of fieldD2 Depth of field
D2 Depth of fieldYoupyo Choi
 
D2 Horizon Occlusion
D2 Horizon OcclusionD2 Horizon Occlusion
D2 Horizon OcclusionYoupyo Choi
 
Filmic Tonemapping - EA 2006
Filmic Tonemapping - EA 2006Filmic Tonemapping - EA 2006
Filmic Tonemapping - EA 2006hpduiker
 
Future of unreal
Future of unreal Future of unreal
Future of unreal Ning Hu
 
GDC 2014 - Individual Tracks Summaries
GDC 2014 - Individual Tracks SummariesGDC 2014 - Individual Tracks Summaries
GDC 2014 - Individual Tracks SummariesClaire Lee
 
Intro to VR with Unreal Engine
Intro to VR with Unreal Engine   Intro to VR with Unreal Engine
Intro to VR with Unreal Engine Unreal Engine
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldMilo Yip
 
언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질동석 김
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lightingozlael ozlael
 

Destacado (14)

GPU Gems3 Vegetation
GPU Gems3 VegetationGPU Gems3 Vegetation
GPU Gems3 Vegetation
 
D2 Rain (1/2)
D2 Rain (1/2)D2 Rain (1/2)
D2 Rain (1/2)
 
D2 Rain (2/2)
D2 Rain (2/2)D2 Rain (2/2)
D2 Rain (2/2)
 
D2 Depth of field
D2 Depth of fieldD2 Depth of field
D2 Depth of field
 
D2 Job Pool
D2 Job PoolD2 Job Pool
D2 Job Pool
 
D2 Havok
D2 HavokD2 Havok
D2 Havok
 
D2 Horizon Occlusion
D2 Horizon OcclusionD2 Horizon Occlusion
D2 Horizon Occlusion
 
Filmic Tonemapping - EA 2006
Filmic Tonemapping - EA 2006Filmic Tonemapping - EA 2006
Filmic Tonemapping - EA 2006
 
Future of unreal
Future of unreal Future of unreal
Future of unreal
 
GDC 2014 - Individual Tracks Summaries
GDC 2014 - Individual Tracks SummariesGDC 2014 - Individual Tracks Summaries
GDC 2014 - Individual Tracks Summaries
 
Intro to VR with Unreal Engine
Intro to VR with Unreal Engine   Intro to VR with Unreal Engine
Intro to VR with Unreal Engine
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the World
 
언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질언리얼 엔진 4용 커스텀 천 재질
언리얼 엔진 4용 커스텀 천 재질
 
Hable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr LightingHable John Uncharted2 Hdr Lighting
Hable John Uncharted2 Hdr Lighting
 

Similar a D2 Hdr

Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space민웅 이
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color민웅 이
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art TechnologiesSangYun Yi
 
Gamma라고 들어봤니
Gamma라고 들어봤니Gamma라고 들어봤니
Gamma라고 들어봤니minwoo lee
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shadingMinGeun Park
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdaySangYun Yi
 
Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해SangYun Yi
 
Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02SangYun Yi
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field종빈 오
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환Yggdrasil610
 
UHD HDR "Dance untold story"
UHD HDR "Dance untold story"UHD HDR "Dance untold story"
UHD HDR "Dance untold story"승윤 이
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2JP Jung
 
비디오 코덱
비디오 코덱비디오 코덱
비디오 코덱greenday96
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2Kyoung Seok(경석) Ko(고)
 
Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03SangYun Yi
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_webCARROTCG
 

Similar a D2 Hdr (19)

Gamma and linear color-space
Gamma and linear color-spaceGamma and linear color-space
Gamma and linear color-space
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
Post processing in_color
Post processing in_colorPost processing in_color
Post processing in_color
 
Game Visual Art Technologies
Game Visual Art TechnologiesGame Visual Art Technologies
Game Visual Art Technologies
 
Color Control
Color ControlColor Control
Color Control
 
Gamma라고 들어봤니
Gamma라고 들어봤니Gamma라고 들어봤니
Gamma라고 들어봤니
 
Uncharted4 part1
Uncharted4 part1Uncharted4 part1
Uncharted4 part1
 
[0326 박민근] deferred shading
[0326 박민근] deferred shading[0326 박민근] deferred shading
[0326 박민근] deferred shading
 
Devtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stdayDevtree lightmapping unity5_2_1stday
Devtree lightmapping unity5_2_1stday
 
Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해Display color와 Digital texture format의 이해
Display color와 Digital texture format의 이해
 
Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02Unity Surface Shader for Artist 02
Unity Surface Shader for Artist 02
 
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
[GPU Gems3] Chapter 28. Practical Post Process Depth Of Field
 
게임 개발을 위한 렌더링 기법 한성환
게임 개발을 위한 렌더링 기법   한성환게임 개발을 위한 렌더링 기법   한성환
게임 개발을 위한 렌더링 기법 한성환
 
UHD HDR "Dance untold story"
UHD HDR "Dance untold story"UHD HDR "Dance untold story"
UHD HDR "Dance untold story"
 
9강 camera advanced light2
9강 camera advanced light29강 camera advanced light2
9강 camera advanced light2
 
비디오 코덱
비디오 코덱비디오 코덱
비디오 코덱
 
구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2구세대 엔진 신데렐라 만들기 최종본 유트브2
구세대 엔진 신데렐라 만들기 최종본 유트브2
 
Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03Unity Surface Shader for Artist 03
Unity Surface Shader for Artist 03
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web
 

D2 Hdr

  • 1. H D RHigh Dynamic Range 김정희 최유표
  • 2. Agenda HDR, Tone Mapping, Luminance Gamma Filmic HDR in Uncharted2 Q&A
  • 3. HDR HDR : High Dynamic Range 디스플레이의 밝기/색상범위 등에 얽매이지 않고 폭넓은 밝기/색상범위를 수행하는 것 RGBA 24Bit Color = 1677만색= 70dB 실제 세계 = 1012색 = 120dB 16Bit Color = 4.4* 1012 = 120dB 어둠 달밤 여명 방안 햇빛 원추체 : 밝은 빛이나 색을 느낌 간상체: 어두운 빛을 느낌 dB = 10 * Log10(X) 1012 = 120dB 원추체 간상체
  • 4. HDR HDR로 얻을 수 있는 이점 음영을 큰 손실 없이 리얼하게 표현 노출 시뮬레이션 눈부심 표현
  • 5. 음영표현 예 아스팔트 반사율 7% 0~255에서는 18  어둡다! 하지만 현실에서는 둔하게나마 빛나 보임! 태양은 255보다 훨씬 큰 휘도를 갖기 때문에… 아스팔트 <<넘사벽<<태양
  • 7. 노출 시뮬레이션 인간이 지각할 수 있는 Dynamic Range 80~120dB, 10-6 ~ 106 하지만 보고 있는 Scene의 최대or평균 휘도에 영향을 많이 받음 액정을 어두운 곳에서 보았을 때 대낮의 야외에서 보았을 때 광채(Iris)라는 눈의 부위가 안구로 통하는 광량을 조정하고 있기 때문에
  • 8. 노출 시뮬레이션 Scene의 평균 휘도를 구한 후 Tone Mapping을 실행하면 적정 휘도로 Scene을 표현할 수 있다! 즉 눈의 광채가 광량을 보기 편하게 조정하는 동작을 흉내 낼 수 있다. Tone Mapping HDR 영상을 디스플레이로 표현하기 위한 색상 조정/가공 과정
  • 9. 노출 시뮬레이션 어두운 곳에 눈이 익숙해져 있는 상태에서 밝은 곳으로 이동하면 사물이 눈부시게 보인다. 밝은 곳에서 일정 시간이 지난 후에야 노출이 적절하게 보정된다.
  • 10. 눈부심 표현 휘도가 높은 빛이 렌즈 안에서 반사되거나 속눈썹에서 회절 되어서 생기는 현상 Bloom : 고휘도의 빛이 희미하게 넘침 Glare : 고휘도의 물체에서 나오는 빛줄기 < Bloom(좌) / Glare(우) >
  • 11. HDR Process HDR 프레임버퍼 HDR 텍스쳐 Tone Mapping HDR 광원 표시 Bloom/Glare HDR 렌더타겟 동적인 환경맵 등을 이용 HDR 텍스쳐 Int8 LDR 텍스쳐여도 상관없지만 환경 맵이나 자체 발광 텍스쳐는HDR을 사용하는 것이 좋음
  • 12. 유사 HDR Int8 LDR 텍스쳐 사용 0~255 색  0~1 휘도 (보통의 경우) 0~255 색  0~2or0~4 휘도 (색표현↓휘도↑) DXTC 압축이 가능 < 0~1(좌), 0~2(중), 0~4(우) >
  • 13. 유사 HDR 로스트플래닛 (2007) 압축 기법 DXT5 이용 {r,g,b,1.0} 중 최대값 M 선택 인코딩: {r/M, g/M, b/M, 1/M} = {R, G, B, A} 디코딩: {R/A, G/A, B/A} = {R*M, G*M, B*M} 단점 알파값을 사용할 수 없음 R,G,B의 차이가 크면 해상도가 떨어짐
  • 14. Bloom/Glare Bloom 평균 휘도 계산 고휘도 추출 (Tone Mapping과 연관) 고휘도 부분 Blur Gaussian Filter 1/4 통합 1/8 1/16 1/32
  • 15. Work Buffer 회전해서 압축 Blur 원래대로 되돌림 모두 합성 Bloom/Glare Glare
  • 16. Tone Mapping 동일한 Scene이라도 어느 휘도를 기준으로 영상을 조정하는가에 따라서 다르게 보일 수 있다.  Tone Mapping의 기본 개념
  • 17. Tone Mapping 평균 휘도를Key로 프레임 내의 컬러들을 Display가 표현 가능한 1677만색으로 가중치를 붙여 조정하는 것 가장 단순한 선형 변환 비선형 변환 비선형의 조합
  • 18. Tone Mapping 조정을 하지 않는다면 색이 치우침 조정을 통하여 색이 풍부해지는 효과
  • 19. 휘도 측정 Luminance 평균 구하기 Lum(x,y) : (x,y) 픽셀의 휘도값 δ : 아주 작은 값 MipMap최저 레벨인 1x1 픽셀의 휘도를 이용할 수도 있음 (DirectX Sample)
  • 20. 휘도 측정 Lum(x,y) : CIE Yxy이용 RGB  Luminance Luminance  RGB
  • 21. 휘도 측정 각 픽셀의 Luminance (3x3) Down Sampling (4x4)
  • 22. 휘도 조정 기본 공식 예 LumAvg 0.36, MiddleGrey 0.18  ½ 어두워짐 LumAvg 0.09, MiddleGrey 0.18  2 밝아짐
  • 24. 휘도 조정 Reinhard의 방식 Lwhite = 흰색으로 매핑하고자 하는 가장 작은 휘도값 White 2 White 6
  • 25. 휘도 조정 Sample White = Lwhite* Lwhite
  • 26. 빛 적응 휘도가 크게 차이나는 곳을 이동하면 적응이 필요함 어두운 곳  밝은 곳 (몇 초만에) 밝은 곳  어두운 곳 (약 30분 정도) 게임에서는 적응 휘도를 사용하여 적당히!
  • 27. 빛 적응 dt : 프레임 시간 간격 τtau: 적응률 τRods : 간상체의적응률, 약 0.2 τCones : 추상체의 적응률, 약 0.4
  • 28. 빛 적응 LumAdapted : 현재 프레임의 Adapted Lum (?) LumAvg = 0.5 LumAvg = 0.5 LumAvg = 0.1 < 4 프레임을 저장할 때 >
  • 29. 빛 적응 암순응 밝기와 명도 감소 이미지 분산 약간 청색으로 보임 암순응 휘도 ?
  • 30. Gamma Gamma? TV에서 수상부 입력 전압에 대한 음극선관 휘도와 피사체 휘도에 대한 카메라 출력 전압의 비율 γ, r로표기 Gamma와 CRT TV나모니터 속에는 형광물질이 발라진 CRT가 있는데이 CRT는 발광소자의 특성 및 기술적 한계로 인해 전기 신호의 입력값을 비례적으로 재현하지 못한다. CRT의 입력과 출력 비율은 평균 2.2 대부분 2.0~2.4 vs Mac 1.72
  • 31. Gamma 우리가 보는 일반 모니터도 r2.2 제대로 보이는 이유는 이미지가 밝게 보정되어 저장되어있기 때문
  • 32. Gamma
  • 33. Gamma
  • 34. Gamma
  • 35. Linear Space Lighting 어떤 이미지가 더 좋아 보이는가? Good vs Correct
  • 37. Linear Space Lighting Gamma 보정
  • 39. Linear Space Lighting HW 및 DX의 지원 D3DSAMP_SRGBTEXTURE (Texture) D3DRS_SRGBWRITEENABLE (RenderTarget) pow Function이 필요없다!
  • 41. Linear Space Lighting Diffuse Map Gamma Space Normal Map Linear Space Specular Uncharted 2 : Linear 하지만 Gamma Space가 맞는것 같다. Ambient Occlusion Uncharted 2 : Linear 하지만 Gamma Space가 맞는것 같다.
  • 45. Filmic Tone Mapping Linear Curve vsReinhard L.C : 색조가 심하게 변화됨 R : 부드러운 변화, 하지만검은성분이 사라짐 < Linear Curve (위), Reinhard (아래) >
  • 46. Filmic Tone Mapping Filmic Tone Mapping 풍부한 색상, 선명한 검은색 어떤 색상에서도 선명함 < Reinhard (위), Filmic Curve (아래) >
  • 47. Filmic Tone Mapping 검은색 표현 : Filmic > Linear > Reinhard Soft Highlight : Filmic = Reinhard > Linear
  • 51.
  • 52. Filmic Tone Mapping by Jim Hejl, Richard Burgess-Dawson 이전 페이지 버전의 근사/최적화 pow(1/2.2) 불필요 float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR { float3 texColor = tex2D(Texture0, texCoord ); float3 x = max(0,texColor-0.004); float3 retColor = (x*(6.2*x+.5))/(x*(6.2*x+1.7)+0.06); return float4(retColor,1); }
  • 53. Filmic Tone Mapping float A = 0.15; // Shoulder Strength float B = 0.50; // Linear Strength float C = 0.10; // Linear Angle float D = 0.20; // Toe Strength float E = 0.02; // Toe Numerator (분자) float F = 0.30; // Toe Denominator (분모) float W = 11.2; // Linear White Point Value float3 Uncharted2Tonemap(float3 x) { return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F; } float4 ps_main( float2 texCoord : TEXCOORD0 ) : COLOR { float3 texColor = tex2D(Texture0, texCoord ); float ExposureBias = 2.0f; float3 curr = Uncharted2Tonemap(ExposureBias*texColor); float3 whiteScale = 1.0f/Uncharted2Tonemap(W); float3 color = curr*whiteScale; return float4( pow(color, 1/2.2), 1 ); } Toe, Shoulder 등을 조정할 수 있음 pow(1/2.2) 필요함
  • 54. Filmic Tone Mapping 적용하려면… Lighting 모두를 손대야 할 수도 있다. LDR 상태에서 Lighting을 조정(Tweak)했다면 단순히 공식 적용하는 것만으로는 부족하다.
  • 55. References Filmic Tone Mapping http://filmicgames.com/ http://www.slideshare.net/ozlael/hable-john-uncharted2-hdr-lighting?from=ss_embed HDR/Luminance http://kyruie.tistory.com/13#ph1_12 http://allosha.tistory.com/category/3D%20%EA%B7%B8%EB%9E%98%ED%94%BD%EC%8A%A4%20%EB%A7%A4%EB%8B%88%EC%95%85%EC%8A%A4/HDR%20%EB%A0%8C%EB%8D%94%EB%A7%81 Linear Space GPU Gems 3, Chapter 24
  • 56. Q & A ?