ترکیب منبع دوگانه
ترکیب دو خروجی shader fragment در یک فریم بافر واحد ترکیب منبع دوگانه نامیده می شود. این تکنیک به ویژه برای برنامه هایی مفید است که به عملیات ترکیب پیچیده نیاز دارند، مانند مواردی که بر اساس حالت های ترکیبی Porter-Duff هستند. با جایگزینی پاسهای رندر بعدی با یک پاس رندر، ترکیب دو منبع میتواند عملکرد و انعطافپذیری را افزایش دهد.
ویژگی جدید WebGPU "dual-source-blending"
به شما امکان می دهد از ویژگی WGSL @blend_src
در @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...
بهبود زمان کامپایل شیدر در فلز
تیم Chrome در حال بهبود Tint، کامپایلر زبان سایه زن WebGPU، با معرفی یک نمایش متوسط (IR) برای دستگاه هایی است که از WebGPU با پشتوانه فلزی پشتیبانی می کنند. این IR که بین درخت نحو انتزاعی Tint (AST) و نویسنده باطن فلزی قرار گرفته است، کامپایلر را کارآمدتر و قابل نگهداری تر می کند و در نهایت هم به توسعه دهندگان و هم برای کاربران سود می رساند. آزمایشات اولیه نشان می دهد که نسخه جدید Tint هنگام ترجمه سایه زن های WGSL Unity به MSL تا 10 برابر سریعتر است.
این پیشرفتها که قبلاً در Android و ChromeOS قابل دسترسی هستند، به تدریج به دستگاههای macOS که از WebGPU با باطن فلزی پشتیبانی میکنند، گسترش مییابند. شماره 42251016 را ببینید.
منسوخ شدن GPUAdapter requestAdapterInfo()
روش ناهمزمان requestAdapterInfo()
اضافی است زیرا توسعه دهندگان می توانند GPUAdapterInfo را به صورت همزمان با استفاده از ویژگی GPUAdapter info
دریافت کنند. از این رو، روش غیر استاندارد GPUAdapter requestAdapterInfo()
اکنون منسوخ شده است. رجوع به نیت منسوخ شود .
به روز رسانی سحر
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
از boolean به WGPUOptionalBool
تغییر میکند تا سه حالت ممکن (درست، نادرست و تعریف نشده) را مانند API جاوا اسکریپت بهتر منعکس کند. برای کسب اطلاعات بیشتر، قطعه کد زیر و webgpu-headers PR را ببینید.
wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در WebGPU جدید است
فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.
کروم 131
- فاصله های کلیپ در WGSL
- GPUCanvasContext getConfiguration()
- نقطه و خط اولیه نباید بایاس عمق داشته باشند
- توابع داخلی اسکن جامع برای زیرگروه ها
- پشتیبانی آزمایشی برای چند قرعه کشی غیر مستقیم
- گزینه کامپایل ماژول Shader ریاضی سخت
- حذف GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 130
- ترکیب منبع دوگانه
- بهبود زمان کامپایل شیدر در فلز
- منسوخ شدن GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 129
کروم 128
- آزمایش با زیر گروه ها
- بایاس عمق تنظیم را برای خطوط و نقاط منسوخ کنید
- در صورت جلوگیری از Default، هشدار DevTools خطای ضبط نشده را مخفی کنید
- WGSL ابتدا نمونهگیری را درونیابی میکند و هر کدام را
- به روز رسانی سحر
کروم 127
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای WebAssembly interop
- خطاهای رمزگذار فرمان بهبود یافته است
- به روز رسانی سحر
کروم 126
- حد maxTextureArrayLayers را افزایش دهید
- بهینه سازی بارگذاری بافر برای باطن Vulkan
- بهبود زمان کامپایل شیدر
- بافرهای فرمان ارسالی باید منحصر به فرد باشند
- به روز رسانی سحر
کروم 125
کروم 124
- بافت های ذخیره سازی فقط خواندنی و خواندنی و نوشتنی
- پشتیبانی کارگران خدماتی و کارگران مشترک
- ویژگی های اطلاعات آداپتور جدید
- رفع اشکال
- به روز رسانی سحر
کروم 123
- توابع داخلی DP4a در WGSL پشتیبانی می کند
- پارامترهای اشاره گر نامحدود در WGSL
- قند نحوی برای عدم ارجاع کامپوزیت ها در WGSL
- حالت فقط خواندنی را برای جنبه های استنسیل و عمق جدا کنید
- به روز رسانی سحر
کروم 122
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- حد maxVertexAttributes را افزایش دهید
- به روز رسانی سحر
کروم 121
- پشتیبانی از WebGPU در اندروید
- برای کامپایل شیدر در ویندوز به جای FXC از DXC استفاده کنید
- پرس و جوهای مهر زمانی در گذرنامه های محاسبه و ارائه
- نقاط ورودی پیش فرض به ماژول های سایه زن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات انبوه حافظه
- به روز رسانی سحر
کروم 120
- پشتیبانی از مقادیر ممیز شناور 16 بیتی در WGSL
- محدودیت ها را فشار دهید
- تغییرات در حالت عمقی-استنسیل
- به روز رسانی اطلاعات آداپتور
- کوانتیزاسیون پرس و جوهای مهر زمانی
- ویژگی های تمیز کردن فنری
کروم 119
کروم 118
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- به روز رسانی سحر
کروم 117
- بافر راس را تنظیم نکنید
- گروه bind را تنظیم نکنید
- هنگام گم شدن دستگاه، خطاهای ایجاد خط لوله ناهمگام را خاموش کنید
- به روز رسانی های ایجاد ماژول سایه زن SPIR-V
- بهبود تجربه توسعه دهندگان
- ذخیره سازی خطوط لوله با طرح تولید خودکار
- به روز رسانی سحر
کروم 116
- یکپارچه سازی WebCodecs
- دستگاه گمشده توسط GPUAdapter
requestDevice()
برگردانده شد - در صورت فراخوانی
importExternalTexture()
پخش ویدیو را روان نگه دارید - مطابقت با مشخصات
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 115
- پشتیبانی از پسوندهای زبان WGSL
- پشتیبانی آزمایشی از Direct3D 11
- GPU گسسته را به طور پیشفرض با برق AC دریافت کنید
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 114
- بهینه سازی جاوا اسکریپت
- getCurrentTexture() روی بوم پیکربندی نشده خطای InvalidState را ایجاد می کند
- به روز رسانی WGSL
- به روز رسانی سحر
کروم 113
،ترکیب منبع دوگانه
ترکیب دو خروجی shader fragment در یک فریم بافر واحد ترکیب منبع دوگانه نامیده می شود. این تکنیک به ویژه برای برنامه هایی مفید است که به عملیات ترکیب پیچیده نیاز دارند، مانند مواردی که بر اساس حالت های ترکیبی Porter-Duff هستند. با جایگزینی پاسهای رندر بعدی با یک پاس رندر، ترکیب دو منبع میتواند عملکرد و انعطافپذیری را افزایش دهد.
ویژگی جدید WebGPU "dual-source-blending"
به شما امکان می دهد از ویژگی WGSL @blend_src
در @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...
بهبود زمان کامپایل شیدر در فلز
تیم Chrome در حال بهبود Tint، کامپایلر زبان سایه زن WebGPU، با معرفی یک نمایش متوسط (IR) برای دستگاه هایی است که از WebGPU با پشتوانه فلزی پشتیبانی می کنند. این IR که بین درخت نحو انتزاعی Tint (AST) و نویسنده باطن فلزی قرار گرفته است، کامپایلر را کارآمدتر و قابل نگهداری تر می کند و در نهایت هم به توسعه دهندگان و هم برای کاربران سود می رساند. آزمایشات اولیه نشان می دهد که نسخه جدید Tint هنگام ترجمه سایه زن های WGSL Unity به MSL تا 10 برابر سریعتر است.
این پیشرفتها که قبلاً در Android و ChromeOS قابل دسترسی هستند، به تدریج به دستگاههای macOS که از WebGPU با باطن فلزی پشتیبانی میکنند، گسترش مییابند. شماره 42251016 را ببینید.
منسوخ شدن GPUAdapter requestAdapterInfo()
روش ناهمزمان requestAdapterInfo()
اضافی است زیرا توسعه دهندگان می توانند GPUAdapterInfo را به صورت همزمان با استفاده از ویژگی GPUAdapter info
دریافت کنند. از این رو، روش غیر استاندارد GPUAdapter requestAdapterInfo()
اکنون منسوخ شده است. رجوع به نیت منسوخ شود .
به روز رسانی سحر
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
از boolean به WGPUOptionalBool
تغییر میکند تا سه حالت ممکن (درست، نادرست و تعریف نشده) را مانند API جاوا اسکریپت بهتر منعکس کند. برای کسب اطلاعات بیشتر، قطعه کد زیر و webgpu-headers PR را ببینید.
wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در WebGPU جدید است
فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.
کروم 131
- فاصله های کلیپ در WGSL
- GPUCanvasContext getConfiguration()
- نقطه و خط اولیه نباید بایاس عمق داشته باشند
- توابع داخلی اسکن جامع برای زیرگروه ها
- پشتیبانی آزمایشی برای چند قرعه کشی غیر مستقیم
- گزینه کامپایل ماژول Shader ریاضی سخت
- حذف GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 130
- ترکیب منبع دوگانه
- بهبود زمان کامپایل شیدر در فلز
- منسوخ شدن GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 129
کروم 128
- آزمایش با زیر گروه ها
- بایاس عمق تنظیم را برای خطوط و نقاط منسوخ کنید
- در صورت جلوگیری از Default، هشدار DevTools خطای ضبط نشده را مخفی کنید
- WGSL ابتدا نمونهگیری را درونیابی میکند و هر کدام را
- به روز رسانی سحر
کروم 127
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای WebAssembly interop
- خطاهای رمزگذار فرمان بهبود یافته است
- به روز رسانی سحر
کروم 126
- حد maxTextureArrayLayers را افزایش دهید
- بهینه سازی بارگذاری بافر برای باطن Vulkan
- بهبود زمان کامپایل شیدر
- بافرهای فرمان ارسالی باید منحصر به فرد باشند
- به روز رسانی سحر
کروم 125
کروم 124
- بافت های ذخیره سازی فقط خواندنی و خواندنی و نوشتنی
- پشتیبانی کارگران خدماتی و کارگران مشترک
- ویژگی های اطلاعات آداپتور جدید
- رفع اشکال
- به روز رسانی سحر
کروم 123
- توابع داخلی DP4a در WGSL پشتیبانی می کند
- پارامترهای اشاره گر نامحدود در WGSL
- قند نحوی برای عدم ارجاع کامپوزیت ها در WGSL
- حالت فقط خواندنی را برای جنبه های استنسیل و عمق جدا کنید
- به روز رسانی سحر
کروم 122
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- حد maxVertexAttributes را افزایش دهید
- به روز رسانی سحر
کروم 121
- پشتیبانی از WebGPU در اندروید
- برای کامپایل شیدر در ویندوز به جای FXC از DXC استفاده کنید
- پرس و جوهای مهر زمانی در گذرنامه های محاسبه و ارائه
- نقاط ورودی پیش فرض به ماژول های سایه زن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات انبوه حافظه
- به روز رسانی سحر
کروم 120
- پشتیبانی از مقادیر ممیز شناور 16 بیتی در WGSL
- محدودیت ها را فشار دهید
- تغییرات در حالت عمقی-استنسیل
- به روز رسانی اطلاعات آداپتور
- کوانتیزاسیون پرس و جوهای مهر زمانی
- ویژگی های تمیز کردن فنری
کروم 119
کروم 118
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- به روز رسانی سحر
کروم 117
- بافر راس را تنظیم نکنید
- گروه bind را تنظیم نکنید
- هنگام گم شدن دستگاه، خطاهای ایجاد خط لوله ناهمگام را خاموش کنید
- به روز رسانی های ایجاد ماژول سایه زن SPIR-V
- بهبود تجربه توسعه دهندگان
- ذخیره سازی خطوط لوله با طرح تولید خودکار
- به روز رسانی سحر
کروم 116
- یکپارچه سازی WebCodecs
- دستگاه گمشده توسط GPUAdapter
requestDevice()
برگردانده شد - در صورت فراخوانی
importExternalTexture()
پخش ویدیو را روان نگه دارید - مطابقت با مشخصات
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 115
- پشتیبانی از پسوندهای زبان WGSL
- پشتیبانی آزمایشی از Direct3D 11
- GPU گسسته را به طور پیشفرض با برق AC دریافت کنید
- بهبود تجربه توسعه دهنده
- به روز رسانی سحر
کروم 114
- بهینه سازی جاوا اسکریپت
- getCurrentTexture() روی بوم پیکربندی نشده خطای InvalidState را ایجاد می کند
- به روز رسانی WGSL
- به روز رسانی سحر