캔버스를 두 장 겹쳤다
배경과 주인공을 한 씬에 넣으면 셰이더가 서로를 침범합니다. 그래서 렌더러를 둘로 나눴습니다. 뒤 캔버스는 커서 쪽으로 피어나는 절차적 ASCII 그리드를 그리고, 앞 캔버스는 투명 배경으로 주인공만 그립니다. 두 레이어는 서로의 깊이나 블렌딩에 간섭하지 않습니다.

로고를 파일이 아니라 코드로 세웠다
위트의 W 마크는 이미지도 3D 모델 파일도 아닙니다. 실행 중에 지오메트리로 깎아 만듭니다. 여기에 홀로그래픽 셰이더를 입히고 다시 하프톤으로 디더링해서, 확대해도 깨지지 않는 점묘 질감을 얻었습니다.
오도미터가 100에 닿으면 타이틀이 글자 단위로 젖혀 오르고, 카메라가 씬 안쪽으로 파고들면서 34,700개의 파티클이 로고 모양으로 조립됩니다.

모델은 자체 호스팅으로
초반에는 3D 모델과 DRACO 디코더를 외부 CDN에서 받아왔습니다. 외부 호스트가 죽으면 주인공이 통째로 사라지는 구조였습니다. 지금은 GLB(492KB)와 디코더 모두 위트 서버에서 직접 서빙하고, nginx에 model/gltf-binary MIME과 30일 불변 캐시를 지정했습니다.

스크롤이 곧 카메라다
Lenis로 스크롤을 부드럽게 받고, 그 값으로 카메라 위치·모델 자세·셰이더 유니폼을 한꺼번에 몹니다. 페이지를 내리는 동작이 그대로 카메라 워크가 되기 때문에, 사용자는 영상을 보는 것이 아니라 직접 돌리고 있다고 느낍니다.