하이다이내믹레인지 렌더링

HDRR의 예. **하이다이내믹레인지 렌더링**(High-dynamic-range rendering, **HDRR**) 또는 **HDR 렌더링**은 3차원 컴퓨터 그래픽스 분야에서 사용되는 기술의 명칭으로 더 폭넓은 동적 범위(다이내믹 레인지)를 활용한 렌더링을 말한다. 이를 사용함으로써 비디오 게임이나 컴퓨터 애니메이션, 디지털 특수효과 분야 등에서 그동안 사용했던 조명 모델에 비해 훨씬 사실적인 표현이 가능해진다. 종래의 조명 모델을 이용한 렌더링은 HDRR과 구분하여 SDRR(Standard Dynamic Range Rendering)이라고 부른다.
# 개요
기존의 조명모델은 디스플레이 장치에서 표현할 수 있는 최소 밝기가 0.0, 최대 밝기가 1.0이라 할 때, 각 채널의 명암 레벨 표현에 0.0~1.0 사이의 8비트 고정 소수점 값을 사용했다. **하이 다이내믹 레인지 렌더링**은 명암 레벨을 표현하는 데 있어, 내부적으로 16비트나 32비트, 64비트의 더 많은 단계를 갖는 부동소수점 데이터를 사용하여 디스플레이 장치가 표현할 수 있는 것보다 더 크거나 작은 밝기 값을 세밀하게 표현할 수 있도록 하였다.확인날짜=2007-05-20확인날짜=2007-05-20
# 다른 이름
하이 다이내믹 레인지 렌더링은 다른 말로, **HDRR**, **HDR 렌더링**, **하이 다이내믹 레인지 라이팅**이라고 한다. 혹은 간단히 **HDR**이라고 말한다. 반면, 종래의 조명 모델을 이용한 렌더링은 HDRR과 구분하여 LDRR(Low Dynamic Range Rendering) 혹은 표준 라이팅(standard lighting)이라고 부른다.
# 역사
주전자. 원작자 플리커의 snogglethorpe. 사진 촬영 분야에서 사용되는 기술인 하이 다이내믹 레인지 이미징 (HDRI)는 1985년 그렉 워드가 라디언스라는 이름의 렌더링 및 “라이팅 시뮬레이션” 소프트웨어에서 처음으로 도입하였다. 이 소프트웨어는 높은 다이내믹 레인지를 유지할 수 있는 파일 포맷을 처음으로 선보였다. 당시, 한 픽셀을 RGB 24비트와 지수(Exponent) 8비트를 붙여 픽셀 당 32비트 RGBE 포맷으로 표현하였다.url-status=dead HDRI는 10여 년 전에 나온 용어였지만, 당시 컴퓨터의 계산 능력, 기록 장치, 이미지 캡처 방법 등의 한계 및 미비로 인해, 각광을 받지 못하였다. HDRI의 실제 적용이 이루어진 것은 최근의 일이다.ISBN=0125852630 1997년에 이르러서, 그래픽스 엔지니어 폴 데베벡(Paul Debevec) 이 SIGGRAPH에 여러 장의 사진으로부터 하이 다이내믹 레인지 맵을 복원하는 방법에 대한 논문(*Recovering high dynamic range radiance maps from photographs*)을 발표하였다.url=http://www.debevec.org/Research/HDR 다음 해에는 합성된 오브젝트를 실제 씬에 넣는 방법에 관한 논문(*Rendering synthetic objects into real scenes*)을 발표하였다.url=http://www.debevec.org/Research/IBL/. 이 두 논문이 HDR “라이트 프로브”(light probe)를 생성하고 이 프로브를 렌더링된 씬에 적용하는 방법에 대한 기반이 되었다. 그 이후, HDRI 와 HDRL (High Dynamic range image-based lighting)은 3차원 사물을 실제 주변 환경에 조화롭게 집어 넣어 3차원 씬을 만들어야 할 상황 하에서 널리 사용되고 있다. 이 때, 사실적인 라이팅을 표현하기 위해 “라이트 프로브” 데이터를 사용한다. 게임 응용쪽에서는 2003년 E3 직후, 밸브 소프트웨어 사에서 소스 엔진이라는 이름의 렌더링 기법을 가지고, 도시 풍경을 하이 다이내믹 레인지 하에 렌더링하는 데모 동영상을 공개한 바 있다. 2004년 E3가 다시 개최되어 에픽 메가게임스의 언리얼 엔진 3 및 2005년에 하프라이프 2: 로스트 코스트를 선보이자, HDR 렌더링이 비로소 많은 주목을 받기 시작했다.
# 특징 및 한계

