תיעוד הסביבה העסקית של WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

WebGPU נחשב בדרך כלל ל-API של גרפיקה באינטרנט שמספק גישה מאוחדת ומהירה ל-GPUs על ידי חשיפת יכולות חומרה מתקדמות והפעלת פעולות עיבוד ועיבוד ב-GPU, בדומה ל-Direct3D 12, ל-Metal ול-Vulkan.

עם זאת, WebGPU חוצה את הגבולות של ממשק JavaScript API בלבד. זהו אבן בניין בסיסית הדומה ל-WebAssembly, עם השלכות שחורגות מגבולות האינטרנט בגלל הסביבה העסקית המתפתחת. צוות Chrome מתייחס ל-WebGPU כאל יותר מטכנולוגיית אינטרנט. זוהי סביבה עסקית משגשגת שמתמקדת בטכנולוגיית ליבה.

סקירה של המערכת האקולוגית הנוכחית

המסע מתחיל במפרט JavaScript, מאמץ משותף של ארגונים רבים כמו Apple,‏ Google,‏ Intel,‏ Mozilla ו-Microsoft. כל דפדפני האינטרנט העיקריים הטמיעו את WebGPU או נמצאים בתהליך הטמעה שלו.

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

ב-Chrome, התוצאה הייתה Dawn, ספריית C/C++ שמתרגמת קריאות WebGPU לפקודות של מנהל GPU. באמצעות Dawn, אפליקציות C ו-C++ יכולות להשתמש ב-WebGPU באופן מקורי, ומספקות הפשטה ארגונומית וניידת של GPU באמצעות המומחיות של ספקי הדפדפנים.

כפי שמוצג בפוסט בבלוג WebGPU: ממשק ה-API העתידי לגרפיקת פלטפורמות, העברה של אפליקציית WebGPU ספציפית לפלטפורמה לאינטרנט היא פשוטה. Emscripten, צרור הכלים של C++ WebAssembly, כבר תומך ב-WebGPU, וצריך לבצע בו שינויים קלים בלבד כדי לנייד אותו לאינטרנט.

אפשר גם להריץ את קוד JavaScript WebGPU מחוץ לדפדפן באמצעות סביבת זמן הריצה של JavaScript ב-Node.js, כי היא כוללת מודול WebGPU שמבוסס על Dawn. הוא מאפשר לכם להריץ את הקוד בלי שינויים בצד השרת או בהקשרים אחרים שספציפיים לפלטפורמה.

קיימת סביבה דומה ל-Rust עם wgpu, ההטמעה של WebGPU ב-Firefox. אפשר לשלב את Wgpu ישירות באפליקציות Rust, ואז להעביר אותן לאינטרנט באמצעות web-sys. בנוסף, סביבת זמן הריצה של JavaScript ב-Deno תומכת ב-WebGPU דרך wgpu. פוסט בבלוג בנושא הברית של wgpu עם Deno

הפעולה הזו יוצרת סביבה עסקית מקבילה בין Rust ו-C++ כפי שמוצג בתרשים הבא.

תרשים של הסביבה העסקית של WebGPU ב-2023.
סביבת WebGPU בשנת 2023.

אופק חדש

סביבת WebGPU חורגת מתחומי JavaScript,‏ C++‎ ו-Rust.

יכול להיות שכבר יש קישורים ל-WebGPU בשפת התכנות המועדפת עליכם, כי מהנדסים שעובדים על הטמעות של WebGPU מפתחים גם כותרת C משותפת ל-WebGPU. אפשר להשתמש באפשרות הזו כדי לטרגט את השחר, את wgpu ועוד, וכך להקל על יצירת קישורים לשפות באמצעות C FFI.

צוות Chrome גם שוקל להשתמש ב-Dawn כקצה העורפי של עיבוד התמונה שמוגדר כברירת מחדל לכל רכיבי ממשק המשתמש בדפדפן, כולל תפריטים, סרגל כלים, כלים למפתחים ותוכן אינטרנט. כך לא תצטרכו להטמיע עיבוד גרפי בנפרד לכל ממשק API מקורי, ותהליך הפיתוח יהיה פשוט יותר. התכונה הזו נמצאת בשלב ניסיוני ב-macOS וב-Windows באמצעות הדגל chrome://flags/#skia-graphite.