Android Jetpack WebGPU 라이브러리는 WebGPU 표준을 위한 자연스러운 Kotlin 바인딩을 제공하여 Android 애플리케이션 내에서 고성능의 최신 3D 그래픽 및 컴퓨팅 기능을 지원합니다.
WebGPU는 WebGL의 후속이며 OpenGL의 정신적 후손으로, 최신 GPU의 작동 방식을 반영하고 교차 플랫폼, 안전하고 인체공학적인 방식으로 GPU 기능을 노출하도록 처음부터 빌드되었습니다.
WebGPU를 사용해야 하는 이유
- 간소화된 사용성: Vulkan은 Android의 기본 저수준 그래픽 API입니다. WebGPU는 Vulkan에 비해 접근성이 높고 사용 시 장황함이 훨씬 적은 최신 상위 수준 API를 제공합니다.
- 일괄 처리 및 직렬화 WebGPU는 프로토콜 채팅을 최소화하기 위한 설계의 일부로 여러 명령어를 명령어 버퍼에 기록합니다. 또한 Kotlin 바인딩을 사용할 때 외부 메서드를 호출할 필요성을 최소화합니다.
- 범용 지원: WebGPU 셰이더 코드 (WGSL)는 웹을 비롯한 플랫폼 전반의 WebGPU 구현 간에 직접 공유할 수 있습니다.
- 최적화된 컴퓨팅: 컴퓨팅 작업과 그래픽 작업 간의 원활한 복사 없는 버퍼 공유를 통해 기존 API에 비해 성능이 향상되고 개발이 간소화됩니다.
이 라이브러리의 대상
이 라이브러리는 GPU에 직접 액세스해야 하는 고성능 애플리케이션을 빌드하기 위해 설계되었습니다.
- 이미지 및 동영상 처리 필터
- 데이터 시각화
- 머신러닝 추론
- 게임 및 시뮬레이션
목표가 아닌 사항: 게임 엔진이 아닌 그래픽 API입니다. 자체 렌더링 루프, 카메라 매트릭스, 장면 그래프를 관리할 책임은 사용자에게 있습니다.
핵심 WebGPU 개념
기본 WebGPU 객체와 객체의 상호작용 방식을 이해하는 것은 WebGPU 개발에 필수적입니다.
개념 |
설명 |
인스턴스 |
어댑터와 서페이스에 대한 액세스 권한을 부여하는 WebGPU의 진입점 |
어댑터 |
기기의 특정 GPU를 나타냅니다. |
기기 |
리소스가 생성되는 GPU에 대한 논리적 연결 |
Queue |
GPU에 명령어를 제출하는 데 사용되는 메커니즘 |
Shader Module |
WebGPU Shading Language(WGSL)로 작성된 GPU 코드 |
파이프라인 |
작업의 전체 GPU 상태 (셰이더, 혼합)를 설명하는 객체 |
바인드 그룹 |
데이터 버퍼 (예: 텍스처)를 셰이더에 연결합니다. |
명령어 인코더 |
GPU 명령 시퀀스를 명령 버퍼로 빌드하는 데 사용되는 객체 |