מספר התכונות של WebGPU עשוי להיות מעט דל בשלב זה, אבל כמה מהשיפורים העיקריים הם ממש מעבר לפינה! המהדורות העתידיות יכללו תכונות כמו שיפורי המהירות של הידור ההצללה (shader) ושינויים במודל האסינכרוני של ההטמעה באמצעות WGPUFuture.
קבוצות משנה (תכונה שנמצאת בפיתוח)
תכונת תת-הקבוצות מאפשרת מקביליות ברמת SIMD, ומאפשרת לשרשורים בתוך קבוצה לתקשר ולבצע פעולות מתמטיות קולקטיביות (למשל, חישוב הסכום של 16 מספרים). כך אפשר לשתף נתונים בין שרשורים בצורה יעילה מאוד.
פעולות של תתי-קבוצות נתמכות על ידי ממשקי API מודרניים של GPU, אך הפרטים של מתן השמות וההטמעה משתנים. צוות Chrome זיהה את הנקודות הנפוצות ועכשיו הוא פועל ליצירת תקן לתכונה הזו. אם יש לכם שאלות, מומלץ לעיין בהצעה ובתגובה.
יש הטמעה מינימלית ולא סטנדרטית של קבוצות משנה מאחורי הסימון "תכונות ניסיוניות של פלטפורמת אינטרנט" בכתובת chrome://flags/#enable-experimental-web-platform-features
, כך שמפתחים יכולים לנסות את התכונה ולשתף משוב, כי היתרונות בעולם האמיתי עדיין לא הוכחו בהקשר של WebGPU.
כשהתכונה "chromium-experimental-subgroups"
תהיה זמינה בGPUAdapter
, יש לבקש GPUDevice
עם התכונה הזו כדי לקבל תמיכה ניסיונית לקבוצות משנה ב-WGSL ולבדוק את המגבלות של minSubgroupSize
ושל maxSubgroupSize
.
בנוסף, צריך להפעיל במפורש את התוסף הזה בקוד WGSL באמצעות enable chromium_experimental_subgroups
. כשההגדרה מופעלת, מקבלים גישה לתוספות הבאות:
subgroup_invocation_id
: ערך מובנה לאינדקס של השרשור בתוך קבוצת המשנה.subgroup_size
: ערך מובנה לגישה לגודל של קבוצת משנה.subgroupBallot(value):
מחזירה קבוצה של שדות ביטים שבהם הביט שתואם ל-subgroup_invocation_id
הוא 1 אםvalue
נכון להפעלה הפעילה הזו, ו-0 אחרת.subgroupBroadcast(value, id)
: שידורvalue
מההפעלה עםsubgroup_invocation_id
שתואם ל-id
לכל ההפעלות בתוך קבוצת המשנה. הערה:id
חייב להיות קבוע בזמן הידור.
קטע הקוד הבא מספק בסיס לשיפור ולגילוי הפוטנציאל של קבוצות משנה.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-subgroups")) {
throw new Error("Experimental subgroups support is not available");
}
// Explicitly request experimental subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable chromium_experimental_subgroups;
@compute @workgroup_size(64) fn main(
@builtin(global_invocation_id) global_id : vec3u,
@builtin(subgroup_size) sg_size : u32,
@builtin(subgroup_invocation_id) sg_id : u32) {
// TODO: Use subgroupBallot() and subgroupBroadcast().
}`,
});
עיבוד לפרוסה של מרקם תלת-ממדי
עכשיו אפשר לעבד ישירות את המרקמים התלת-ממדיים במעברי עיבוד, ולהרחיב את היכולות שלהם מעבר לעיבוד מרקמים דו-ממדי נפוץ, ולצרף את החבר החדש depthSlice
אל GPURenderPassColorAttachment
. התוספת הזו מאפשרת, למשל, ליצור סצנות ואפקטים המבוססים על ווקסל על ידי רינדור ישירות לתוך נפחי מרקם תלת ממדיים. להצגת בעיה בזריחה:1020.
עדכונים בשעות השחר
כדאי לעיין ברשימת ההתחייבויות המקיפה.
מה חדש ב-WebGPU
רשימה של כל מה שמכוסה בסדרה מה חדש ב-WebGPU.
Chrome 125
Chrome 124
- טקסטורות של אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers ובעובדים משותפים
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים עם שחר
Chrome 123
- ב-WGSL יש תמיכה בפונקציות מובנות של DP4a
- פרמטרים לא מוגבלים של מצביע ב-WGSL
- תחביר סוכר להפחתת אזכור של רכיבים ב-WGSL
- מצב קריאה בלבד נפרד להיבטים של שבלונה ועומק
- עדכונים עם שחר
גרסה 122 של Chrome
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה שנמצאת בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים עם שחר
גרסה 121 של Chrome
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC להידור של תוכנת הצללה (shader) ב-Windows
- שאילתות עם חותמת זמן באישורי מחשוב ועיבוד
- נקודות כניסה המוגדרות כברירת מחדל למודולים של תוכנת הצללה (shader)
- תמיכה ב-display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערימות זיכרון
- עדכונים עם שחר
Chrome 120
- תמיכה בערכי נקודה צפה (floating-point) של 16 ביט ב-WGSL
- בוחנים את הגבולות
- שינויים במצב העומק של שבלונה
- עדכונים של פרטי המתאם
- יצירת כמות של שאילתות בחותמות זמן
- תכונות לניקוי אביב
גרסה 119 של Chrome
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט קודקוד unorm10-10-10-2
- פורמט מרקם rgb10a2uint
- עדכונים עם שחר
גרסה 118 של Chrome
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם של אחסון לקריאה בלבד ולקריאה בלבד
- עדכונים עם שחר
גרסה 117 של Chrome
- ביטול הגדרה של מאגר נתונים זמני של קודקוד
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשמכשיר אבד
- עדכונים ליצירת מודול של תוכנת הצללה (shader) SPIR-V
- שיפור חוויית המפתחים
- שמירה במטמון של צינורות עיבוד נתונים עם פריסה שנוצרת באופן אוטומטי
- עדכונים עם שחר
גרסה 116 של Chrome
- שילוב עם קודק אינטרנט
- מכשיר שאבד הוחזר על ידי GPUAdapter
requestDevice()
- הפעלת הסרטון צריכה להיות חלקה אם מתקשרים ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים עם שחר
Chrome 115
- תוספים נתמכים של שפות WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל כשאין חיבור לחשמל
- שיפור חוויית המפתחים
- עדכונים עם שחר
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() בבד קנבס שלא הוגדר עלול לגרום ל- InvalidStateError
- עדכונים לגבי WGSL
- עדכונים עם שחר