Android용 WebGPU

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 명령 시퀀스를 명령 버퍼로 빌드하는 데 사용되는 객체