‫WebGPU ל-Android

ספריית WebGPU של Android Jetpack מספקת קשירות (bindings) של Kotlin אידיומטיות לתקן WebGPU, ומאפשרת גרפיקה תלת-ממדית מודרנית וביצועים גבוהים, וגם יכולות חישוב באפליקציות Android.

‫WebGPU הוא המחליף של WebGL והוא נגזר מ-OpenGL. הוא נבנה מהיסוד כדי לשקף את אופן הפעולה של מעבדי GPU מודרניים ולחשוף את היכולות של מעבדי GPU בצורה חוצת-פלטפורמות, בטוחה וארגונומית.

למה כדאי להשתמש ב-WebGPU?

  • שיפור השימושיות: Vulkan הוא ממשק ה-API הגרפי ברמה נמוכה העיקרי ב-Android. ‫WebGPU הוא API מודרני ברמה גבוהה יותר, שקל יותר להבנה ופחות מפורט בהשוואה ל-Vulkan.
  • עיבוד באצווה וסדרות WebGPU מתעד מספר פקודות במאגרי פקודות, כחלק מהעיצוב שלו שמטרתו למזער את התקשורת המיותרת בפרוטוקול. בנוסף, כך מצמצמים את הצורך להפעיל methods חיצוניים כשמשתמשים ב-Kotlin bindings.
  • תמיכה אוניברסלית: אפשר לשתף קוד של הצללה ב-WebGPU‏ (WGSL) ישירות בין הטמעות של WebGPU בפלטפורמות שונות, כולל באינטרנט.
  • מחשוב אופטימלי: שיתוף חלק של מאגרים ללא העתקה בין משימות מחשוב ומשימות גרפיות משפר את הביצועים ומפשט את הפיתוח בהשוואה לממשקי API מדור קודם.

למי מיועדת הספרייה הזו

הספרייה הזו מיועדת ליצירת אפליקציות עם ביצועים גבוהים שנדרשת להן גישה ישירה ל-GPU:

  • מסננים לעיבוד תמונות וסרטונים
  • תרשימים להמחשת נתונים
  • הסקת מסקנות בלמידת מכונה
  • משחקים וסימולציות

מה לא נכלל: מדובר ב-API לגרפיקה, ולא במנוע משחקים. אתם אחראים לניהול של לולאת הרינדור, מטריצות המצלמה וגרף הסצנה.

מושגי ליבה ב-WebGPU

כדי לפתח באמצעות WebGPU, חשוב להבין את האובייקטים הבסיסיים של WebGPU ואת האינטראקציה ביניהם.

מושג

תיאור

Instance

נקודת הכניסה ל-WebGPU, שמעניקה גישה למתאמים ולמשטחים

מתאם

מייצג GPU ספציפי במכשיר

מכשיר

החיבור הלוגי שלכם למעבד ה-GPU שבו נוצרים המשאבים

רשימת סרטונים

המנגנון שמשמש לשליחת פקודות ל-GPU

Shader Module

קוד ה-GPU, שנכתב בשפת ההצללה של WebGPU‏ (WGSL)

צינורות עיבוד נתונים

אובייקטים שמתארים את כל מצב ה-GPU (הצללות, מיזוג) של משימה

קישור קבוצות

קשירת מאגרי נתונים (לדוגמה: טקסטורות) לשיידרים

Command Encoder

אובייקט שמשמש ליצירת רצף של פקודות GPU במאגר פקודות