## 고도의 대비 하에서의 디테일 보존
HDRR의 최대의 장점은 재현된다는 씬의 밝은 부분과 어두운 부분이 정확히 재현된다는 점이다. HDR없이는 너무 어두운 부분은 휘도 값이 짤려서 흑색이 되며, 너무 밝은 부분은 값이 짤려서 백색이 된다. 이 때, 순수 흑색 및 순수 백색은 부동소수점 값 0.0 및 1.0으로 하드웨어적으로 표현된다. 그래픽스 프로세서 제조 회사 엔비디아는 HDRR 의 장점을 세 가지로 요약하고 있다.쪽= 3: * 밝은 사물들은 진짜로 밝게 보인다. * 어두운 사물들은 진짜로 어둡게 보인다. * 밝은 사물이거나 어두운 사물이든 디테일이 잘 보인다. 오른쪽 그림은 셰이더 모델 3.0을 이용한 크라이텍의 파크라이 게임 패치를 적용한 장면이다. HDR 렌더링한 장면(왼쪽 그림)을 보면, 라이트 블룸 기법을 사용되어, 바깥에서 들어오는 밝은 빛이 들어오는 그곳에서 청색을 발광하고 있는 것을 볼 수 있다. 이 빛 때문에 밑바닥의 수면쪽의 디테일도 세세하게 볼 수 있으며, 전체적으로 장면이 생동감이 있는 것을 알 수 있다. 또한 장면의 어두운 부분도 로 다이내믹 레인지 렌더링한 그림과 비교했을 때 별다른 디테일의 차이가 없는 것을 볼 수 있다. LDR 렌더링한 장면(오른쪽 그림)을 보면 빛이 들어오는 곳에서, 아무런 발광도 일어나지 않으며, 전체적으로 장면이 흐리멍텅하게 보이는 것을 알 수 있다.
## 광량의 정확한 보존
HDRR없이는, 태양광 및 대부분의 빛이 휘도 값이 짤려 – 클리핑되어 - 100% 값을 가진다. (프레임버퍼에서 1.0 값을 가진다.) 만약 이 빛이 반사된다면 1이나 1이하의 값을 가져야 한다. 반사된 값은 0에서 1사이 값을 갖는데, 이것은 반사된 값이 0에서 1사이 값을 가지는 반사도(reflectness)와 곱해지기 때문이다. 이러한 계산은 씬을 무디고 밋밋하게 보이게 한다. HDRR을 이용하면, 태양광 및 기타 빛들이 프레임버퍼에서 1.0값을 넘는 적절한 값으로 표현된다. 태양광에는 보통 60000이라는 값을 준다. 이 빛이 반사되더라도(매우 반사도가 낮은 물체에 대해서라도) 매우 높은 값을 유지하게 된다. 렌더링될 때, 이 값은 백색으로 클리핑되거나 적절히 톤 매핑된다. 같은 식으로, 빛이 투명한 물체를 투과할 때에는, 투과하는 빛은, 들어가기 전에 비해 낮은 밝기 값을 갖는다. (영문판 위키백과의 예제 그림을 참고하라.) 로 다이내믹 레인지 렌더링 하에서는, 비교적 적은 빛이 스테인드 글라스를 통과해 전체적으로 씬이 어둡게 보인다. 그 까닭은 빛이 투명한 물체를 투과할 때에는, 투명한 물체가 광원(light source)으로 간주되기 때문이다. 예를 들어 스테인드 글라스가 40%의 빛을 막는다고 가정하자. 로 다이내믹 레인지 렌더링 하에서는, 빛의 밝기값이 최대 1.0이기 때문에, 스테인드 글라스 건너쪽에서 0.6의 밝기를 갖는 광원이 비추고 있는 것을 의미한다. 하이 다이내믹 레인지 렌더링 하에서는 빛의 밝기값이 100이고, 스테인드 글라스 건너쪽에서 60의 밝기를 갖는 광원이 비추고 있는 것을 의미한다. 예제 그림은 HDRR#Accurate_preservation_of_light (영어 위키백과)를 참고하라.
## 한계
인간의 눈은, 약 1,000,000:1이라는, 매우 폭넓은 다이내믹 레인지를 인지한다. 이것은 홍채의 조절과 약간 시간이 걸리는(밝음에서 어둠으로 변화를 할 때 볼 수 있고 없음에 대한 지연) 느린 속도의 화학적 변화에 의해 힘입은 바 크다. 보통 때는, 인간의 눈이 인지하는 다이내믹 레인지는 약 10,000:1 정도이다. 하지만 이 정도도 현재 디스플레이 기술로서 도달할 수 있는 값보다는 훨씬 큰 다이내믹 레인지이다. (음화) 흑백 필름의 다이내믹 레인지는 약 4096:1(12스톱)이다. 컬러 슬라이드 필름은 대개 64:1(6스톱)이다. 컬러 인쇄도 약 64:1이다. 평균적으로 대부분은 컴퓨터 모니터는 약 500:1 내지 1,000:1의 명암비를 갖는다. PDP는 약 10,000:1 명암비를 갖는다. 하지만, 이러한 상업용 디스플레이들의 명암비들은 암실에서 흰색만 표시한 화면과 검은색만 표시한 화면을 비교해 측정한 것일 뿐이다. 보통의 환경에서의 동시(simultaneous) 명암비는 이보다 훨씬 낮다. HDR을 표현해주는 모니터가 몇몇 있는데, 브라이트 테크놀로지 사의 HDR 모니터가 한 예이다. 밝기 3000 cd/m2일 때, 체스판 무니를 두고 측정한 결과, 동시(simultaneous) 명암비는 약 200,000:1이다. 이 값은 ANSI9 명암비 60,000:1에 해당하는 것이다. TFT LCD 화면(보통 1000:1)의 약 60배에 이르는 것이며, 밝기는 보통의 CRT나 TFT에 비해 10배나 밝은 것이다. 이 사실은, HDR 시스템이, 풀 다이내믹 레인지를, 렌더링 후에 화면에 보여지는 다이내믹 레인지로 매핑할 필요가 있다는 것을 의미한다. 이런한 제약을 극복하기 위하여 현재는 톤 매핑과 블룸이라는 기법을 사용한다. 종종 두 가지 기법을 같이 쓰기도 한다.
### 톤 매핑
톤 매핑 컴퓨터 그래픽스 렌더링 분야에서 말하는 톤 매핑이란, 하이 다이내믹 레인지의 컬러 값들을 컴퓨터 디스플레이 장치에 표현 가능한 로 다이내믹 레인지로 매핑하는 기법을 말한다. (단, 라이팅 계산은 하이 다이내믹 레인지에서 일어난다.) 일반적으로, 톤 매핑은 비선형적이다. 다시 말해, 흑색 영역에서는 충분한 레인지를 보존하고, 백색으로 갈수록 다이내믹 레인지를 제한한다. 이 기법은 사람이 봐서 전체적으로 디테일 및 대비가 좋은 이미지를 만들어 낸다. 여러 가지 톤 매핑 기법이 존재한다. 컴퓨터 게임 등에 응용되는 간단한 실시간 기법도 있으며, 인간의 시각 인지 체계를 모방한 복잡한 기법도 있다. 톤 매핑은 종종 풀 스크린 효과와 결합된다. 예를 들어, 공중에 떠다니는 먼지나 동굴에 들어온 햇빛 등을 나타내주는 효과 같은 것들이다. 톤 매핑 예제는 영문판 위키백과를 참고하라.
### 라이트 블룸
블룸 (셰이더 효과) 라이트 블룸 기법은 씬에서의 밝은 스팟 부분을 과장하는 기법이다. 예를 들어 배경의 밝은 광선이 빼꼼히 사이사이로 삐져 나오게 하는 것이다. 이것은 실제 보다 밝은 스팟 부분을 더 밝게 보이게 하는 착각을 불러 일으킨다.
# 응용

