API
HDR 컬러 피커(HDR color picker)

HDR 렌더링(High Dynamic Range Rendering)

스탠다드 렌더링에서는 픽셀의 빨간색, 초록색, 파란색 값이 각각 0–1 범위의 분수로 표시됩니다. 0 은 강도가 영(0)임을 나타내고 1 은 디스플레이 장치의 최대 강도를 나타냅니다. 이 방법은 사용하기에 직관적이지만 실제 씬에서 조명이 작동하는 방법을 정확하게 나타내지 않습니다. 사람의 눈은 주변 조명 상태에 적응하는 경향이 있으므로, 불빛이 어두운 방 안에서 흰색으로 보이는 물체가 사실은 대낮의 밝은 빛 아래에서 회색으로 보이는 물체보다 밝지 않을 수 있습니다. 또한 사람의 눈은 범위의 높은 쪽보다 낮은 쪽에서 밝기 차이에 더 민감합니다.

픽셀 값의 범위가 실제 씬의 광원 레벨을 더 정확하게 표현하도록 렌더링을 조정하면 더욱 그럴듯한 시각 효과를 낼 수 있습니다. 이렇게 얻은 값도 결국에는 디스플레이 장치에서 사용 가능한 범위로 다시 매핑해야 하지만 Unity 의 이미지 이펙트와 같은 중간 계산에서는 실제와 가까운 결과를 얻을 수 있습니다. 그래픽스를 내부적으로 표현할 때 0–1 범위 밖의 값을 사용할 수 있도록 하는 것이 HDR(High Dynamic Range) 렌더링의 본질입니다.

HDR 작업

HDR 은 Camera 컴포넌트의 설정을 사용하여 각 카메라별로 활성화됩니다.

HDR 이 활성일 때는 씬이 0–1 범위 밖의 픽셀 값을 지원할 수 있는 HDR 이미지 버퍼로 렌더링됩니다. 그런 다음, 이 버퍼는 HDR 블룸 등의 이미지 이펙트를 사용하여 후처리됩니다. 톤 매핑 이미지 이펙트는 HDR 이미지를 전송하여 표시할 수 있는 표준 LDR(Low Dynamic Range) 이미지로 변환합니다. LDR 변환은 이미지 이펙트 파이프라인에서 언젠가는 적용해야 하지만 차후에 LDR 전용 이미지 이펙트를 적용할 예정이면 마지막 단계가 아니어도 됩니다. 편의상 일부 이미지 이펙트는 HDR 효과를 적용한 후 자동으로 LDR 로 변환할 수 있습니다(아래 스크립팅 참조).

톤 매핑

톤 매핑은 HDR 값을 LDR 범위에 다시 매핑하는 프로세스입니다. 다양한 기술이 있고 프로젝트마다 적합한 기술이 다를 수 있습니다. Unity 에는 다양한 톤 매핑 이미지 이펙트가 포함되었습니다. 이러한 효과를 사용하려면 Assets > Import Package > Effects 를 선택하고 씬의 카메라를 선택한 다음 Component > Image Effects >ToneMapping 을 선택합니다. 톤 매핑 타입에 대한 자세한 설명은 이미지 이펙트 문서에서 확인할 수 있습니다.

HDR로 렌더링된 특별히 밝은 씬. 톤 매핑 없이는 대부분의 픽셀이 범위를 벗어난 것처럼 보입니다.
HDR로 렌더링된 특별히 밝은 씬. 톤 매핑 없이는 대부분의 픽셀이 범위를 벗어난 것처럼 보입니다.
위와 동일한 씬이지만 이번에는 톤 매핑 효과로 대부분의 강도가 보다 그럴듯한 범위 안에 있습니다. 적응적 톤 매핑은 위 이미지와 이 이미지를 블렌드하여 캡처 매체(눈, 카메라 등)의 적응성도 시뮬레이션할 수 있습니다.
위와 동일한 씬이지만 이번에는 톤 매핑 효과로 대부분의 강도가 보다 그럴듯한 범위 안에 있습니다. 적응적 톤 매핑은 위 이미지와 이 이미지를 블렌드하여 캡처 매체(눈, 카메라 등)의 적응성도 시뮬레이션할 수 있습니다.

