[Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

97

Transcript of [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Page 1: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 2: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

강연자 소개 박민근(@agebreak)

네오위즈 게임즈 (야구의 신 개발중) NTL-inc - 드래곤볼 온라인 개발 엔씨소프트 – PlayNC 빌링 서버 개발

(http://agebreak.blog.me)

(cafe.naver.com/devrookie)

Page 3: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 4: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 5: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 6: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 7: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 8: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 9: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 10: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 11: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 12: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 13: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 14: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 15: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 16: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 17: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 18: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 19: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 20: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 21: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

HDR == 뽀샤시?

HDR

뽀샤시(Bloom)는

HDR을 적용했을때

나오는 대표적 효과중

하나일뿐

Page 22: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 23: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

기존의 색상 표현 픽셀당 4Byte 표현

4Byte = 32 Bit

Page 24: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

• 각 색상당 1Byte (8 bit)

• 256단계로 표현 가능 (0~255)

• 총 1,677만색 표현 가능 (256 ^ 3 = 2^24)

• 그런데 각 색상당 256단계??

Page 25: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

태양은 무슨색?

RGB : 255, 255, 255 RGB : 255, 255, 255

Page 26: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 27: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

달없음 달밤 여명 방안 햇빛

원추체

간상체

부동 소수점

정수

Page 28: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

다이나믹 레인지 = 표현의 범위

이 광대한 영역을 좀더 정확하게 표현하려는 것이 HDR의 기본 접근이다.

Page 29: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

• 색상당 16비트 부동소수점으로 표현

• FP16 (Floting Point 16bit)

• 64비트 버퍼 사용 ( 16 * 4)

• 부호 1비트, 가수 10비트, 지수 5비트

• 약 4.4 X 10^12 색상 표현 가능

• 기존의 RGB8은 LDR(Low) 이라고 부름

Page 30: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

출처 : [NDC11] 올바른 HDR을 이용한 Bloom과 HDR - 이창희

Page 31: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 32: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 33: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

왜? 지금 가능한가?

비디오 메모리를 2배로 소비 대역이나 버스 성능이 2배가 요구 된다 => DX9/SM2.0에서는 어려움 DX 10/SM 4.0 시대에서야 가능해졌다

Page 34: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

하지만… 모니터는…

그래픽 카드에서 아무리 넓게 계산해도… 결국 모니터는 4바이트 RGB밖에 표시 못함 ㅠ.ㅠ

Page 35: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

그래서.. 이런 HDR용 디스플레이가 따로 존재하기도 합니다~~~ (물론 비쌈...=ㅅ=)

Page 36: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

그럼 의미없네..ㅅㅂ

그래~~서! 셰이더 내에서는 HDR로 계산을 하고, 렌더링시에는 LDR로 적절한(?) 변환이 필요.

이 변환을 이라고 한다!

Page 37: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 38: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 39: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

톤 매핑

1.화면의 평균 휘도를 구한다.

2.평균 휘도를 키값으로 하여, 표시 가능한

1,677만색(RGB8)로 매핑한다

3.실시간이 아닌, 약간 지연해서 실행한다

Page 40: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

톤 매핑의 필요성

Page 41: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 42: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 43: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 44: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

축소 버퍼를 이용한 평균 휘도 계측

Page 45: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

HDR 렌더링의 메리트란?

1.음영이 보다 리얼해 진다 2.노출 시뮬레이션을 할 수 있다 3.눈부심 표현이 가능하다

Page 46: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

HDR 렌더링의 메리트란?

1.음영이 보다 리얼해 진다 2.노출 시뮬레이션을 할 수 있다 3.눈부심 표현이 가능하다

Page 47: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

태양 광원은 255보다 밝다! 게임에서 가장 밝은 광원은 255!

반사율이 7% 물체(아스팔트) = 18

18은 이렇게나 어둡다. 최고 밝기가 255밖에 안되기 때문

Page 48: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

하지만 HDR에서는!

1이상의 밝기(광도)가 저장 가능 색상의 최대값이 255보다 훨씬 크다! 더욱 밝고! 더욱 리얼한 음영의 계산이 가능!

Page 49: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 50: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 51: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

HDR 렌더링의 메리트란?

1.음영이 보다 리얼해 진다 2.노출 시뮬레이션을 할 수 있다 3.눈부심 표현이 가능하다

Page 52: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

노출 보정 인간의 눈은 주변 밝기(휘도)에 영향을 받는다 방안에서의 휴대폰 액정과 야외 태양 밑에서의 휴대폰 액정 주변 밝기에 따른 사람의 눈의 적응 문제 어두운 곳 -> 밝은 곳, 밝은 곳 -> 어두운 곳

Page 53: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

톤맵핑을 활용 HDR 렌더링에서는 넓은 휘도 영역의 음영을 올바르게 기록하고 있음 씬의 평균 휘도를 구하여 그 값을 중심으로 톤매핑을 적용

이때 톤맵핑의 값을 서서히 변화 시키면,

노출 시뮬레이션 연출이 가능하다!

Page 54: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 55: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 56: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 57: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 58: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

노출 보정 시뮬레이션 1. 현재 씬의 평균 휘도로 톤매핑 (일반적)

2. 휘도가 급격하게 변하는 씬의 평균 휘도로 톤매핑을 변경한다

3. 이때 이 변화를 일부러 지연해서 실행한다.

Page 59: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

노출 보정 시뮬레이션

평균 휘도가 낮은 씬 평균 휘도가 높은 씬 톤맵핑 수치는 기존 씬과 같기 때문에 눈부시게 보인다

적응 완료! 현재 씬의 평균 휘도로 톤매핑한다

Page 60: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 61: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 62: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 63: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 64: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 65: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 66: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

HDR 렌더링의 메리트란?

1.음영이 보다 리얼해 진다 2.노출 시뮬레이션을 할 수 있다 3.눈부심 표현이 가능하다

Page 67: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 68: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Bloom 강한 빛이 눈에 들어왔을 때, 빛이 번지는 현상 강한 빛이 렌즈나, 속눈썹에서 산란되어서 생기는 현상 HDR의 대표적인 효과 Bloom, Glare, Glow, 뽀샤시등으로 표현

Page 69: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 70: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 71: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 72: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 73: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

가우시안 필터(Gaussian Filter)

Page 74: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Kawase식 MGF(Multiple Gaussian Filter)

전체 화면에 Blur를 먹이면 부하가 너무 크다!

축소 버퍼에서의 가우시안 필터법

Page 75: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Kawase식 MGF(Multiple Gaussian Filter)

1. 해상도를 줄여서 가우시안 필터를 적용한다

Page 76: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Kawase식 MGF(Multiple Gaussian Filter)

2. 같은 해상도로 확대한다. (바이리니어 필터)

Page 77: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Kawase식 MGF(Multiple Gaussian Filter)

2. 모두 합성하면 완성

Page 78: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

스타오션3에서의 응용

Page 79: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 80: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 81: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

FAKE HDR 32bit 버퍼에 HDR 정보를 압축해서 담는 테크닉 LDR에서 HDR을 흉내낸 기법이 사용 가능 a 채널에 휘도 정보를 넣어서 인코딩 및 디코딩 이전의 콘솔게임들에서도 다양하게 사용 되었다.

Page 83: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 84: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 85: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

FAKE HDR – LDR을 HDR로 맵핑

해상도(색표현)을 낮추고,

휘도 표현을 2배(4배)로 한다

Page 86: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

FAKE HDR - Bloom HDR Bloom의 원리를 LDR에 적용한 방식

HDR이 일반화 되기 훨씬 이전부터 사용한 방식

색상이 흰색에 가까우면 밝은색이라고 판단 (240이상)

셰이더 없이 고정 파이프라인에서도 적용 가능

이전의 그래픽카드들도 사용가능. 부하가 적음

Page 87: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

구현 개요

(a)일반적인 렌더링 (b)글로우 소스 렌더링

(c)글로우 소스를 블러링 (d) 최종 글로우 효과

Page 88: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

글로우 적용 예

Page 89: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 90: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 91: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 92: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 93: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Study More.. 실제 HDR 렌더링 구현 기법 LDR로 유사 HDR 렌더 타겟 사용 LDR로 유사 HDR 텍스쳐의 사용 톤맵핑 기법들 (다양한 수학적 방법들)

Page 95: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근
Page 96: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근

Special Thanks

꽃미남 포프,대마왕님, 오즈라엘, 이창희, 진혀니,친절한티스, 달땡땡, 레아횽, 꽃기자 Vito

정호햄, 안석햄, 해보리, 퐁퐁퐁, 영준이, 경원이, 재홍이, 화저, 미소녀인정, 세하님

Page 97: [Ndc12] 누구나 알기쉬운 hdr과 톤맵핑 박민근