Skip to content

HDR 렌더링 (2) ~ HDR 렌더링의 첫 번째 효능

[칼럼 핵심 요약]
DirectX 9세대 SM2.0 대응 GPU의 시대에 HDR 렌더링을 실현하는데 필요한 120dB 정도의 수치 표현 능력을 가진 프레임 버퍼 포맷으로 제공된 것이 각 RGB가 16비트 부동소수점(Floating-Point)(FP16)으로 표현되는 포맷이다.

🌐 원문 링크: HDRレンダリング(2)~HDRレンダリングの第一の効能 (Mynavi News)
📅 원문 발행일: 2008-12-13 | ✍️ 저자: 西川善司 (니시카와 젠지 / Zenji Nishikawa)

NOTE

💡 현대 그래픽스 관점에서의 발전사 (Modern Retrospective)

  • HDR 디스플레이 하드웨어 보급: 본문 연재 당시(2008~2009년)에는 SDR 모니터 출력을 위해 FP16 버퍼를 톤 매핑하는 것이 목적이었으나, 현재는 1000nit 이상의 OLED/Mini-LED HDR 디스플레이가 대중화되어 ACES(Academy Color Encoding System) 기반의 광색역 HDR10 출력이 표준화되었습니다.
  • 노출 적응 및 물리 기반 카메라: 현대 게임 엔진은 실제 카메라의 셔터 스피드, 조리개(f-stop), ISO 감도를 그대로 모사하는 물리 기반 노출(Physical Camera Exposure) 모델을 사용합니다.

📖 본문 해설

[원문 리드문] > DirectX 9세대 SM2.0 대응 GPU의 시대에 HDR 렌더링을 실현하는데 필요한 120dB 정도의 수치 표현 능력을 가진 프레임 버퍼 포맷으로 제공된 것이 각 RGB가 16비트 부동소수점(Floating-Point)(FP16)으로 표현되는 포맷이다.

현실 세계를 기록하는 데 필요한 동적 범위란?

그래서 DirectX 9세대 SM2.0 대응 GPU의 시대에 HDR 렌더링을 실현하는데 필요한 120dB 정도의 수치 표현 능력을 가진 프레임 버퍼 포맷으로 제공된 것이 각 RGB가 16비트 부동소수점(Floating-Point)(FP16)으로 표현되는 포맷이다.

FP16은 부호 1비트, 가수 10비트, 지수 5비트로 이루어진 부동소수점(Floating-Point) 포맷이다. 표현 범위는 (2의 10승)×(2의 32승)≒4.4×10^12, 즉 다이나믹 레인지 120dB가 되어(지수 5비트=2^5, 즉 32), FP16은 다이나믹 레인지로서는 현실 세계의 상당한 비율의 휘도 레인지를 기록할 수 있는 포텐셜이 있는 것을 알 수 있다.

컴퓨팅의 세계에서 부동소수점(Floating-Point) 표현이라고 하면, 「단정밀도」라고 불리는 32비트 부동소수점(Floating-Point)(FP32)과, 「배정밀도」라고 불리는 64비트 부동소수점(Floating-Point)(FP64)이 일반적이지만, 이 FP16은 주로 그래픽용으로서 제창된 것이다. 덧붙여서, 이 제창자는 SF영화 '스타워즈'의 특수 효과로 친숙한 ILM(Industrial Light & Magic)의 CG 부문으로, FP16은 이 ILM이 제창하는 HDR 영상의 오픈 소스 규격 'OpenEXR' 안에 정의되어 있다.

단정밀도의 FP32는 부호부 1비트, 지수부 8비트, 가수부 23비트로 이루어지는 부동소수점(Floating-Point) 포맷이므로, 표현 범위는 (2의 23승)×(2의 256승)=9.7×10^83이며, 다이나믹 레인지는 830dB로, 이쪽은 반대로 오버스펙 너무 많다.

이러한 경위가 있어, 최신 세대의 GPU에서는, αRGB가 각 FP16로 표현되는 64비트 버퍼(16비트×4, 이하 FP16-64비트 버퍼)가, 실시간 3D 그래픽스용, 3D게임용의 표준적인 HDR렌더링용의 버퍼의 포맷이 되고 있다.

다만, 종래의 αRGB가 각 정수 8비트로 표현되는 32비트 버퍼(이하, int8-32비트 버퍼)와 비교하면 배의 비디오 메모리를 소비해, 32비트 버퍼와 동등 퍼포먼스를 실현하려면 단위 시간당에 요구되는 대역이나 버스 성능은 2배가 된다.

