최근 한 개발자가 타입스크립트(TypeScript)로 구현된 소프트웨어 래스터라이저(software rasterizer)를 공개하며 웹 기반 3D 그래픽스 교육에 새로운 지평을 열었습니다. 이 프로젝트는 웹 브라우저 환경에서 CPU만으로 3D 그래픽스를 렌더링하는 방식을 보여주며, 특히 프로그래밍 가능한 버텍스(vertex) 및 프래그먼트(fragment) 셰이더를 지원하는 것이 특징입니다. 이는 개발자들이 GPU 없이도 그래픽스 파이프라인의 핵심 원리를 직접 코드로 구현하고 실험할 수 있도록 돕습니다.
이 래스터라이저는 니콜라우스 라우흐(Nikolaus Rauch)의 C++ 소프트웨어 래스터라이저를 기반으로 타입스크립트와 웹 환경에 맞춰 재구현되었습니다. 커스텀 버텍스 레이아웃을 완벽하게 지원하여 셰이더가 임의의 버텍스 속성을 정의하고 보간할 수 있습니다. 또한, 벡터 및 행렬 라이브러리, 텍스처 처리, 샘플링, 브라우저 통합 등 모든 요소가 타입스크립트와 웹의 제약 사항을 고려하여 독자적으로 구현되었습니다. 데모로는 삼각형, 평면, 깊이 버퍼, 텍스처, 프레임 버퍼, 블린-퐁(Blinn-Phong) 셰이딩, 노멀 매핑(Normal Mapping), 그림자 매핑(Shadow Mapping) 등 다양한 렌더링 기법을 시연하며, 각 예제는 그래픽스 파이프라인의 특정 단계를 명확히 보여줍니다.
이 프로젝트의 주요 목표는 성능보다는 가독성과 실험 가능성에 있습니다. 코드는 그래픽스 파이프라인을 쉽게 이해하고 수정할 수 있도록 작성되었으며, 교육용 자료로서의 가치를 극대화했습니다. 웹 개발자들이 웹GPU(WebGPU)나 WebGL 같은 복잡한 저수준 그래픽스 API를 사용하기 전에 3D 렌더링의 기본 원리를 깊이 있게 학습할 수 있는 훌륭한 도구가 될 것입니다. 이는 궁극적으로 웹 기반 3D 애플리케이션 및 게임 개발에 대한 이해도를 높이고, 더 나아가 새로운 웹 그래픽스 기술의 발전을 촉진하는 데 기여할 것으로 기대됩니다.