피드로 돌아가기
1993년처럼 그래픽 만들기
GeekNewsGeekNews
Infrastructure

1993년처럼 그래픽 만들기

Oklab 기반 Colormap 사전 계산을 통한 256색 렌더링 최적화

neo2026년 6월 10일25intermediate

Context

1990년대 초반 VGA Mode 13h의 기술적 제약을 재현하여 320x240 해상도와 256색 팔레트 기반의 1인칭 슈터를 설계함. 현대적 셰이더 없이 인덱스 기반 프레임버퍼만으로 거리감과 깊이감을 구현해야 하는 제약 상황임.

Technical Solution

  • O(1) 시간 복잡도의 색상 조회를 위해 32단계 명암을 사전 계산한 2차원 Colormap 행렬 설계
  • 단순 유클리드 거리 대신 Oklab 색공간 기반 지각 거리 공식을 적용하여 색상 왜곡 및 회색 쏠림 현상 방지
  • 명암 단계별 Hue Shifting 기법을 적용하여 어두운 영역에서도 따뜻한 색조를 유지하는 픽셀 아트 스타일 구현
  • Raycasting 구조에서 벽(열 단위), 바닥(행 단위), 스프라이트(객체 단위)별로 Colormap 인덱스 계산 횟수를 최소화하는 렌더링 파이프라인 구축
  • Blender Python API 기반의 사전 렌더링 파이프라인을 통해 3D 모델의 애니메이션 프레임을 자동 생성하고 팔레트 양자화 스크립트로 1바이트 픽셀 데이터 변환
  • 월드 1유닛을 64픽셀로 고정한 픽셀 스케일 규칙을 적용하여 저해상도 환경 내 시각적 일관성 및 가독성 확보

- 실시간 연산 비용이 높은 색상 변환 작업 시 Lookup Table(LUT) 기반의 O(1) 조회 구조 검토 - 색상 유사도 판정 시 RGB 거리 대신 Oklab 등 지각적 색공간(Perceptual Color Space) 도입 고려 - 저해상도 애셋 제작 시 일관된 픽셀 스케일 규칙(Pixel Scale Rule)을 정의하여 시각적 아티팩트 방지

원문 읽기