웹GPU 생태계 파악하기

WebGPU는 단순한 웹 그래픽스 API가 아니라, Direct3D 12, Metal, Vulkan과 유사한 GPU 기능을 제공하는 통합적이고 빠른 접근을 가능하게 하는 기술.
이 기술은 JavaScript API를 넘어서 WebAssembly와 같은 기본적인 구성 요소로서, 웹을 넘어서 확장되는 생태계를 가지고 있음.
JavaScript 사양은 Apple, Google, Intel, Mozilla, Microsoft와 같은 여러 조직의 협력으로 시작되었으며, 현재 모든 주요 웹 브라우저가 WebGPU를 구현하고 있거나 구현 중에 있음.
Mozilla와 Google은 WebGPU의 잠재력을 인식하고 브라우저에서 분리하여 독립적으로 사용할 수 있도록 했음.
Chrome에 대해 이는 Dawn이라는 C/C++ 라이브러리로 구현되어, WebGPU 호출을 GPU 드라이버 명령으로 변환함. Dawn은 C 및 C++ 애플리케이션에게 브라우저 벤더의 전문 지식을 사용하여 휴대성 있고 사용하기 쉬운 GPU 추상화를 제공.
Emscripten, C++ WebAssembly 툴체인은 이미 WebGPU를 지원하며, 웹으로 포팅하는 데 최소한의 수정만 필요.
Node.js JavaScript 런타임은 Dawn을 기반으로 한 WebGPU 모듈을 포함하여, 브라우저 외부에서 JavaScript WebGPU 코드를 실행할 수 있음.
Rust에 대한 유사한 생태계는 wgpu를 통해 존재하며, 이는 Firefox의 WebGPU 구현. Wgpu는 Rust 애플리케이션에 직접 통합될 수 있고, web-sys를 사용하여 웹으로 포팅될 수 있음
Deno JavaScript 런타임도 wgpu를 통해 WebGPU를 지원.
WebGPU 생태계는 JavaScript, C++, Rust 영역을 넘어서 확장되고 있음.
WebGPU 구현에 참여하는 엔지니어들은 WebGPU에 대한 공통 C 헤더도 개발 중이며, 이는 Dawn, wgpu 등을 대상으로 하여 C FFI를 사용하는 언어에 대한 바인딩 생성을 용이하게 함.
Chrome 팀은 모든 브라우저 UI 요소의 기본 렌더링 백엔드로 Dawn을 사용하는 것을 고려 중이며, 이는 개발 과정을 단순화함. 이 기능은 현재 macOS와 Windows에서 실험적 단계로, chrome://flags/#skia-graphite 플래그에서 진행.
자세한 내용은 : https://developer.chrome.com/en/blog/webgpu-ecosystem/
