URP/HDRP 포스트 프로세싱: 컬러 그레이딩으로 게임의 분위기 바꾸기

URP/HDRP 포스트 프로세싱: 컬러 그레이딩으로 게임의 분위기 바꾸기

Unity Volume 기반 포스트 프로세싱에서 컬러 그레이딩을 설계하고 검증하는 방법을 정리합니다. URP와 HDRP의 공통 원칙, LUT 활용 시 주의점, 런타임 전환 예제를 함께 다룹니다.

컬러 그레이딩은 색 보정이 아니라 연출이다

컬러 그레이딩은 화면을 예쁘게 만드는 마지막 필터가 아니다. 플레이어가 장면을 차갑게 느낄지 안전하다고 느낄지 불안하다고 느낄지를 정하는 연출 도구다. 같은 조명과 에셋을 사용해도 색온도, 대비, 채도, 톤 매핑 조합에 따라 폐허는 긴장감 있는 공간이 되거나 평온한 풍경이 될 수 있다.

Unity의 URP와 HDRP에서는 VolumeVolume Profile을 중심으로 포스트 프로세싱을 구성한다. 파이프라인마다 노출되는 항목과 기본 동작에는 차이가 있지만 작업 순서는 대체로 같다.

  1. 조명과 머티리얼의 기준 상태를 먼저 맞춘다.
  2. Volume에서 노출과 톤 매핑을 정한다.
  3. 대비와 색상 균형을 조절한다.
  4. 필요한 경우 LUT로 스타일을 고정한다.
  5. 실제 플레이 화면에서 가독성을 검증한다.

시작 전에 정해야 할 기준

조명 문제를 색 보정으로 덮지 않는다

포스트 프로세싱은 렌더링 결과를 조정한다. 따라서 광원이 부족해 어두운 영역이 뭉개지는 문제나 반사광이 과도한 문제를 컬러 그레이딩만으로 해결하려 하면 부작용이 생긴다. 먼저 다음 항목을 점검하는 편이 좋다.

  • 광원의 색과 세기가 의도에 맞는지
  • 알베도 텍스처가 지나치게 밝거나 채도가 높지 않은지
  • 노출 기준이 씬마다 크게 흔들리지 않는지
  • UI와 중요한 상호작용 오브젝트가 배경에 묻히지 않는지

차가운 청록 계열과 따뜻한 주황 계열 그레이딩을 적용한 동일한 게임 환경 비교

기준 장면을 하나 만든다

그레이딩 값은 장면의 밝기 분포에 영향을 많이 받는다. 낮, 실내, 동굴처럼 성격이 다른 씬을 모두 한 번에 맞추려 하기보다 대표 장면을 정해 기준으로 삼는다. 이 장면에는 밝은 하늘이나 발광체, 중간 밝기의 캐릭터, 어두운 그림자, 피부색 또는 플레이어가 자주 보는 오브젝트를 함께 넣는 것이 좋다.

그 뒤 다른 장면에서 문제가 생기면 전역 Volume 값을 무작정 밀어붙이기보다 로컬 Volume을 추가해 보정한다.

URP와 HDRP에서 Volume 구성하기

공통 구성

씬에 빈 게임 오브젝트를 만들고 Volume 컴포넌트를 추가한다. 씬 전체에 적용할 설정이라면 Is Global을 켜고 특정 구역에서만 적용할 설정이라면 끈 뒤 콜라이더 범위를 지정한다. Volume Profile에는 보통 다음 순서로 오버라이드를 추가한다.

  • Exposure
  • Tonemapping
  • White Balance
  • Color Adjustments
  • Color Curves 또는 Lift, Gamma, Gain
  • Color Lookup

URP에서는 카메라와 렌더러 설정에서 포스트 프로세싱이 허용되어 있어야 한다. HDRP에서는 Volume 시스템이 기본 워크플로에 더 깊게 연결되어 있으며 카메라와 프레임 설정에서 포스트 프로세싱이 비활성화되지 않았는지 확인해야 한다.

URP에서 주로 보는 항목

URP는 가벼운 프로젝트에서도 비교적 단순하게 접근할 수 있다. Color AdjustmentsPost Exposure, Contrast, Color Filter, Hue Shift, Saturation만으로도 분위기 차이를 빠르게 확인할 수 있다.

