ESRGAN으로 SDR 게임 그래픽을 HD 에셋으로 업스케일링하는 파이프라인

ESRGAN으로 SDR 게임 그래픽을 HD 에셋으로 업스케일링하는 파이프라인

저해상도 SDR 게임 그래픽을 ESRGAN 계열 모델로 HD PNG 에셋으로 변환하는 실무 파이프라인을 정리합니다. 알파 채널, 감마, 타일 경계, 검수 기준까지 단계별로 다룹니다.

게임의 SDR(Standard Dynamic Range) 그래픽을 HD로 바꿀 때 ESRGAN은 픽셀 수를 늘리는 도구가 아니라 학습된 패턴을 바탕으로 고주파 디테일을 추정하는 초해상도 모델이다. 따라서 원본 보존, 알파 채널 분리, 모델별 결과 검수, 엔진 내 비교를 하나의 파이프라인으로 묶어야 한다. 가장 안전한 기본 흐름은 원본 PNG 보관 → RGB 업스케일 → 알파 별도 리사이즈 → 타일·스프라이트 검수 → 엔진 적용이다.

SDR 그래픽을 ESRGAN으로 HD 에셋으로 변환해야 하는 이유

SDR은 보통 Rec.709/sRGB 계열의 표준 명암 범위로 제작된 게임 UI, 스프라이트, 배경, 텍스처를 뜻한다. 이 에셋은 해상도가 낮더라도 색 공간 자체가 문제인 경우는 드물다. 핵심은 해상도를 키우는 과정에서 원래의 색과 투명 경계를 훼손하지 않는 것이다.

ESRGAN(Enhanced Super-Resolution Generative Adversarial Networks)은 GAN 기반 초해상도 기법이다. Real-ESRGAN은 실제 압축 노이즈와 다양한 열화 조건을 고려해 학습한 실용적인 변형으로 게임 캡처나 일반적인 래스터 그래픽에 자주 사용된다.

IHD=GESRGAN(ISDR,s)I_{HD}=G_{ESRGAN}(I_{SDR}, s)

여기서 ISDRI_{SDR}은 원본 이미지, ss는 배율, GESRGANG_{ESRGAN}은 모델의 추론 결과다. 결과 이미지는 원본에 없던 정보를 복원하는 것이 아니라 그럴듯한 디테일을 생성할 수 있으므로 원본 대체가 아니라 후보 에셋 생성으로 취급해야 한다.

SDR 원본과 ESRGAN 업스케일 결과를 비교하는 게임 에셋 검수 화면

ESRGAN과 일반 리사이즈는 무엇이 다른가?

방식장점주의할 점적합한 에셋
Nearest Neighbor픽셀 경계가 유지됨부드러운 디테일을 만들지 못함픽셀 아트
Lanczos빠르고 예측 가능흐림과 링잉이 생길 수 있음UI, 마스크, 알파
ESRGAN질감과 윤곽을 보강가짜 디테일과 문자 왜곡 가능배경, 일러스트, 현실적 텍스처
Real-ESRGAN압축·노이즈 원본에 강함스타일이 원본과 달라질 수 있음캡처 이미지, 범용 래스터

픽셀 아트에 ESRGAN을 일괄 적용하면 의도한 계단 형태와 제한 팔레트가 무너질 수 있다. 픽셀 아트는 보통 Nearest Neighbor 또는 전용 픽셀 아트 모델을 쓰고 ESRGAN은 페인팅풍 배경과 질감 있는 2D 소스에 우선 적용하는 편이 낫다.

SDR PNG를 HD PNG로 변환하는 파이프라인은 어떻게 구현할까?

1. 원본을 분류하고 변환 기준을 정한다

먼저 에셋을 아래처럼 나눈다.

  1. 배경·일러스트: Real-ESRGAN 후보
  2. 타일 텍스처: Real-ESRGAN 후보 후 반복 경계 검사
  3. UI·텍스트: 벡터 원본 또는 직접 재제작 우선
  4. 픽셀 아트·아이콘: Nearest Neighbor 또는 수작업 보정
  5. 투명 스프라이트: RGB와 알파를 분리 처리

출력 배율은 목적 해상도에서 역산한다. 512×288 배경을 1920×1080 화면에 맞추려는 경우, 화면 비율과 카메라 크롭을 먼저 확인한 뒤 2배 또는 4배 출력을 선택한다. 무조건 4배를 만든 뒤 축소하면 저장 용량과 메모리만 커질 수 있다.

2. RGB와 알파 채널을 분리한다

투명 PNG를 모델에 그대로 입력하면 가장자리의 반투명 픽셀에 검은색 또는 흰색 프린지가 생길 수 있다. RGB만 AI 업스케일하고 알파는 Lanczos로 같은 배율만큼 확대한 뒤 다시 합성한다.

from PIL import Image

source = Image.open("hero.png").convert("RGBA")
rgb = source.convert("RGB")
alpha = source.getchannel("A")

# rgb_upscaled.png는 ESRGAN 또는 Real-ESRGAN 추론 결과다.
rgb_hd = Image.open("rgb_upscaled.png").convert("RGB")
alpha_hd = alpha.resize(rgb_hd.size, Image.Resampling.LANCZOS)

result = rgb_hd.convert("RGBA")
result.putalpha(alpha_hd)
result.save("hero_hd.png")

