שילוב של שני מקורות
שילוב של שני פלטים של תוכנת ההצללה למקטעים בתוך מאגר נתונים זמני אחד נקרא מיזוג מקורות כפול. השיטה הזו שימושית במיוחד לאפליקציות שדורשות פעולות מיזוג מורכבות, כמו אלה שמבוססות על מצבי שילוב של פורטר-דאף. כדי לשפר את הביצועים והגמישות, אפשר להחליף את אישורי העיבוד הבאים באישור אחד של רינדור, וכך מיזוג של שני מקורות יכול לשפר את הביצועים.
התכונה החדשה "dual-source-blending"
WebGPU מאפשרת להשתמש במאפיין @blend_src
של WGSL בכתובת @location(0)
כדי לציין את אינדקס המקור של השילוב ואת הגורמים המשולבים הבאים: "src1"
, "one-minus-src1"
, "src1-alpha"
ו-"one-minus-src1-alpha"
. אפשר לעיין בקטע הקוד הבא, ברשומה ב-chromestatus ובבעיה 341973423.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("dual-source-blending")) {
throw new Error("Dual source blending support is not available");
}
// Explicitly request dual source blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["dual-source-blending"],
});
const code = `
enable dual_source_blending;
struct FragOut {
@location(0) @blend_src(0) color : vec4f,
@location(0) @blend_src(1) blend : vec4f,
}
@fragment fn main() -> FragOut {
var output : FragOut;
output.color = vec4f(1.0, 1.0, 1.0, 1.0);
output.blend = vec4f(0.5, 0.5, 0.5, 0.5);
return output;
}
`;
const shaderModule = device.createShaderModule({ code });
// Create a render pipeline with this shader module
// and run the shader on the GPU...
שיפורים בזמן הידור של שגיאות ב-Metal
צוות Chrome משפר את Tint, מהדר השפה של תוכנת ההצללה (shader) WebGPU, על ידי הוספת ייצוג ביניים (IR) למכשירים שתומכים ב-WebGPU עם הקצה העורפי של Metal. ה-IR הזה, שנמצא בין עץ התחביר המופשט (AST) של Tint לבין כתב הקצה העורפי של המטאל, יהפוך את המהדר ליעיל יותר ובר-תחזוקה, ובסופו של דבר יועיל גם למפתחים וגם למשתמשים. בדיקות ראשוניות מראות שהגרסה החדשה של Tint מהירה יותר פי 10 בתרגום של תוכנות הצללה (shader) WGSL של Unity ל-MSL.
השיפורים האלה, שכבר זמינים ב-Android וב-ChromeOS, מורחבים בהדרגה למכשירי macOS שתומכים ב-WebGPU עם הקצה העורפי של Metal. בעיה מס' 42251016
הוצאה משימוש של GPUAdapter requestAdapterInfo()
השיטה האסינכרונית requestAdapterInfo()
של GPUAdapter היא מיותרת, כי מפתחים כבר יכולים לקבל את GPUAdapterInfo באופן סינכרוני באמצעות המאפיין info
של GPUAdapter. לכן, השיטה הלא סטנדרטית requestAdapterInfo()
של GPUAdapter הוצאה משימוש. כוונה להוצאה משימוש
עדכונים לגבי זריחה
ב-webgpu.h C API הוגדרו כמה מוסכמות מתן שמות למבני תוספים. מומלץ לעיין בשינויים הבאים בשמות ובבעיה 42241174.
WGPURenderPassDescriptor תוספים
|
|
WGPURenderPassDescriptorMaxDrawCount ->
|
WGPURenderPassMaxDrawCount
|
WGPUShaderModuleDescriptor תוספים
|
|
WGPUShaderModuleSPIRVDescriptor ->
|
WGPUShaderSourceSPIRV
|
WGPUShaderModuleWGSLDescriptor ->
|
WGPUShaderSourceWGSL
|
WGPUSurfaceDescriptor תוספים
|
|
WGPUSurfaceDescriptorFromMetalLayer ->
|
WGPUSurfaceSourceMetalLayer
|
WGPUSurfaceDescriptorFromWindowsHWND ->
|
WGPUSurfaceSourceWindowsHWND
|
WGPUSurfaceDescriptorFromXlibWindow ->
|
WGPUSurfaceSourceXlibWindow
|
WGPUSurfaceDescriptorFromWaylandSurface ->
|
WGPUSurfaceSourceWaylandSurface
|
WGPUSurfaceDescriptorFromAndroidNativeWindow ->
|
WGPUSurfaceSourceAndroidNativeWindow
|
WGPUSurfaceDescriptorFromXcbWindow ->
|
WGPUSurfaceSourceXCBWindow
|
WGPUSurfaceDescriptorFromCanvasHTMLSelector ->
|
WGPUSurfaceSourceCanvasHTMLSelector_Emscripten
|
סוג המאפיין depthWriteEnabled
של WGPUDepthStencilState
משתנה מבוליאני ל-WGPUOptionalBool
כדי לשקף טוב יותר את שלושת המצבים האפשריים שלו (true, false ו-undefined) כמו ב-JavaScript API. מידע נוסף זמין בקטע הקוד הבא ובבקשת ה-PR של webgpu-headers.
wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default
הסקירה הזו כוללת רק חלק מהנקודות העיקריות. רשימת ההצהרות המלאה
מה חדש ב-WebGPU
רשימה של כל מה שנדון בסדרה מה חדש ב-WebGPU.
Chrome 130
- שילוב של שני מקורות
- שיפורי זמן ההידור של המטאל
- הוצאה משימוש של GPUAdapter requestAdapterInfo()
- עדכונים לגבי Dawn
Chrome 129
Chrome 128
- התנסות עם תתי-קבוצות
- הוצאה משימוש של הגדרת הטיה של עומק לקווים ולנקודות
- הסתרת אזהרה של DevTools על שגיאה שלא תועדה אם preventDefault
- WGSL מבצעת אינטרפולציה של הדגימה קודם ואז
- עדכונים לגבי Dawn
Chrome 127
- תמיכה ניסיונית ב-OpenGL ES ב-Android
- מאפיין המידע של GPUAdapter
- שיפורים ב-WebAssembly יכולת פעולה הדדית
- שיפור בשגיאות מקודד פקודות
- עדכונים לגבי Dawn
Chrome 126
- הגדלת המגבלה של maxTextureArrayLayers
- אופטימיזציה של העלאה למאגר לצד העורפי של Vulkan
- שיפורים בזמן ההידור של Shader
- מאגרי הפקודות שנשלחים חייבים להיות ייחודיים
- עדכונים לגבי זריחה
Chrome 125
Chrome 124
- טקסטורות אחסון לקריאה בלבד ולקריאה וכתיבה
- תמיכה ב-Service Workers וב-Shared Workers
- מאפיינים חדשים של פרטי מתאם
- תיקוני באגים
- עדכונים לגבי זריחה
Chrome 123
- תמיכה בפונקציות מובנות של DP4a ב-WGSL
- פרמטרים בלתי מוגבלים של מצביע ב-WGSL
- תחביר פשוט יותר לביטול ההפניה למשתנים מורכבים ב-WGSL
- מצב קריאה בלבד נפרד להבטי שבלונה ובעומק
- עדכונים לגבי Dawn
Chrome 122
- הרחבת פוטנציאל החשיפה באמצעות מצב תאימות (תכונה בפיתוח)
- הגדלת המגבלה של maxVertexAttributes
- עדכונים לגבי Dawn
Chrome 121
- תמיכה ב-WebGPU ב-Android
- שימוש ב-DXC במקום ב-FXC לצורך הידור של שגיאות ב-Windows
- שאילתות חותמות זמן באישורי מחשוב ועיבוד
- נקודות כניסה שמוגדרות כברירת מחדל למודולי שַדְר (shader)
- תמיכה ב-Display-p3 כמרחב צבעים של GPUExternalTexture
- מידע על ערמות זיכרון
- עדכונים לגבי זריחה
Chrome 120
- תמיכה בערכים של נקודה צפה (floating-point) באורך 16 ביט ב-WGSL
- מעבר למגבלות
- שינויים במצב העומק של סטנסיל
- עדכונים של פרטי המתאם
- כימות שאילתות חותמות זמן
- תכונות לניקיון האביב
Chrome 119
- טקסטורות צפות של 32 ביט שניתן לסנן
- פורמט unorm10-10-10-2 קודקוד
- פורמט טקסטורה של IMAP10a2uint
- עדכונים לגבי Dawn
Chrome 118
- תמיכה ב-HTMLImageElement וב-ImageData ב-
copyExternalImageToTexture()
- תמיכה ניסיונית במרקם האחסון לקריאה בלבד ולקריאה בלבד
- עדכונים לגבי זריחה
Chrome 117
- הסרה של מאגר נתונים זמני של קודקודים
- ביטול ההגדרה של קבוצת קישור
- השתקת שגיאות מיצירה של צינור עיבוד נתונים אסינכרוני כשהמכשיר אבד
- עדכונים ליצירת מודול של תוכנת ההצללה (shader) SPIR-V
- שיפור חוויית הפיתוח
- שמירה במטמון של צינורות עיבוד נתונים באמצעות פריסה שנוצרת באופן אוטומטי
- עדכונים לגבי זריחה
Chrome 116
- שילוב WebCodecs
- מכשיר שאבד שהוחזר על ידי GPUAdapter
requestDevice()
- שמירה על רציפות ההפעלה של הסרטון אם מתבצעת קריאה ל-
importExternalTexture()
- תאימות למפרט
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 115
- תוספים נתמכים לשפות של WGSL
- תמיכה ניסיונית ב-Direct3D 11
- קבלת GPU נפרד כברירת מחדל בחיבור לחשמל
- שיפור חוויית המפתחים
- עדכונים לגבי Dawn
Chrome 114
- אופטימיזציה של JavaScript
- getCurrentTexture() ב-Canvas לא מוגדר מפעילה שגיאה מסוג InvalidStateError
- עדכונים מ-WGSL
- עדכונים לגבי זריחה