VFX 샷을 HDR(PQ)로 납품할 때: 1000nit 그레이딩과 장면 기준 값의 관계
HDR PQ 납품에서 DI가 1000nit를 목표로 한다고 들으면, 장면 선형값 1.0도 1000nit로 맞춰야 할 것처럼 느껴질 수 있습니다. 하지만 장면값과 PQ 코드값은 서로 다른 단계의 숫자입니다.
SDR 기준으로 만든 합성이 HDR 그레이딩에서 깨지지 않으려면 무엇을 지켜야 할까요? 먼저 PQ에서 nit가 어떻게 코드값이 되는지, 다음으로 Blender 5.0의 같은 입력값이 두 출력 변환에서 어떻게 달라지는지 살펴보겠습니다.
화면마다 같은 HDR 영상이 다르게 보이는 원리는 HDR과 SDR의 밝기 기준 차이와 이어집니다. 여기서는 VFX 샷을 넘길 때 장면 선형값과 1000nit 목표를 어떻게 구분할지에 집중합니다.
1. HDR PQ 납품에서 1000nit는 장면 선형값 1.0이 아닙니다
OpenEXR 같은 scene-referred 작업 데이터에서 숫자는 장면의 빛을 기준으로 합니다. 선형값 1.0은 보편적인 디스플레이 밝기나 클리핑 한계가 아닙니다. OpenEXR의 설명에서는 18% 회색을 0.18로 두는 관례를 예로 들며, 밝은 반사와 광원은 1.0을 넘는 값을 가질 수 있다고 설명합니다.
반면 PQ는 화면에서 재현할 절대 휘도를 코드값으로 표현합니다. SMPTE ST 2084의 PQ 범위는 0에서 10,000 cd/m²입니다. 이 곡선에서 코드값 1.0은 10,000nit에 해당하고, 1000nit는 약 0.7518입니다.
10-bit narrow-range 영상 코드로 계산하면 1000nit는 약 723입니다. 같은 range에서 코드 940은 PQ 상단인 10,000nit에 대응합니다. 따라서 1000nit를 10-bit 코드 최대값이나 장면 선형값 1.0과 같다고 보면 안 됩니다.
| PQ 표시 휘도 | 정규화 PQ 코드 N | 10-bit narrow-range 코드 |
|---|---|---|
| 1 nit | 0.149946 | 195 |
| 10 nit | 0.299699 | 327 |
| 100 nit | 0.508078 | 509 |
| 203 nit | 0.580689 | 573 |
| 400 nit | 0.652579 | 636 |
| 1000 nit | 0.751827 | 723 |
| 4000 nit | 0.902572 | 855 |
| 10000 nit | 1.000000 | 940 |
PQ의 nit와 코드값은 ST 2084 식으로 서로 바꿀 수 있습니다. m1=2610/16384, m2=(2523/4096)×128, c1=3424/4096, c2=(2413/4096)×32, c3=(2392/4096)×32를 사용합니다. 최종 코드값은 bit depth와 full/narrow range에 따라 다시 매핑됩니다.
휘도 L에서 PQ 코드 N을 구하는 inverse EOTF는 N=((c1+c2×(L/10000)^m1)/(1+c3×(L/10000)^m1))^m2입니다. 여기서 L은 nit 단위입니다.
코드 N에서 휘도를 구하는 EOTF는 0≤N<1일 때 L=10000×(max(N^(1/m2)-c1,0)/(c2-c3×N^(1/m2)))^(1/m1)입니다. N=1은 ST 2084의 상한인 10,000 cd/m²에 대응합니다. 아래 표의 10-bit code는 narrow-range 매핑을 적용했습니다.
ITU-R BT.2100-3 표 10의 부동소수점 신호 표현에서는 R=G=B=1.0을 HDR Reference White로 정합니다. 100% 반사 백색 카드에 대응하는 기준 휘도는 PQ 표시에서 203 cd/m²입니다. 다만 이는 해당 BT.2100 신호 표현의 규칙이지, 모든 DCC 작업공간의 scene-linear 1.0을 203 nit로 환산한다는 뜻은 아닙니다. 실제 기준 백색과 노출은 프로젝트 색 파이프라인을 확인해야 합니다.
ACES Output Transform은 scene-referred 데이터를 특정 출력 장치와 시청 조건에 맞는 display-referred 이미지로 바꿉니다. 목표 peak white와 색역이 바뀌면 렌더링 결과도 달라질 수 있습니다. 1000nit는 입력 픽셀에 곱하는 배율이 아니라, 선택한 표시 변환의 목표 조건입니다.
2. 같은 장면 선형 입력도 SDR과 PQ 출력에서 달라집니다
Blender 5.0.0에 포함된 OCIO 2.4.2 설정에는 Rec.1886 SDR과 Rec.2100-PQ HDR 표시 경로가 있습니다. 같은 Linear Rec.709 입력을 Rec.1886 / ACES 2.0과 Rec.2100-PQ / ACES 2.0 - HDR 1000 nits에 각각 넣어 출력값을 계산했습니다.

