Voxel Space
웹 데모: Voxel Space 엔진
역사
- 1992년 당시 CPU는 현재보다 1000배 느렸고 GPU 가속은 알려지지 않았거나 비쌌음.
- 3D 게임은 CPU에서만 계산되었고, 렌더링 엔진은 단일 색상의 폴리곤을 렌더링했음.
- 1991년 MicroProse의 게임 Gunship 2000과 1992년 NovaLogic의 게임 Comanche가 출시되었음.
- Comanche는 당시로서는 놀라운 그래픽을 제공했으며, 텍스처, 음영, 그림자 등을 보여줌.
렌더링 알고리듬
- Comanche는 Voxel Space라는 기술을 사용하며, 이는 레이 캐스팅과 유사한 아이디어에 기반함.
- Voxel Space 엔진은 2.5D 엔진으로, 일반적인 3D 엔진이 제공하는 모든 자유도를 제공하지 않음.
높이 맵과 색상 맵
- 지형을 표현하는 가장 쉬운 방법은 높이 맵과 색상 맵을 사용하는 것임.
- Comanche 게임에서는 1024 * 1024 크기의 1바이트 높이 맵과 색상 맵을 사용함.
- 이러한 맵은 주기적이며, 복잡한 구조물은 표현할 수 없지만, 색상 맵은 이미 음영과 그림자를 포함하고 있어 렌더링 과정에서 조명을 계산할 필요가 없음.
기본 알고리듬
- 3D 엔진의 렌더링 알고리듬은 매우 간단함.
- Voxel Space 엔진은 높이와 색상 맵을 래스터화하여 수직선을 그림.
- 화면을 지우고, 후면에서 전면으로 렌더링하여 가림을 보장함.
- 관찰자로부터의 광학적 거리에 해당하는 맵의 선을 결정함.
- 선을 래스터화하여 화면의 열 수에 맞춤.
- 2D 맵에서 선의 세그먼트에 해당하는 높이와 색상을 가져옴.
- 높이 좌표에 대해 원근 투영을 수행함.
- 원근 투영에서 가져온 높이와 해당 색상으로 수직선을 그림.
회전 추가
- 위 알고리듬으로는 북쪽만 볼 수 있음.
- 다른 각도를 보려면 좌표를 회전시키는 몇 줄의 코드가 필요함.
성능 향상
- 성능을 높이기 위한 여러 가지 트릭이 있음.
- 후면에서 전면으로 그리는 대신 전면에서 후면으로 그릴 수 있음.
- 가림을 보장하기 위해 추가적인 y-버퍼가 필요함.
- 세부 사항 수준을 조정하여 가까운 곳에서는 더 많은 세부 사항을, 먼 곳에서는 적은 세부 사항을 렌더링함.
링크
- 웹 프로젝트 데모 페이지
- Voxel 지형 엔진 소개
- 개인 웹사이트
맵
라이선스
- 소프트웨어 부분은 MIT 라이선스 하에 있음.
- Voxel Space 기술은 일부 국가에서 여전히 특허가 있을 수 있음.
- 색상 및 높이 맵은 게임 Comanche에서 역설계된 것으로 라이선스에서 제외됨.