Skip to content

PlayCanvas v2.17: WebGPU에서의 반정밀도 가우시안 스플래팅

PlayCanvas Engine v2.17.0이 WebGPU에서 가우시안 스플래팅을 앞으로 밀어붙이는 집중적인 개선 묶음과 함께 출시됐습니다. 이번 릴리스는 반정밀도 구면 조화 함수, GPU 기반 정렬 및 컬링 파이프라인, 그리고 장면 전체 LOD를 관리하는 전역 splat 예산을 추가합니다.

가우시안 스플랫 편집과 최적화를 다루는 SuperSplat 워크스루, PlayCanvas CEO Will Eastcott와 함께

f16 구면 조화 함수

가장 큰 기술적 추가는 WebGPU에서 가우시안 스플래팅을 실행할 때 쓰는 반정밀도(f16) 구면 조화 함수입니다. 구면 조화 함수는 각 splat의 시점 의존적 색상 정보를 인코딩하며, 스플래팅 파이프라인에서 가장 무거운 데이터 구조 중 하나입니다. 32비트에서 16비트 부동소수점으로 바꾸면 시각적 차이는 거의 없이 메모리 사용량을 대략 절반으로 줄입니다.

이것은 WebGPU에서만 동작하는데, WebGL이 f16 버퍼를 기본적으로 지원하지 않기 때문입니다. WebGPU가 이전에는 현실적이지 않던 최적화를 가능하게 하는 또 하나의 사례입니다.

GPU 기반 정렬과 절두체 컬링

v2.17.0은 WebGPU에서 splat을 위한 GPU 기반 정렬 및 절두체 컬링 파이프라인을 도입합니다. 이전에는 splat 정렬이 CPU에서 이뤄졌고, 수백만 개의 가우시안을 담은 장면에서는 이게 병목이 됐습니다. 이를 컴퓨트 셰이더로 옮기면 GPU가 데이터를 CPU로 다시 왕복시키지 않고 정렬과 컬링을 모두 처리합니다.

절두체 컬링 단계는 정렬되기 전에 카메라 시야 밖의 splat을 버려서 작업량을 더 줄입니다.

전역 splat 예산

새로운 전역 splat 예산 시스템은 장면 전체의 가우시안 스플랫 LOD 관리를 제공합니다. 장면에 여러 splat 오브젝트가 있을 때, 이제 장면 전체에 대한 총 splat 개수를 설정할 수 있습니다. 엔진은 거리와 화면 점유율을 기준으로 예산을 오브젝트들에 자동으로 분배합니다.

여러 스캔 환경이나 오브젝트를 하나의 장면으로 구성하는 애플리케이션에 실용적입니다. 가상 쇼룸이나 건축 워크스루 같은 경우죠.

PlayCanvas 뷰어로 가우시안 스플래팅 모델을 자체 호스팅하기

Color Enhance와 렌더링 업데이트

이번 릴리스는 중간 톤 제어가 가능한 새로운 Color Enhance 후처리 효과와, 성능을 높이는 반정밀도 bloom 셰이더를 추가합니다. Material.meshInstances가 Array에서 Set으로 바뀌어 인스턴스 제거 작업이 빨라집니다. 렌더 파이프라인에는 front face 지원도 추가됐습니다.

v2.16.0이 다진 기반

직전 릴리스(v2.16.0, 2월 3일)는 2D 가우시안 스플래팅(2DGS) 지원과 WGSL subgroup 지원을 추가했습니다. 2DGS는 3D 타원체 대신 평평한 디스크를 사용하며, 벽이나 바닥 같은 평면 기하에 대해 더 선명한 표면 재구성을 만들 수 있습니다. WGSL subgroup 지원은 컴퓨트 셰이더에서 웨이브 단위 연산을 가능하게 해서, 지원되는 GPU에서 병렬 리덕션을 더 빠르게 합니다.

v2.16과 v2.17은 함께 PlayCanvas를 웹 기반 가우시안 스플래팅의 대표 엔진으로 만드는 데 의미 있는 진전을 보여줍니다.

참고 자료