| Linear Rec.709 입력 | SDR 출력 휘도 100nit peak 기준 | PQ HDR 출력 휘도 1000nit target view |
|---|---|---|
| 0.18 | 10.0 nit | 14.5 nit |
| 0.5 | 28.0 nit | 50.5 nit |
| 1.0 | 45.8 nit | 106.6 nit |
| 2.0 | 64.0 nit | 205.8 nit |
| 4.0 | 78.7 nit | 355.0 nit |
| 8.0 | 88.6 nit | 535.1 nit |
| 16.0 | 94.3 nit | 705.2 nit |
이 설정에서는 입력 1.0이 SDR에서 약 45.8nit, PQ HDR 1000nit 뷰에서 약 106.6nit로 출력됩니다. 입력 16.0도 HDR 변환 결과는 약 705nit입니다. 1000nit target view를 골랐다고 모든 장면값이 1000nit로 바뀌는 것은 아닙니다.
이 숫자는 Blender 5.0 기본 설정의 한 사례입니다. 다른 working space, 노출, IDT, Look, ACES config, 뷰 변환에서는 달라집니다. 그래서 1.0을 특정 nit로 외워 옮기기보다, 프로젝트가 정한 변환에서 기준 회색과 하이라이트가 어디에 놓이는지 확인해야 합니다.
3. SDR 기준 합성이 HDR에서 깨지는 지점은 따로 있습니다
SDR 모니터로 합성했다는 사실만으로 샷이 망가지는 것은 아닙니다. HDR 하이라이트가 눌리는 문제는 보통 화면에 보이도록 만든 변환을 작업 중간에 bake하거나, 입력 파일의 색공간을 잘못 해석하거나, source의 하이라이트가 이미 잘린 경우에 생깁니다.
- 뷰 변환을 중간 파일에 bake한 경우: 화면 미리보기용 SDR 변환이 plate나 VFX render에 구워지면, 뒤에서 HDR용 변환을 적용해도 원래 scene-referred 관계를 되찾기 어렵습니다. Netflix VFX 가이드도 pre-grade를 VFX plate에 bake하지 않는 방향을 권고합니다.
- 하이라이트를 미리 clamp한 경우: 0~1 제한으로 불꽃·반사광 값을 잘라내면 이후 노출을 낮춰도 잘린 정보는 돌아오지 않습니다. OpenEXR의 scene-linear 값은 1.0을 넘을 수 있지만, 파일이 실제로 scene-referred인지와 transform bake 여부를 따로 확인해야 합니다.
- 8-bit display-referred 소스를 원본처럼 쓴 경우: 8-bit 이미지가 모두 부적절한 것은 아닙니다. 다만 SDR 인코딩 단계에서 하이라이트가 이미 클리핑된 요소라면 HDR grade가 원래 디테일을 복원해 주지 않습니다. 가능하면 원본 plate, scene-linear EXR, log 소스와 적용된 입력 변환을 확인합니다.
OpenEXR은 선형 장면 값을 저장하는 용도로 설계됐지만, 파일 확장자만으로 표현 방식이 보장되지는 않습니다. 색공간 태그, 채널, bit depth, 뷰 변환 bake 여부를 함께 확인해야 합니다. 32-bit float 이미지의 범위와 화면 표시의 차이는 float 이미지의 HDR 데이터 설명에서 이어서 볼 수 있습니다.
4. 넘기기 전에 색 파이프라인과 확인 순서를 합의합니다
VFX 샷을 주고받을 때는 색공간 이름만 알려주는 것으로 충분하지 않습니다. 아래 항목을 DI와 VFX가 함께 확인해야 합니다.
- 입력: 카메라/log 또는 이미 변환된 plate인지, 입력 변환(IDT)과 CDL/LUT가 무엇인지 확인합니다. 적용할 LUT는 sidecar로 받았는지, 이미지에 이미 구워졌는지도 구분합니다.
- 작업공간: scene-linear working space와 기준 노출을 맞춥니다. 컴포지터가 화면에서 보는 SDR view와 실제 전달할 이미지 데이터를 같은 것으로 취급하지 않습니다.
- 검토 화면: 작업자 monitor에 맞는 view transform으로 확인하고, HDR peak와 색은 합의된 HDR reference display나 DI 환경에서 검토합니다. SDR 화면의 밝기만 보고 PQ 하이라이트를 승인하지 않습니다.
- 출력: 최종 target이 PQ인지 HLG인지, Rec.2020 또는 P3-D65 같은 primaries/gamut, bit depth, full/narrow range, codec, metadata를 delivery spec에서 확인합니다. 실제 적용 목록은 프로젝트 문서가 우선입니다.
- 왕복 테스트: 실제 plate 한 장과 합성 render를 VFX와 DI에서 왕복해 비교합니다. Output Transform이 두 번 적용되지 않았는지, 파형과 기준 회색·하이라이트가 약속한 위치에 있는지 확인합니다.
plate가 그레이딩실에서 달라지는 문제는 VFX plate 색공간 왕복 확인 절차와 연결됩니다. Nuke에서 Viewer 변환과 Grade 노드가 놓인 순서를 확인할 때는 뷰어 변환과 Grade 위치도 함께 점검할 수 있습니다.
렌더러의 발광 강도와 화면 휘도도 같은 숫자 체계가 아닙니다. Blender Emission Strength에 nit 숫자를 그대로 넣지 않는 이유는 nit와 Emission 값의 차이에서 확인할 수 있습니다.
정리하면, 1000nit는 마지막 표시 변환에서 정합니다
처음 질문의 답은 선명합니다. scene-linear 합성값과 하이라이트는 작업공간에서 보존합니다. Netflix VFX 권고처럼 DI에 넘기는 최종 VFX 샷은 ungraded로 전달하고, PQ 표시 변환은 최종 마스터링에서 적용합니다. 다만 실제 VFX 납품 형식은 show의 DI 요구 규격을 따릅니다.
따라서 1000nit 작업은 모든 레이어를 장면 안에서 1000nit로 올리는 일이 아닙니다. 입력과 작업공간을 맞추고, 출력 transform의 target과 납품 포맷을 확인하는 일입니다.
짧게 기억하면 됩니다. 장면값은 작업공간에 두고, nit는 최종 PQ 변환에서 정합니다.
자주 묻는 질문
HDR 모니터가 없어도 1000nit PQ 납품을 준비할 수 있나요?
프로젝트가 정한 scene-referred 작업 흐름과 출력 변환을 따라 렌더할 수는 있습니다. 다만 SDR 모니터는 1000nit PQ 이미지를 그대로 정확히 보여주지 못하므로, 작업자 화면의 SDR view와 최종 HDR 검토를 구분하고 DI의 reference display에서 승인해야 합니다.
OpenEXR이면 하이라이트가 항상 살아 있나요?
그렇지 않습니다. EXR은 scene-referred float 데이터를 담을 수 있지만, 파일 안에 SDR view나 클리핑 결과가 이미 저장됐을 수도 있습니다. 색공간, bit depth, input transform, 출력 변환 bake 여부를 확인하고, 필요한 경우 원본 plate와 비교합니다.
공식 자료
vfx 잡학지식

댓글 0
첫 댓글을 남겨보세요.