Appearance
HDR 렌더링(7) ~ HDR 렌더링 프로세스
[칼럼 핵심 요약]
여기에서는 HDR 렌더링은 구체적으로 어떤 프로세스로 실현되는지를 해설해 보겠습니다. 우선 전체적인 흐름을 나타내고, 그 요소요소에 있어서, 실장에 필요한 각종 기술을 소개해 나가기로 하고 싶다.🌐 원문 링크: HDRレンダリング(7)~HDRレンダリングのプロセス (Mynavi News)
📅 원문 발행일: 2009-02-01 | ✍️ 저자: 西川善司 (니시카와 젠지 / 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) 모델을 사용합니다.
📖 본문 해설
[원문 리드문] > 여기에서는, HDR 렌더링은, 구체적으로 어떤 프로세스로 실현되는지를 해설해 가고 싶다. 우선 전체적인 흐름을 나타내고, 그 요소요소에 있어서, 실장에 필요한 각종 기술을 소개해 나가기로 하고 싶다.
여기에서는 HDR 렌더링은 구체적으로 어떤 프로세스로 실현되는지를 해설해 보겠습니다.
우선 전체적인 흐름을 나타내고, 그 요소요소에 있어서, 실장에 필요한 각종 기술을 소개해 나가기로 하고 싶다. 덧붙여 각 포인트에서는 오랫동안 주류가 되어 온 "의사 HDR 렌더링 기법"과 앞으로의 주류가 될 "리얼 HDR 렌더링 기법"의 양쪽을 언급하기로 하고 싶다.
HDR 렌더링 프로세스
HDR 렌더링은 렌더링을 HDR 차원에서 수행하는 것이 기본 컨셉이 된다.
전회까지 종래의 αRGB 각 8 비트의 int8-32 비트의 정수 버퍼로 의사적인 HDR 렌더링을 실시하는 의사 HDR 렌더링과, αRGB 각 FP16 비트의 FP16-64 비트의 부동소수점(Floating-Point) 버퍼로 실시하는 리얼 HDR 렌더링이 있다고 말했다. 또, 후반에는 VALVE가 「Half-Life2:EPISODE TWO」로 실장한 타협안적인 리얼 HDR 렌더링에 대해서도 소개했다. 여기까지 소개한 다양한 접근법의 HDR 렌더링 스타일은 어쨌든 이론을 이상적으로 구현한 HDR 렌더링은 그림 1과 같은 흐름이 된다.
그림 1: HDR 렌더링에 이상적인 렌더링 파이프라인
이 그림을 해설하자.
좌단하, 「HDR 렌더 타겟」…… 즉 HDR 렌더링에 사용하는 버퍼는, FP16-64 비트 버퍼가 표준적인 존재가 된다. DirectX 9세대 SM2.0/SM3.0 대응 GPU에서 완벽하지 않은 FP16-64비트 버퍼의 렌더 타겟에 대한 멀티 샘플 앤티앨리어싱(MSAA) 처리가 DirectX 10세대/SM4.0 대응 GPU에서는 동작 보증이 이루어지고 있기 때문에, 비디오 메모리 점유량 증가, 메모리 버스 소비를 제외하면 사용성은 거의 int8-32 비트 정수 버퍼와 변함없는 레벨로 끌어올렸다. HDR 기록을 위해 필요한 다이나믹 레인지도 실시간 3D 그래픽용으로는 필요 충분하다.
좌단 중앙, 「HDR 광원」……은 HDR 렌더링에 사용하기 위한 광원으로, int8-32 비트에 한정되지 않는 고휘도인 광원을 취급할 필요가 나온다.
좌단 위, 「HDR 텍스처」는, HDR 렌더링시에 3D 모델등에 적용하는 텍스처도 HDR 포맷에 대응하는 것……을 말하고 있다.
3D 모델에 붙이는 것 같은 이미지 텍스처(데칼 텍스처)는, 통상의 int8-32비트의 LDR 텍스처이어도 되지만, 주위의 비쳐 정경을 나타낸 환경 맵이나, 텍스처 자체를 발광물로서 취급하는 「자기 발광 텍스처」에 대해서는 HDR 텍스처의 사용이 바람직하다. 구체적으로는 이 경우도 FP16-64비트의 텍스처가 이상적이다.
다만, FP16-64비트의 HDR 텍스처는 그대로는 압축을 할 수 없기 때문에 취급이 어렵다. 또, FP16-64비트의 HDR 텍스쳐 읽기의 빈발은 퍼포먼스에 큰 영향을 주기 때문에, 3D게임등의 경우는 그다지 비주얼 품질에 영향이 크다고 판단되는 텍스처 이외는, int8-32비트의 LDR 텍스처에 HDR 정보를 포함시키는, 이른바 의사 HDR 텍스처를 이용하는 경우가 많은 것 같다. 이 실장 방법에 대해서는 후술한다.
따라서, HDR 텍스처 또는 HDR 광원을 사용하여 HDR 렌더링을 수행하여 HDR 렌더링 타겟에 HDR 프레임이 생성된다. 완성된 프레임이 'HDR 프레임 버퍼'다.
그 후,이 HDR 프레임을 검증하여 HDR 프레임 내의 소정의 휘도 이상의 고휘도 부분을 추출하여, 블룸 효과 및 글레어 효과의 이펙트 프레임을 생성한다. 이것이 「HDR블룸/글레어」의 처리계이다.
'HDR 톤 매핑'은 HDR 프레임을 일반적인 디스플레이 기기에 표시하기 위한 처리를 하는 곳이다. 간단히 말하면 감색 처리와 같은 것이지만, 전절에서 말했듯이 여기서 그 프레임의 평균 휘도 등을 산출하고(≒히스토그램을 구한다), 그 프레임에 적합한 휘도 밸런스로 조정하는 것으로, 눈이나 카메라의 자동 노출 보정 효과를 연출할 수 있다.
여기서는, 이 도 1에 나타낸, HDR 렌더링 파이프라인의 각 공정에 대한 포인트를 해설해 나가기로 한다. (계속)
(트라이Z 니시카와 젠지)