WebGPU สำหรับ Android

ไลบรารี WebGPU ของ Android Jetpack มี Binding ของ Kotlin ที่เป็นสำนวนสำหรับมาตรฐาน WebGPU ซึ่งช่วยให้ กราฟิก 3 มิติที่ทันสมัยและมีประสิทธิภาพสูง รวมถึงความสามารถในการประมวลผลภายใน แอปพลิเคชัน Android

WebGPU เป็นรุ่นต่อจาก WebGL และเป็นรุ่นที่สืบทอดมาจาก OpenGL ซึ่งสร้างขึ้นตั้งแต่ต้นเพื่อสะท้อนวิธีการทำงานของ GPU สมัยใหม่และเปิดเผยความสามารถของ GPU ในลักษณะข้ามแพลตฟอร์ม ปลอดภัย และ สะดวก

ทำไมต้อง WebGPU

  • การใช้งานที่มีประสิทธิภาพ: แม้ว่า Vulkan จะเป็น API กราฟิกระดับต่ำหลักใน Android WebGPU มี API ระดับสูงที่ทันสมัยซึ่งเข้าถึงได้ง่ายกว่าและใช้คำน้อยกว่ามากเมื่อเทียบกับ Vulkan
  • การจัดกลุ่มและการทำให้เป็นอนุกรม WebGPU จะบันทึกคำสั่งหลายรายการลงในบัฟเฟอร์คำสั่ง ซึ่งเป็นส่วนหนึ่งของการออกแบบเพื่อลดการสื่อสารผ่านโปรโตคอล ซึ่งยังช่วยลดความจำเป็นในการเรียกใช้เมธอดภายนอกเมื่อใช้การเชื่อมโยง Kotlin ด้วย
  • การรองรับแบบสากล: โค้ด Shader ของ WebGPU (WGSL) สามารถแชร์โดยตรงในการติดตั้งใช้งาน WebGPU ในแพลตฟอร์มต่างๆ รวมถึงเว็บ
  • การประมวลผลที่เพิ่มประสิทธิภาพ: การแชร์บัฟเฟอร์แบบไร้รอยต่อและไม่ต้องคัดลอกระหว่างงานประมวลผลและงานกราฟิกช่วยเพิ่มประสิทธิภาพและลดความซับซ้อนในการพัฒนาเมื่อเทียบกับ API เดิม

ไลบรารีนี้มีไว้สำหรับใคร

ไลบรารีนี้ออกแบบมาเพื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพสูงซึ่งต้องมี สิทธิ์เข้าถึง GPU โดยตรง

  • ฟิลเตอร์การประมวลผลรูปภาพและวิดีโอ
  • การแสดงข้อมูลเป็นภาพ
  • การอนุมานแมชชีนเลิร์นนิง
  • เกมและการจำลอง

เป้าหมายที่ไม่ใช่: นี่คือ Graphics API ไม่ใช่เกมเอนจิน คุณมีหน้าที่ จัดการลูปการแสดงผล เมทริกซ์กล้อง และกราฟฉากของคุณเอง

แนวคิดหลักของ WebGPU

การทำความเข้าใจออบเจ็กต์ WebGPU พื้นฐานและวิธีโต้ตอบเป็นสิ่งสำคัญ ต่อการพัฒนา WebGPU

แนวคิด

คำอธิบาย

อินสแตนซ์

จุดเริ่มต้นของ WebGPU ซึ่งให้สิทธิ์เข้าถึงอแดปเตอร์และพื้นผิว

Adapter

แสดง GPU ที่เฉพาะเจาะจงในอุปกรณ์

อุปกรณ์

การเชื่อมต่อเชิงตรรกะกับ GPU ที่สร้างทรัพยากร

คิว

กลไกที่ใช้ในการส่งคำสั่งไปยัง GPU

Shader Module

โค้ด GPU ที่เขียนใน WebGPU Shading Language (WGSL)

ไปป์ไลน์

ออบเจ็กต์ที่อธิบายสถานะ GPU ทั้งหมด (Shader, การผสม) สำหรับงาน

เชื่อมโยงกลุ่ม

เชื่อมบัฟเฟอร์ข้อมูล (เช่น เท็กซ์เจอร์) กับ Shader

Command Encoder

ออบเจ็กต์ที่ใช้สร้างลำดับคำสั่ง GPU ลงในบัฟเฟอร์คำสั่ง