본문으로 건너뛰기
CHOI HONGSU
1 min read

Splat Map Reduction

 

스플랫맵이 담당하던 타일링 제거, 톤 보정, 경계 블렌딩 기능을 Plane / Vertex Color / Alpha Decal로 분리해 지형 셰이더의 고정 텍스처 샘플링 비용을 줄인 작업입니다.

Problem

기존 배경 타일은 스플랫맵을 사용해 타일링 반복을 깨고, 영역별 색 변화와 경계 블렌딩을 처리하고 있었습니다.

하지만 이 방식은 지형 전체에서 추가 텍스처 샘플링이 발생하는 구조였고, 실제로는 모든 영역에 복잡한 블렌딩이 필요한 것은 아니었습니다.

특히 모바일 환경에서는 배경이 넓게 깔리기 때문에, 지형 셰이더의 샘플 수가 누적 비용으로 이어질 수 있었습니다.

Goal

스플랫맵이 담당하던 기능을 모두 유지하려고 하기보다, 실제로 필요한 용도별로 더 저렴한 방식으로 대체하는 것을 목표로 했습니다.

  • 타일링 반복 제거: Plane 오브젝트로 부분 덮기
  • 영역별 색 보정: Vertex Color로 처리
  • 부드러운 경계 블렌딩: 필요한 영역에만 알파 데칼 사용

Implementation

  1. 01

    배경 타일을 깨는 용도

    스플랫맵은 주로 바닥 타일의 반복 패턴을 깨는 용도로 사용되고 있었습니다.

    이 경우 전체 지형 셰이더에서 추가 샘플을 사용하는 대신, 반복이 눈에 띄는 구간 위에 간단한 Plane 오브젝트를 배치해 시각적인 변화를 만들었습니다.

  2. 02

    대안

    03. Plane으로 부분 덮기#

    Plane 오브젝트는 바닥과 거의 같은 위치에 배치해, 기존 타일 위를 자연스럽게 덮도록 구성했습니다.

    프로젝트에서는 MSAA를 사용하지 않았기 때문에 Early-Z 이득을 얻을 수 없기에 위에 덮는 구조로 가도 손해가 없다 판단하였습니다.

Implementation

  1. 01

    지역 블랜딩 용도

    스플랫맵은 지역 간 경계를 부드럽게 섞는 용도로도 사용되고 있었습니다.

    하지만 모든 바닥 픽셀에서 이 비용을 부담할 필요는 없었기 때문에, 실제로 경계 블렌딩이 필요한 부분만 별도 알파 데칼로 처리했습니다.

    이를 통해 복잡한 블렌딩 비용을 전체 지형 셰이더에서 분리하고, 필요한 영역에만 제한적으로 적용할 수 있었습니다.

  2. 02

    대안 ( 알파 메쉬 데칼 )

Implementation

  1. 01

    AO or 톤 보정 용도

    스플랫맵으로 처리하던 단순 톤 보정이나 AO 성격의 어두운 영역 표현은 Vertex Color로 이동했습니다.

    Vertex Color는 추가 텍스처 샘플링 없이 메시 데이터에 포함된 색상 정보를 사용할 수 있기 때문에, 단순한 색 변화나 영역별 톤 조절에는 더 적합했습니다.

    이를 통해 스플랫맵을 사용하지 않아도 배경의 색 변화와 지역감을 유지할 수 있었습니다.

  2. 02

    대안

Before / After

기존 메모리 0.550MB -> 491.3MB ( 스플랫맵 제거 )

 

Result#

스플랫맵이 담당하던 기능을 용도별로 분리해, 전체 지형 셰이더의 샘플링 비용을 줄였습니다.

  • 타일링 반복 제거는 Plane 으로 대체
  • 지역 경계 블렌딩은 필요한 부분만 Alpha Decal로 처리
  • 단순 톤 보정 / AO 성격의 색 변화는 Vertex Color로 이동
  • 전체 바닥이 항상 스플랫맵 샘플링 비용을 부담하던 구조를, 필요한 위치에만 비용을 지불하는 구조로 변경

 

 

이 작업은 시각적 품질을 크게 바꾸기보다, 기존 표현을 유지하면서 지형 셰이더의 고정 샘플링 비용을 줄이는 데 목적이 있었습니다.

BEFORE
Before
AFTER
After

Tradeoffs & Future Work

Tradeoffs

  • Plane과 Alpha Decal을 사용하는 방식은 추가 렌더링 오브젝트와 투명 오버드로우 비용이 발생합니다.
  • 따라서 모든 영역에 사용하는 방식이 아니라, 타일링 반복이 눈에 띄거나 경계 블렌딩이 필요한 구간에만 제한적으로 사용했습니다.
Splat Map Reduction · Cookie Run: Oven Smash · Choi Hongsu · Hongsu