이것은 DirectX 9세대/SM2.0대응 GPU의 때는, 부하적으로 상당히 엄격한 것이었지만, 최신세대의 DirectX 10세대/SM4.0대응 GPU에 있어서는, 현실적으로 문제 없게 활용할 수 있는 솔루션이 되고 있다.

HDR 렌더링의 이점은 무엇입니까?

HDR 렌더링은, 현실 세계에 가까운 다이나믹 레인지의 정보를 거의 그대로 기록해 가는 것 같은 렌더링 기법이라는 것은 이미지 할 수 있었다고 생각한다.

그렇다고는 해도 「그것이 도대체 어땠어?」라는 의문도 부상할지도 모른다. 하이 다이내믹 레인지로 렌더링했다고는 해도, 표시하는 디스플레이 장치는 종래의 1677만색의 디스플레이이기 때문에, 그대로는 표시할 수 없다.

FP16-64비트의 HDR 버퍼에 HDR 렌더링한 곳에서 결국 표시시키는 단계에서 int8-32비트 상당의 LDR 버퍼에 반올림하여 감색 처리해야 하는 것이다.

그렇다면 HDR 렌더링의 이점은 어디에 있습니까?

그것은 주로 여기에서 소개하는 세 가지 요소에 있다고 여겨진다.

(1) 음영이 보다 리얼하게 된다 (2) 노출의 시뮬레이션을 할 수 있다 (3) 눈부심의 표현이 가능하게 된다

HDR 렌더링 제일의 효능~음영이 보다 리얼하게 된다

HDR 렌더링 첫 번째 효능은 음영이 더 리얼하게 된다는 것이다.

예를 들어, 빛을 많이 반사하지 않는 재질로서 도로의 노면의 아스팔트를 예로 들어 보겠습니다.

도로의 재질로 알려진 아스팔트의 빛 반사율은 불과 7% 정도라고 한다. 이는 "거의 반사하지 않지만 전혀 반사하지 않는 것은 아니다"는 반사율이다.

예를 들어, 일반적으로 유통되는 αRGB 각 정수 8비트의 1677만색 모드에서, 8비트 정수 표현에서 가장 밝은 255의 7%는 약 18이 된다. 즉 RGB의 모든 것이 255의 백색광으로 라이팅해도, 그 셰이딩(Shading)의 결과는 RGB의 모두가 18이라고 하는 꽤 어두운 색, 계조가 되어 버린다는 것이다.

8 비트, 256 계조의 18은 이렇게 어둡다 (이미지)8 비트, 256 계조의 18은 이렇게 어둡다 (이미지)

그러나 현실 세계에서는 고휘도의 태양광을 받은 노면은 둔하게 빛나 보인다.

이는 3D 그래픽으로 바꾸면 광원의 태양이 디스플레이로 표현되는 최고 휘도의 RGB=255는 아니지만 엄청나게 높은 휘도 값을 가지고 있기 때문이다.

HDR 렌더링은 이런 'RGB의 모든 것이 255로 두드려'라는 제약을 제거하는 것이므로 기존의 렌더링 기법에서는 아무래도 묻혀 버린 음영을 띄우는 효과를 기대할 수 있다는 것이다. (계속)

"HalfLife2:Lost Coast"(VALVE,2005)에서. LDR 렌더링에서는 이렇게 전체가 어둡다."HalfLife2:Lost Coast"(VALVE,2005)에서. LDR 렌더링에서는 이렇게 전체가 어둡다.

HDR 광원을 이용한 HDR 렌더링에서는 이와 같이 묻힌 음영이 보이게 된다. 그림으로서는 전체가 밝아진 것 같은 느낌이 된다. "HalfLife2 : Lost Coast"에서는 렌더링에 FP16-64 비트 버퍼의 렌더 타겟을 채용하고있다HDR 광원을 이용한 HDR 렌더링에서는 이와 같이 묻힌 음영이 보이게 된다. 그림으로서는 전체가 밝아진 것 같은 느낌이 된다. "HalfLife2 : Lost Coast"에서는 렌더링에 FP16-64 비트 버퍼의 렌더 타겟을 채용하고있다

(트라이Z 니시카와 젠지)


🔗 연관 지식 베이스 (Wiki)

Based on Zenji Nishikawa's 3D Graphics Maniax series. Translated & Knowledge-Based for Korean Game Developers.