처음에는 색상 필터를 강하게 넣기보다 대비와 채도를 작은 폭으로 조절한다. 예를 들어 공포 장면을 만들 때 채도를 지나치게 낮추면 공포보다 정보 부족으로 느껴질 수 있다. 중요한 상호작용 물체나 적의 실루엣이 배경과 구분되는지 함께 확인해야 한다.

HDRP에서 주로 보는 항목

HDRP는 물리 기반 조명과 높은 명암 범위를 전제로 하는 경우가 많아 톤 매핑과 노출의 영향이 특히 크다. 색을 조절하기 전에 ExposureTonemapping이 장면의 하이라이트와 그림자를 어떻게 압축하는지 확인한다.

HDRP의 고급 색상 보정 도구는 더 세밀한 제어를 제공하지만 모든 항목을 동시에 조작하면 원인을 추적하기 어려워진다. 먼저 White Balance와 Color Adjustments로 큰 방향을 잡고 그다음 Lift, Gamma, Gain 또는 커브로 명도 구간을 다듬는 순서가 안전하다.

분위기를 만드는 실전 순서

1. 노출과 톤 매핑을 먼저 고정한다

노출이 계속 변하면 동일한 채도와 대비 값도 장면마다 다르게 보인다. 자동 노출을 쓴다면 최소·최대 범위와 적응 속도를 의도에 맞게 제한한다. 컷신처럼 색감이 정확해야 하는 화면은 고정 노출 또는 좁은 노출 범위가 다루기 쉽다.

톤 매핑은 밝은 영역을 화면에 담을 수 있는 범위로 압축한다. 이를 바꾼 뒤에는 하늘, 금속 반사, 발광 이펙트가 어떻게 달라지는지 먼저 비교한다. 톤 매핑과 노출을 확정하기 전에는 LUT를 제작하지 않는 편이 좋다.

2. White Balance로 장면의 온도를 정한다

White Balance는 장면 전체의 색온도와 색조 방향을 정하는 데 적합하다. 차가운 새벽이라면 청록 또는 푸른 기운을 아주 약하게 추가하고 안전지대나 실내 휴식 공간이라면 따뜻한 기운을 더할 수 있다.

이 단계에서 중요한 것은 흰색이 완전히 색을 잃지 않게 하는 것이다. 화면 전체가 파랗거나 주황색으로 물들면 스타일은 분명해지지만 재질 구분과 피부색 가독성이 빠르게 무너진다.

3. 대비와 채도로 정보의 우선순위를 만든다

대비는 빛과 그림자의 분리를 채도는 색 정보의 강도를 바꾼다. 둘을 함께 과도하게 올리면 인상은 강해지지만 하이라이트가 거칠고 어두운 영역이 검게 뭉개질 수 있다.

권장하는 방식은 한 번에 하나만 바꾸고 전후 화면을 캡처해 비교하는 것이다. 특히 다음 장면을 반드시 확인한다.

  • 밝은 배경 앞의 캐릭터
  • 어두운 배경 속 상호작용 오브젝트
  • 빨강, 초록, 파랑 계열의 게임플레이 표식
  • UI와 월드 오브젝트가 만나는 화면

LUT 적용 전후에 하이라이트와 그림자, 상호작용 오브젝트의 가독성을 점검하는 게임 화면

4. 색을 특정 명도 구간에만 배치한다

전체에 색 필터를 거는 대신 그림자, 중간톤, 하이라이트를 나누어 조절하면 자연스러운 분위기를 만들기 쉽다. 예를 들어 야간 도시는 그림자에 약한 청록색을 가로등이 닿는 하이라이트에 약한 주황색을 배치할 수 있다.

다만 보색 대비가 강할수록 화면은 영화적인 인상을 주는 대신 피로도도 높아진다. 플레이 시간이 긴 장르라면 중간톤은 비교적 중립적으로 남겨 두는 편이 안정적이다.

LUT를 사용할 때의 원칙

LUT(Color Lookup Table)는 입력 색을 원하는 출력 색으로 변환하는 표다. 팀에서 색감을 일관되게 유지하거나 외부 색 보정 도구에서 만든 스타일을 적용할 때 유용하다.

