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

Post on 09-Jul-2015

7.713 views 4 download

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

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

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

(http://agebreak.blog.me)

(cafe.naver.com/devrookie)

HDR == 뽀샤시?

HDR

뽀샤시(Bloom)는

HDR을 적용했을때

나오는 대표적 효과중

하나일뿐

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

4Byte = 32 Bit

• 각 색상당 1Byte (8 bit)

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

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

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

태양은 무슨색?

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

달없음 달밤 여명 방안 햇빛

원추체

간상체

부동 소수점

정수

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

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

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

• FP16 (Floting Point 16bit)

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

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

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

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

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

왜? 지금 가능한가?

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

하지만… 모니터는…

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

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

그럼 의미없네..ㅅㅂ

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

이 변환을 이라고 한다!

톤 매핑

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

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

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

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

톤 매핑의 필요성

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

HDR 렌더링의 메리트란?

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

HDR 렌더링의 메리트란?

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

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

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

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

하지만 HDR에서는!

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

HDR 렌더링의 메리트란?

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

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

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

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

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

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

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

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

노출 보정 시뮬레이션

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

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

HDR 렌더링의 메리트란?

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

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

가우시안 필터(Gaussian Filter)

Kawase식 MGF(Multiple Gaussian Filter)

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

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

Kawase식 MGF(Multiple Gaussian Filter)

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

Kawase식 MGF(Multiple Gaussian Filter)

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

Kawase식 MGF(Multiple Gaussian Filter)

2. 모두 합성하면 완성

스타오션3에서의 응용

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

FAKE HDR – LDR을 HDR로 맵핑

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

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

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

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

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

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

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

구현 개요

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

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

글로우 적용 예

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

Special Thanks

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

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