## HDRR을 지원하는 그래픽 카드
**게임용 그래픽 카드** {| class="wikitable" |- ! !셰이더 모델 2 호환 (2.0, 2.0a, 2.0b 버전 포함) |- !ATI |R300 시리즈: 9500, 9500 Pro, 9550, 9550 SE, 9600, 9600 SE, 9600 AIW, 9600 Pro, 9600 XT, 9650, 9700, 9700 AIW, 9700 Pro, 9800, 9800 SE, 9800 AIW, 9800 Pro, 9800XT, X300, X300 SE, X550, X600 AIW, X600 Pro, X600 XT, ATi Hollywood (Wii) R420 시리즈: X700, X700 Pro, X700 XT, X800, X800SE, X800 GT, X800 GTO, X800 Pro, X800 AIW, X800 XL, X800 XT, X800 XTPE, X850 Pro, X850 XT, X850 XTPE, |- !엔비디아 |지포스 FX (PCX 포함): 5100, 5200, 5200 SE/XT, 5200 Ultra, 5300, 5500, 5600, 5600 SE/XT, 5600 Ultra, 5700, 5700 VE, 5700 LE, 5700 Ultra, 5750, 5800, 5800 Ultra, 5900 5900 ZT, 5900 SE/XT, 5900 Ultra, 5950, 5950 Ultra |- !S3 그래픽스 |델타 크롬: S4, S4 Pro, S8, S8 Nitro, F1, F1 Pole 감마 크롬: S18 Pro, S18 Ultra, S25, S27 |- !SiS |Xabre: Xabre II |- !XGI |볼라리: V3 XT, V5, V5, V8, V8 Ultra, Duo V5 Ultra, Duo V8 Ultra, 8300, 8600, 8600 XT |- ! !셰이더 모델 3.0 호환 |- !ATI |R520 시리즈: X1300 HyperMemory Edition, X1300, X1300 Pro, X1600 Pro, X1600 XT, X1650 Pro, X1650 XT, X1800 GTO, X1800 XL AIW, X1800 XL, X1800 XT, X1900 AIW, X1900 GT, X1900 XT, X1900 XTX, X1950 Pro, X1950 XT, X1950 XTX, ATi Xenos (X360), ATi Hollywood? |- !엔비디아 |지포스 6: 6100, 6150, 6200, 6200 TC, 6500, 6600, 6600 LE, 6600 DDR2, 6600 GT, 6610 XL, 6700 XL, 6800, 6800 LE, 6800 XT, 6800 GS, 6800 GTO, 6800 GT, 6800 Ultra, 6800 Ultra Extreme 지포스 7: 7300 LE, 7300 GS, 7300 GT, 7600 GS, 7600 GT, 7800 GS, 7800 GT, 7800 GTX, 7800 GTX 512MB, 7900 GS, 7900 GT, 7950 GT, 7900 GTO, 7900 GTX, 7900 GX2, 7950 GX2, 7950 GT |- ! !셰이더 모델 4.0 호환 |- !엔비디아 |지포스 8웹사이트= 지포스 8 Series: 8800 Ultra, 8800 GTS, 8800 GTX, 8500 GT, 8600 GT, 8600 GTS |- !ATI |R600 시리즈2007년 5월 14일부터: HD 2900 XTX, HD 2900 XT, HD 2600 XT, HD 2600 Pro, HD 2400 ? |} **워크스테이션용 그래픽 카드** {| class="wikitable" |- ! !셰이더 모델 2 호환 (2.0, 2.0a, 2.0b 버전 포함) |- !ATI | 파이어GL: Z1-128, T2-128, X1-128, X2-256, X2-256t, V3100, V3200, X3-256, V5000, V5100, V7100 |- !엔비디아 | 쿼드로 FX: 330, 500, 600, 700, 1000, 1100, 1300, 2000, 3000 |- ! !셰이더 모델 3.0 호환 |- ! ATI | 파이어GL: V7300, V7350 |- ! 엔비디아 | 쿼드로 FX: 350, 540, 550, 560, 1400, 1500, 3400, 3450, 3500, 4000, 4400, 4500, 4500SDI, 4500 X2, 5500, 5500SDI |- !3D랩스 |Wildcat Realizm: 100, 200, 500, 800 |}