그러나 LUT는 조명과 톤 매핑의 문제를 대신 해결해 주지 않는다. 기준 조명이 바뀌면 LUT가 의도치 않게 피부색을 탁하게 만들거나 발광 효과를 과포화할 수 있다.

LUT를 도입할 때는 다음을 지킨다.

  • 프로젝트가 요구하는 LUT 해상도와 임포트 설정을 사용한다.
  • 텍스처 압축과 색 공간 설정으로 색 띠 현상이 생기지 않는지 확인한다.
  • 강도는 0에서 올리며 게임플레이 가독성을 함께 점검한다.
  • 노출과 톤 매핑이 크게 바뀌면 LUT도 다시 검증한다.
  • 원본 LUT와 적용 목적을 버전 관리에 남긴다.

구역별 분위기 전환하기

전역 Volume은 게임의 기본 룩을 담당하고 로컬 Volume은 동굴 진입이나 위험 지역처럼 특정 구역의 감정을 바꾸는 데 적합하다. 로컬 Volume에는 블렌드 거리를 두어 경계에서 색감이 갑자기 바뀌지 않게 한다.

런타임에 Profile 자체를 직접 수정하면 같은 Profile을 공유하는 다른 Volume에도 영향이 갈 수 있다. 개별 Volume에만 다른 값을 적용하려면 Profile 인스턴스를 분리하거나 블렌드 가중치를 제어하는 방식을 선택한다.

다음 예제는 로컬 Volume의 가중치를 보간해 분위기를 부드럽게 전환하는 간단한 패턴이다.

using UnityEngine;
using UnityEngine.Rendering;

public sealed class VolumeWeightFader : MonoBehaviour
{
    [SerializeField] private Volume targetVolume;
    [SerializeField] private float transitionSeconds = 1.2f;

    private float targetWeight;

    public void SetEnabled(bool enabled)
    {
        targetWeight = enabled ? 1f : 0f;
    }

    private void Update()
    {
        if (targetVolume == null)
            return;

        float speed = 1f / Mathf.Max(transitionSeconds, 0.01f);
        targetVolume.weight = Mathf.MoveTowards(
            targetVolume.weight,
            targetWeight,
            speed * Time.deltaTime
        );
    }
}

이 스크립트는 Volume Profile의 개별 값을 바꾸지 않고 weight만 변경한다. 따라서 지역 Volume의 블렌드와 함께 사용하기 좋고 연출 전환의 원인을 추적하기도 쉽다.

자주 생기는 문제와 점검 방법

화면이 탁하고 회색으로 보인다

대비를 올리기 전에 채도를 크게 낮췄거나 톤 매핑과 노출 조합이 중간톤을 과도하게 압축했을 가능성이 있다. 먼저 노출을 기준 상태로 돌린 뒤 중간톤의 밝기와 채도를 확인한다.

색은 멋있지만 플레이가 불편하다

분위기용 색과 게임플레이용 색의 역할이 충돌한 경우가 많다. 적의 공격 경고, 회복 아이템, 길 안내 같은 핵심 색은 그레이딩 이후에도 식별할 수 있어야 한다. 필요하다면 해당 이펙트와 UI는 별도 카메라 또는 후처리 영향을 덜 받는 렌더링 경로로 분리하는 방법도 검토할 수 있다.

장면마다 결과가 크게 다르다

전역 그레이딩의 문제가 아닐 수 있다. 광원의 색온도, 반사 프로브, 하늘 설정, 자동 노출 범위를 비교한다. 같은 Volume 값이라도 입력되는 조명 정보가 다르면 결과가 달라지는 것은 자연스럽다.

마무리

좋은 컬러 그레이딩은 값이 강한 그레이딩이 아니라 게임의 의도를 선명하게 만드는 그레이딩이다. 노출과 톤 매핑으로 화면의 기준을 고정하고 White Balance와 대비로 방향을 잡은 뒤 필요한 경우에만 LUT와 구역별 Volume을 더하자. 마지막 검증 기준은 스크린샷의 인상이 아니라 플레이 중 중요한 정보를 얼마나 빠르게 읽을 수 있는가다.

#Unity#URP#HDRP#Post-Processing#Color Grading

계속 읽어보기

이런 글은 어떠세요?

< Back to Logs