ไลบรารี 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 ลงในบัฟเฟอร์คำสั่ง |