ACEScg vs sRGB: 작업용 색공간과 출력용 색공간의 차이

    ACEScg SRGB 썸네일

    VFX나 3D 작업을 하다 보면 ACEScg와 sRGB라는 두 가지 색공간 이름을 자주 듣게 되는데요, 이 둘은 이름만 비슷할 뿐 역할이 완전히 다릅니다. 하나는 작업용이고 하나는 출력용이라는 사실부터 먼저 짚고 넘어가겠습니다.

    색공간을 이루는 3가지 요소부터 이해하기

    색공간이라는 말이 막연하게 느껴진다면, 이것을 “색을 담는 그릇의 설계도” 정도로 생각하면 편합니다. 그릇의 설계도를 정하려면 세 가지를 정해야 하는데, 색공간도 똑같습니다.

    • 프라이머리(Primaries): 빨강, 초록, 파랑 각각이 정확히 어떤 색인지 정하는 좌표입니다. 물감 세트를 살 때 “빨강”이라고 다 같은 빨강이 아니듯, 색공간마다 기준이 되는 R·G·B의 실제 위치가 다릅니다. 이 세 점을 이으면 그 색공간이 표현할 수 있는 색의 범위, 즉 색역(Gamut)이 만들어집니다.
    • 화이트포인트(White Point): R, G, B를 몇 대 몇으로 섞어야 순백색이 되는지를 정하는 기준입니다. 카메라의 화이트밸런스를 맞추는 것과 비슷한 개념이라고 보면 됩니다.
    • 전달함수(Transfer Function): 저장된 숫자와 실제 밝기가 어떤 곡선으로 연결되는지를 정의합니다. 숫자 0.5가 실제로 얼마나 밝은 빛을 의미하는지를 정하는 규칙인 셈이죠. 이 부분이 궁금하다면 시리즈 1편의 감마 이야기를 함께 보시면 이해가 훨씬 쉬워집니다.

    ACEScg와 sRGB는 이 세 가지 요소가 전부 다릅니다. 그래서 “그냥 이름만 다른 색공간”이 아니라 “완전히 다른 설계도를 가진 그릇”이라고 이해하는 게 정확합니다.

    ACEScg와 sRGB, 정확히 무엇이 다를까 🎨

    먼저 sRGB부터 보겠습니다. sRGB는 우리가 쓰는 대부분의 모니터, 인터넷 이미지, 카메라 JPG 파일의 표준 색공간입니다. 프라이머리는 Rec.709라는 방송·디스플레이 표준을 따르고, 전달함수는 이름 그대로 sRGB 곡선을 씁니다. 이 곡선은 사람 눈이 어두운 부분의 밝기 차이를 더 예민하게 느낀다는 특성을 반영해서, 어두운 영역에 더 많은 숫자 값을 할당해놓은 구조입니다.

    반면 ACEScg는 AP1이라는 훨씬 넓은 프라이머리를 쓰고, 전달함수는 곡선 없이 완전한 리니어(Linear)입니다. 리니어라는 건 숫자와 실제 빛의 밝기가 1:1 비례 관계라는 뜻입니다. 빛의 양이 2배가 되면 저장되는 숫자도 정확히 2배가 되는, 물리 법칙 그대로를 따르는 방식입니다.

    구분sRGBACEScg
    용도디스플레이(출력)용워킹(작업)용
    프라이머리Rec.709AP1
    색역 크기상대적으로 좁음매우 넓음
    전달함수sRGB 감마 곡선리니어(곡선 없음)
    최대 표현 범위화면에 보일 수 있는 밝기까지훨씬 높은 밝기값(HDR)까지
    주 사용처모니터 출력, 웹 이미지, JPG렌더링, 라이팅, 합성 내부 연산

    워킹 스페이스와 디스플레이 스페이스는 다른 개념입니다

    여기서 가장 중요한 개념 정리가 나옵니다. 워킹 스페이스(Working Space)는 렌더링이나 합성 프로그램 내부에서 색을 계산하는 공간이고, 디스플레이 스페이스(Display Space)는 그 결과를 모니터에 실제로 보여줄 때 쓰는 공간입니다.

    비유하자면 워킹 스페이스는 요리사가 주방에서 재료를 다루는 공간이고, 디스플레이 스페이스는 손님 앞에 접시로 나가는 최종 플레이팅입니다. 주방 안에서는 재료 본연의 성질(넓은 색역, 리니어한 빛의 양)을 최대한 그대로 유지해야 정확한 조리가 가능하고, 손님 앞에는 보기 좋고 화면 표준에 맞는 형태로 변환해서 내보내야 합니다.

    ACEScg는 주방(워킹 스페이스), sRGB는 접시(디스플레이 스페이스)에 해당한다고 생각하면 두 개념이 왜 애초에 비교 대상이 아닌지 감이 잡히실 거예요. 물론 sRGB도 얼마든지 이론상 워킹 스페이스로 쓸 수는 있지만, 아래에서 설명할 문제들 때문에 VFX 파이프라인에서는 거의 쓰지 않습니다.

    왜 렌더링과 합성은 넓고 리니어한 공간에서 해야 할까

    렌더러는 빛을 물리적으로 시뮬레이션합니다. 빛 두 개를 더하거나, 반사·굴절을 계산하거나, 노출값을 조절하는 모든 연산이 사실은 덧셈과 곱셈입니다. 그런데 이 연산이 정확하게 성립하려면 숫자와 실제 밝기가 비례 관계여야 합니다. 즉 리니어 공간이어야 한다는 뜻입니다.

    만약 sRGB처럼 곡선이 걸린 공간에서 빛 두 개를 더하면 어떻게 될까요? 실제 물리 법칙과는 다른 결과가 나옵니다. 밝은 부분은 실제보다 더 밝게, 특정 영역은 계산이 왜곡되면서 색이 이상하게 번지거나 뭉개지는 현상이 생깁니다. 이 내용은 시리즈 2편에서 다룬 리니어 워크플로우의 핵심 원리와 정확히 같은 이야기입니다.

    색역이 넓어야 하는 이유는 조금 다릅니다. 라이팅 작업 중에는 실제 존재하는 색보다 훨씬 채도가 높거나 밝은 빛(네온사인, 강한 컬러 조명 등)을 다루게 되는 경우가 많은데, sRGB처럼 좁은 색역에서는 이런 색을 담을 자리가 부족합니다.

    색역이 좁을 때 생기는 문제: 클리핑과 컬러 시프트

    색역이 좁은 공간에서 채도 높은 색을 다루면 두 가지 문제가 생깁니다.

    • 클리핑(Clipping): 그릇의 크기보다 넘치는 물을 부으면 넘쳐흘러 사라지는 것처럼, 색공간이 표현할 수 있는 채도의 한계를 넘어서는 색 정보가 잘려나가 버립니다. 한번 잘려나간 색 정보는 나중에 되돌릴 수 없습니다.
    • 컬러 시프트(Color Shift): 특히 여러 번의 합성 연산(블렌딩, 색보정, 리사이즈 등)을 좁은 색공간 안에서 반복하면, 원래 의도한 색상이 미묘하게 다른 색으로 밀려나는 현상이 누적됩니다. 채도가 높은 빨강, 초록 계열 조명에서 특히 두드러집니다.

    ACEScg처럼 넓은 색역에서 작업하면 이런 극단적인 색도 여유 있게 담아낼 자리가 있기 때문에, 나중에 최종 출력 단계에서만 화면에 맞게 압축해주면 됩니다. 처음부터 좁은 그릇에 담아버리면 압축이 아니라 손실이 발생하는 것이죠.

    텍스처 입력 변환: sRGB에서 ACEScg로 넘어갈 때 실제로 일어나는 일

    사진이나 페인팅으로 만든 컬러 텍스처(디퓨즈, 알베도 맵 등)는 보통 sRGB 공간의 이미지 파일로 저장되어 있습니다. 이 텍스처를 ACEScg 워킹 스페이스에서 쓰려면 소프트웨어가 다음 두 단계 변환을 자동으로 수행합니다.

    1. 전달함수 역변환: sRGB 곡선이 걸려 있던 픽셀 값을 곡선을 풀어서 리니어 값으로 되돌립니다. 이 단계가 없으면 텍스처가 실제보다 밝고 색이 날아간 것처럼 렌더링됩니다.
    2. 프라이머리 변환(색역 매핑): Rec.709 좌표계에 있던 색 정보를 AP1 좌표계로 옮기는 수학적 매트릭스 연산을 거칩니다. 이 과정에서 원래 색상 자체가 바뀌는 건 아니고, 같은 색을 다른 좌표계의 숫자로 다시 표현하는 것뿐입니다.

    즉 sRGB에서 ACEScg로 넘어가는 것은 “색을 더 좋게 만들어주는” 마법이 아니라, 단지 좌표계와 곡선을 바꿔서 같은 색을 정확하게 옮겨 담는 변환 작업입니다. Maya 등에서 텍스처의 컬러 스페이스를 어떻게 지정해야 하는지는 시리즈 7편, 8편, 9편에서 노멀맵이나 러프니스맵처럼 예외적으로 Raw로 둬야 하는 경우까지 자세히 다루고 있습니다.

    최종 출력: 다시 sRGB로 나가는 과정

    렌더링과 합성이 모두 끝나면, ACEScg 리니어 공간에 있던 이미지를 다시 모니터가 이해할 수 있는 형태로 바꿔줘야 합니다. 이 과정을 흔히 “디스플레이 변환” 또는 ACES 파이프라인에서는 RRT(Reference Rendering Transform)와 ODT(Output Device Transform)라고 부릅니다.

    이 단계에서 하는 일은 크게 두 가지입니다. 넓은 AP1 색역과 높은 밝기 범위를 sRGB(Rec.709)가 표현 가능한 범위 안으로 압축하는 톤 매핑, 그리고 리니어 값을 다시 sRGB 곡선으로 인코딩하는 작업입니다. 이 변환이 있기 때문에 리니어 공간에서는 하얗게 날아갈 것 같던 밝은 하이라이트도 부드럽게 화면 안에 눌러 담기는 결과물이 나오는 것입니다.

    흔한 오해: ACEScg로 저장하면 색이 예뻐진다?

    작업하다 보면 “ACEScg 색공간으로 바꾸면 색감이 좋아진다”거나 “ACEScg 파일이 더 고급스럽다”는 식의 오해를 종종 듣게 됩니다. 결론부터 말하면 사실이 아닙니다.

    ACEScg는 그 자체로 색을 아름답게 만들어주는 필터가 아니라, 넓은 범위의 빛 정보를 손실 없이 담아두고 정확하게 계산하기 위한 컨테이너입니다. 모니터로 직접 ACEScg 이미지를 열어보면 오히려 색이 탁하고 밋밋하게 보이는 경우가 많은데, 이는 디스플레이 변환을 거치지 않은 리니어 데이터를 그대로 화면에 뿌렸기 때문입니다. 예쁜 결과물을 만드는 것은 색공간 자체가 아니라 라이팅, 룩업 테이블(LUT), 컬러 그레이딩 작업입니다. ACEScg는 그 작업을 정확하고 왜곡 없이 할 수 있게 도와주는 무대일 뿐입니다.

    자주 묻는 질문(FAQ)

    Q1. ACEScg 색공간으로 렌더링하면 렌더 타임이 더 오래 걸리나요? 아닙니다. 색공간은 색을 표현하는 좌표계와 곡선의 문제이지 연산량 자체를 늘리는 요소가 아닙니다. 오히려 리니어 공간에서의 계산은 물리적으로 정확한 덧셈·곱셈이라 컴퓨터 입장에서는 더 단순한 연산에 가깝습니다.

    Q2. 모든 텍스처를 무조건 ACEScg로 변환해서 불러와야 하나요? 아닙니다. 컬러 텍스처(디퓨즈, 알베도)는 보통 sRGB로 저장되어 있어 변환이 필요하지만, 노멀맵이나 러프니스맵처럼 색이 아니라 수치 데이터를 담은 맵은 애초에 감마 곡선이 걸려 있지 않으므로 Raw(변환 없음)로 불러와야 합니다. 이 부분은 시리즈 8, 9편에서 자세히 다룹니다.

    Q3. sRGB로 작업해도 큰 문제가 없지 않나요? 간단한 정지 이미지 보정 정도라면 큰 티가 안 날 수 있지만, 여러 레이어를 합성하거나 강한 컬러 조명, HDR 소스를 다루는 VFX 작업에서는 클리핑과 컬러 시프트가 누적되어 눈에 띄는 품질 저하로 이어집니다. 그래서 업계 표준 파이프라인은 워킹 스페이스로 ACEScg 같은 넓은 리니어 공간을 쓰고, 출력 시점에만 sRGB로 변환하는 방식을 씁니다.

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다