CRT 모니터의 마법을 되살리기 위해 게임 엔진을 직접 만든 이야기
요약
기사 전체 정리
CRT 모니터의 마법을 되살리기 위해 게임 엔진을 직접 만든 이야기
$35짜리 CRT에서 시작된 집착
저자는 Unreal과 Unity를 10년 가까이 사용한 3D 아티스트 출신 개발자임. CRT 필터나 포스트프로세스 머터리얼을 만들어봤고, 기억 속 어린 시절과 비교하면 "괜찮네" 수준이었음
전환점은 1998년산 Sharp CRT를 $35에 사와서 SNES를 꽂은 날. 모션이 프로즌 프레임의 빠른 재생이 아니라 자연스럽게 흘렀고, 밝은 물체가 진짜 유리 아래의 물리적 빛처럼 행동했고, 픽셀이 현대 디스플레이가 훈련시킨 "픽셀"과 다른 뭔가였음
어린 시절 추억이 없는 오래된 콘솔 게임을 해봐도 같은 마법이 느껴졌음. "우리가 잃어버린 건 해상도나 충실도가 아니라, 하드웨어와 아트 디렉션과 플레이어 사이의 관계 전체였다"
왜 기존 엔진으로는 안 되는가
현대 게임 엔진의 렌더링 모델: 가상 카메라 → 3D 월드 촬영 → 프레임버퍼 → 포스트프로세싱 → 출력. Unity는 포스트프로세싱을 카메라/필름 속성으로 설명하고, Unreal도 톤매핑과 TAA 이후의 최종 LDR 컬러에서 작업함
CRT는 카메라가 아님. 물리적 프로세스의 결과로 이미지를 생성하는 디바이스임:
- 전자빔이 화면을 시간에 걸쳐 스캔함
- 형광체가 빔에 의해 여기(excite)되어 빛을 방출
- 형광체가 시간에 따라 흥분을 잃으면서 감쇠(decay)
- 마스크 기하(섀도 마스크, 애퍼처 그릴 등)가 빛의 착지와 혼합에 영향
- 프레임이 단일 순간이 아니라 시간에 걸친 통합의 결과
이 근본적인 차이 때문에 기존 엔진에 볼트온 하려고 하면 한계에 부딪힘. Unreal의 포스트프로세싱은 톤매핑 이후라서 파이프라인 초반에 개입하기 어렵고, 스왑 체인은 엔진이 추상화해놓아서 건드릴 수가 없음
자기 엔진을 만드는 이점
Retro Game Engine은 D3D12 + Win32 프로토타입에서 시작해서 풀 파이프라인으로 성장함. CRT "효과"가 아니라 CRT의 물리적 동작 각 부분을 연구하고 구현한 디스플레이 시뮬레이션임
입력 신호가 뭔지, 디스플레이가 그걸 어떻게 처리하는지, 시간이 어떻게 영향을 주는지, 뭘 언제 출력하는지를 전부 소유함. 스왑 체인의 버퍼 수명, 프레젠트 타이밍, 프레임 간 보존되는 것과 시간에 걸쳐 누적되는 것을 직접 제어할 수 있음
"예전 게임은 플레이어의 상상력과 협업해야 했음. 대담한 실루엣, 강렬한 컬러, 노이즈는 적고 정체성은 높은 세계. '제한의 부재가 예술의 적이다'라는 격언이 시간이 지날수록 더 맞는 것 같다"
Unreal이나 Unity를 대체하려는 게 아님. 필립스 드라이버처럼 한 가지만 잘하는 도구. 정확성과 리얼리즘을 쫓는 대신 제한을 의도적으로 받아들이는 게임을 만들 수 있는 도구를 목표로 함
댓글
댓글
댓글을 불러오는 중...