색과 HDR
This content is for v0.4. Switch to the latest version for up-to-date documentation.
alpha2는 명확히 정의된 하나의 색 공간에서 렌더링하고 SDR로 export합니다. 이 페이지에서는 소스 종류별로 그 공간에 들어오는 방식, 엔진이 HDR 비디오를 다루는 방식, 블렌딩과 그라디언트의 동작을 설명합니다. 다 읽고 나면 export에서 어떤 색이 나올지 알 수 있고, 색 태그가 잘못된 소스를 바로잡을 수 있습니다.
작업 공간
섹션 제목: “작업 공간”엔진은 디스플레이 기준(display-referred)의 **BT.709 원색 선형 광(linear light)**에서 합성하며, 1.0이 SDR 화이트(100니트)입니다. 합성은 항상 premultiplied로 합니다.
모든 export는 SDR BT.709입니다. 브라우저에서는 export 프레임이 BT.709, limited range의 planar I420으로 돌아옵니다. 네이티브에서는 alpha2-host가 선택한 코덱으로 8비트로 인코딩합니다.
소스 가져오기
섹션 제목: “소스 가져오기”| 소스 | 읽는 방식 |
|---|---|
| SDR 비디오 | sRGB EOTF로 디코딩합니다. 광색역 원색은 BT.709로 변환합니다. |
| 정지 이미지 | 항상 sRGB 코드 값으로 읽습니다. |
| HDR 비디오(PQ 또는 HLG) | settings.color에 따라, 선형화하고 BT.709로 변환한 뒤 SDR로 톤 매핑하거나, 거부합니다. |
| OpenEXR(확장 소스) | 파일의 원색, 또는 소스가 지정한 primaries(bt709, bt2020, p3_d65, aces_ap0, aces_ap1)의 선형 광 RGB입니다. |
| 문서 안의 색(채우기, 텍스트, 레이아웃) | straight(premultiplied가 아닌) sRGB. 0..1 범위의 { red, green, blue, alpha } 또는 CSS hex로 씁니다. |
브라우저에서 uploadRgbaImage는 premultiplied sRGB RGBA8 픽셀을 받고, uploadYuvFrame은 프로젝트의 색 파이프라인(톤 매핑을 제어)으로 planar YUV를 변환하며, alpha2/hdr-frames는 planar와 HDR VideoFrame을 업로드합니다.
HDR 소스
섹션 제목: “HDR 소스”HDR 소스를 어떻게 다룰지는 settings.color가 정합니다.
{ "width": 1920, "height": 1080, "frame_rate": { "num": 30, "den": 1 }, "sample_rate": 48000, "color": { "hdr": "tone_map", "hdr_peak_nits": 1000 }, "blend_space": "linear_light"}hdr:tone_map(기본값)은 HDR 소스를 SDR 작업 공간으로 가져옵니다.reject는 렌더링을 거부합니다.hdr_peak_nits: HDR 소스의 최대 휘도로 간주하는 값입니다. 기본값은 1000이고 100부터 10,000까지 지정할 수 있습니다. PQ는 이 값을 넘는 부분이 잘리고, HLG는 이 휘도로 표시되며, 톤 매핑은 이 값을 SDR 화이트로 가져옵니다.
톤 매핑은 ITU-R BT.2390 EETF이며, 색상(hue)을 유지하도록 각 픽셀의 가장 큰 성분에 적용합니다.
hdr이 reject이면 린터가 각 HDR 소스를 hdr_source로 알려 주므로, export가 실패하기 전에 미리 알 수 있습니다.
색 태그 바로잡기
섹션 제목: “색 태그 바로잡기”비디오의 색 정보는 보통 스트림과 프레임의 태그에서 옵니다. 태그가 없거나 잘못되었다면 소스에 color_metadata를 지정하세요. 이 값은 모든 호스트에서 프레임과 스트림의 태그를 덮어쓰므로, 모든 대상 환경이 소스를 같은 방식으로 읽습니다.
{ "id": "drone", "kind": "video", "locator": "file:///media/drone-hlg.mov", "color_metadata": { "primaries": "bt2020", "transfer": "hlg", "matrix": "bt2020_ncl", "range": "limited", "dynamic_range": "hdr" }}| 필드 | 값 |
|---|---|
primaries |
bt601, bt709, bt2020 |
transfer |
bt709, srgb, pq, hlg |
matrix |
bt601, bt709, bt2020_ncl, rgb(이미 RGB) |
range |
limited, full |
dynamic_range |
sdr 또는 hdr. transfer가 pq나 hlg일 때만 정확히 hdr |
정지 이미지는 이 값을 무시합니다. 정지 이미지는 항상 sRGB로 읽습니다.
블렌딩과 그라디언트
섹션 제목: “블렌딩과 그라디언트”settings.blend_space는 블렌드 모드를 계산하는 공간을 고릅니다.
linear_light(기본값): 물리적으로 의미 있는 블렌딩.srgb_encoded: 디자인 도구와 CSS처럼 sRGB로 인코딩된 값에서 블렌딩합니다. overlay나 soft-light 같은 대비 모드는 이 공간에서만 디자인 도구와 일치합니다.
그라디언트는 premultiplied 정지점을 선형 광에서 보간하므로, 두 색 사이의 그라디언트는 두 색의 물리적 혼합을 지나갑니다. 이펙트의 color 파라미터는 색 선택기에 보이는 그대로의 straight(premultiplied가 아닌) sRGB RGBA입니다.