HDR 블룸 및 글로우

HDR 을 사용하면 후처리 시 훨씬 더 강력한 제어가 가능합니다. LDR 블룸은 픽셀 강도가 1.0 미만인 경우에도 씬의 여러 영역을 흐릿하게 만드는 부작용이 있습니다. HDR 을 사용하면 강도가 1 보다 큰 영역에만 블룸을 적용할 수 있습니다. 그러면 씬에서 극도로 밝은 요소만 인근 픽셀로 번져서 훨씬 더 보기 좋은 결과가 얻어집니다. 내장된 ‘블룸 및 렌즈 플레어’ 이미지 이펙트는 이제 HDR 도 지원합니다. 이 효과를 카메라에 연결하려면 Assets > Import Package > Effects 를 선택하고 씬에서 카메라를 선택한 다음 Component > Image Effects > Bloom 을 선택해야 합니다. ‘블룸’ 효과에 대한 자세한 설명은 이미지 이펙트 문서에서 확인할 수 있습니다.

씬의 자동차 창에서 반사되는 햇빛의 강도는 값이 1.0보다 훨씬 큽니다. 카메라에 HDR이 사용되어 이런 강도를 잡아내는 경우에만 블룸이 이러한 부분을 감지하고 글로우 효과를 낼 수 있습니다.
씬의 자동차 창에서 반사되는 햇빛의 강도는 값이 1.0보다 훨씬 큽니다. 카메라에 HDR이 사용되어 이런 강도를 잡아내는 경우에만 블룸이 이러한 부분을 감지하고 글로우 효과를 낼 수 있습니다.
카메라에 HDR이 사용되지 않는 경우 자동차 창은 글로우 효과가 없는 상태로 유지됩니다. 글로우 효과를 더하는 유일한 방법은 강도 임계값을 낮추는 것이지만 그렇게 하면 이미지에서 원치 않는 부분에서도 글로우 효과가 나타나기 시작합니다.
카메라에 HDR이 사용되지 않는 경우 자동차 창은 글로우 효과가 없는 상태로 유지됩니다. 글로우 효과를 더하는 유일한 방법은 강도 임계값을 낮추는 것이지만 그렇게 하면 이미지에서 원치 않는 부분에서도 글로우 효과가 나타나기 시작합니다.

HDR 의 장점

  • 강도가 높은 영역에서 컬러 손실이 발생하지 않음
  • 블룸 및 글로우 지원 개선
  • 단조로운 조명 영역에서 줄무늬 감소

HDR 의 단점

  • 부동 소수점 렌더 텍스처 사용(렌더링이 느리고 더 많은 VRAM 필요)
  • 하드웨어 안티앨리어싱 지원 안 함(하지만 안티앨리어싱 이미지 이펙트를 사용하여 가장자리를 매끄럽게 할 수 있음)
  • 일부 하드웨어에서 지원되지 않음

사용 시 주의사항

포워드 렌더링

포워드 렌더링 모드에서 HDR 은 이미지 이펙트가 있는 경우에만 지원됩니다. 성능을 고려해야 하기 때문입니다. 이미지 이펙트가 없으면 톤매핑이 존재하지 않고 강도 잘림(intensity truncation)이 발생합니다. 이 상황에서는 HDR 이 지원되지 않는 백버퍼에 씬이 직접 렌더링됩니다.

디퍼드 렌더링

HDR 모드에서 라이팅 버퍼는 부동 소수점 버퍼로도 할당되므로 라이팅 버퍼에서 줄무늬가 감소합니다. 디퍼드 렌더링에서는 이미지 이펙트가 없어도 HDR 이 지원됩니다.

스크립팅

ImageEffectTransformsToLDR 특성을 이미지 이펙트 스크립트에 추가하여 타겟 버퍼가 HDR 이 아닌 LDR 이어야 함을 나타낼 수 있습니다. 즉, 기본적으로 스크립트가 HDR 이미지 이펙트를 적용한 후 자동으로 LDR 로 변환될 수 있음을 의미합니다. 자세한 내용은 이미지 이펙트 작성에서 참조할 수 있습니다.

참고 항목

HDR 컬러 피커

API
HDR 컬러 피커(HDR color picker)