알파가 프리멀티플라이드(premultiplied alpha) 상태인 소스라면 먼저 언프리멀티플라이한 뒤 RGB를 처리하고 최종 출력 규칙에 맞게 다시 변환해야 한다. 엔진의 텍스처 임포트 설정도 이 규칙과 맞춰야 한다.

3. 모델로 RGB를 배치 업스케일한다

Windows에서 realesrgan-ncnn-vulkan 실행 파일을 사용하는 경우, PNG 한 장은 다음처럼 처리할 수 있다.

realesrgan-ncnn-vulkan.exe -i rgb.png -o rgb_upscaled.png -n realesrgan-x4plus -s 2 -f png

-s 2는 2배 출력, -n realesrgan-x4plus는 범용 4배 모델을 의미한다. 모델의 기본 배율과 실제 출력 배율은 다를 수 있으므로 출력 크기를 파일명과 검수표에 명시한다. 예를 들어 forest_512x288_x2.png처럼 기록하면 실수하기 어렵다.

flowchart LR
    A[원본 SDR PNG 보관] --> B[에셋 유형 분류]
    B --> C[RGB와 알파 분리]
    C --> D[ESRGAN 또는 Real-ESRGAN 추론]
    D --> E[알파 Lanczos 리사이즈 및 재결합]
    E --> F[타일·스프라이트·UI 검수]
    F --> G[엔진 임포트 및 성능 측정]

업스케일 결과에서 어떤 문제를 검수해야 하는가?

AI 업스케일 결과는 확대율만으로 승인하면 안 된다. 원본과 결과를 100% 및 실제 게임 카메라 거리에서 모두 비교한다.

검수 항목확인 방법문제 발생 시 처리
문자·로고원본과 겹쳐 비교AI 결과를 버리고 원본 또는 벡터로 교체
알파 경계밝고 어두운 배경에서 확인RGB·알파 분리 파이프라인 재확인
타일 경계반복 배치하여 확인패딩 후 처리하거나 경계를 수작업 보정
캐릭터 얼굴·손프레임별 비교다른 모델 또는 낮은 배율 적용
색감sRGB 기준 원본 비교엔진의 sRGB 임포트와 톤매핑 확인
용량·메모리플랫폼 빌드에서 측정해상도·압축 포맷·밉맵 조정

특히 타일 텍스처는 가장자리를 기준으로 AI가 서로 다른 디테일을 만들 수 있다. 타일 바깥쪽에 여분 픽셀을 패딩해 업스케일한 뒤 중앙 영역만 잘라내면 경계 불일치를 줄일 수 있다. 그래도 완전한 반복성을 보장하지는 않으므로 실제 반복 배치 검수는 필수다.

업스케일된 반복 텍스처의 타일 경계와 알파 프린지를 검수하는 모습

Unity와 Unreal Engine에서 SDR 텍스처 설정은 어떻게 맞출까?

AI 처리 전후에 색 공간 규칙을 바꾸지 않는 것이 중요하다. 일반적인 알베도, UI, 스프라이트는 sRGB로 임포트한다. 노멀 맵, 마스크, 러프니스, 메탈릭처럼 색이 아닌 데이터를 담은 맵은 sRGB를 끈 상태로 다뤄야 한다.

텍스처 용도AI 업스케일 권장sRGB비고
알베도·배경가능원본 색감 비교 필요
UI·폰트제한적벡터 또는 고해상도 원본 우선
노멀 맵비권장전용 노멀 맵 재생성 파이프라인 사용
마스크 맵비권장값 변화가 게임 로직·셰이더에 영향
스프라이트가능알파 분리 후 재결합

HDR 렌더링 프로젝트라도 입력 텍스처가 SDR PNG라면 원본의 sRGB 처리와 톤매핑 경로를 유지해야 한다. AI 업스케일이 HDR 정보를 만들지는 않는다. HDR 룩이 필요하다면 업스케일 후 조명, 블룸, 노출, 컬러 그레이딩에서 별도로 설계한다.

자주 묻는 질문 (FAQ)

ESRGAN으로 업스케일하면 원본 디테일이 정확히 복원되는가?

아니다. 모델은 학습 데이터에 기반해 디테일을 추정한다. 게임의 식별 가능한 로고, 텍스트, 캐릭터 특징은 반드시 원본과 비교 검수해야 한다.

투명 배경 스프라이트도 바로 입력해도 되는가?

권장하지 않는다. RGB와 알파를 분리하고 RGB만 AI 업스케일한 뒤 알파는 일반 리사이즈로 같은 크기에 맞춰 재결합하는 편이 안전하다.

모든 게임 에셋을 4배로 변환해야 하는가?

아니다. 최종 화면 크기, 카메라 거리, 메모리 예산으로 배율을 결정한다. UI와 픽셀 아트는 4배 ESRGAN보다 원본 재제작 또는 정수 배율 확대가 더 좋은 결과를 낼 수 있다.

정리

ESRGAN 기반 HD 전환의 목표는 AI가 만든 디테일을 많이 넣는 것이 아니라 원본의 스타일과 게임 내 가독성을 유지한 채 필요한 해상도만 확보하는 것이다. 원본을 보관하고 RGB·알파를 분리하며 에셋 유형별로 모델 적용 여부를 나누고 최종 엔진 화면에서 승인하는 흐름이 가장 재현 가능하다.

#ESRGAN#AI 업스케일링#게임 에셋#SDR 그래픽#HD 텍스처#Real-ESRGAN

계속 읽어보기

이런 글은 어떠세요?

< Back to Logs