مواد زخرفية عائمة قابلة للفلترة بسعة 32 بت
تُستخدَم مواد العرض ذات النقطة العائمة بسعة 32 بت لتخزين البيانات العالية الدقة، مثل الصور ذات النطاق العالي الديناميكية وخرائط العمق. وهي مهمة بشكل خاص لوحدات معالجة الرسومات المستخدمة في الألعاب المتطورة والتطبيقات الاحترافية.
يصف خيار "إتاحة استخدام مواد النسيج التي تتضمّن أعدادًا كسرية بدقة 32 بت وقابلة للفلترة" قدرة وحدة معالجة الرسومات على فلترة مواد النسيج التي تتضمّن أعدادًا كسرية بدقة 32 بت. وهذا يعني أنّ وحدة معالجة الرسومات يمكنها تلطيف حواف مواد النسيج ذات النقطة العائمة، ما يجعلها تبدو أقل تعرُّجًا. وهو مشابه للإضافات "OES_texture_float_linear" في WebGL.
لا تتوافق بعض وحدات معالجة الرسومات مع استخدام مواد النسيج التي تتضمّن أعدادًا عائمة بسعة 32 بت وقابلة للفلترة. عندما تكون ميزة "float32-filterable"
متاحة في GPUAdapter
، يمكنك الآن طلب GPUDevice
يتضمّن هذه الميزة وفلترة مواد النسيج باستخدام تنسيقات "r32float" و"rg32float" و "rgba32float". اطّلِع على المثال التالي والمشكلة dawn:1664.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-filterable")) {
throw new Error("Filterable 32-bit float textures support is not available");
}
// Explicitly request filterable 32-bit float textures support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-filterable"],
});
// Create a sampler with linear filtering.
const sampler = device.createSampler({
magFilter: "linear",
});
// Create a texture with rgba32float format.
const texture = device.createTexture({
size: [100, 100],
format: "rgba32float",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with sampler and texture and
// send the appropriate commands to the GPU....
تنسيق رؤوس unorm10-10-10-2
تمت إضافة تنسيق قمة جديد يُسمى "unorm10-10-10-2"، ويُعرف أيضًا باسم "rgb10a2"، إلى مواصفات WebGPU. وتتكوّن من قيمة واحدة مُجمَّعة بسعة 32 بت مع أربع قيم صحيحة غير موقَّعة تم تسويتها، وهي مُرتَّبة على النحو التالي: 10 بت و10 بت و10 بت و2 بت. اطّلِع على المثال التالي والإصدار dawn:2044.
// Define the layout of vertex attribute data with unorm10-10-10-2 format.
const buffers = [
{
arrayStride: 0,
attributes: [
{ format: "unorm10-10-10-2", offset: 0, shaderLocation: 0 },
],
},
];
// Describe the vertex shader entry point and its input buffer layouts.
const vertex = {
module: myVertexShaderModule,
entryPoint: "main",
buffers,
};
// Pass vertex to device.createRenderPipeline() and
// use vec4<f32> type in WGSL shader code to manipulate data.
تنسيق الزخرفة rgb10a2uint
تمت إضافة تنسيق جديد للّوحة يُسمى "rgb10a2uint" إلى مواصفات WebGPU. يتألّف من تنسيق بكسل مُجمَّع بسعة 32 بت مع أربعة مكوّنات عددية غير موقَّعة: الأحمر بسعة 10 بت والأخضر بسعة 10 بت والأزرق بسعة 10 بت وقناة ألفا بسعة 2 بت. يُرجى الاطّلاع على المثال التالي وإصدار سمة dawn:1936.
// Create a texture with rgb10a2uint format.
const texture = device.createTexture({
size: [100, 100],
format: "rgb10a2uint",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with texture and
// send the appropriate commands to the GPU....
آخر الأخبار من Dawn
تتيح طلبات البحث عن الطوابع الزمنية لتطبيقات WebGPU قياس الوقت الذي تستغرقه أوامر وحدة معالجة الرسومات بدقة (وصولاً إلى نانو ثانية). تم تعديل شكل واجهة برمجة التطبيقات لتسجيل طلبات البحث عن الطوابع الزمنية في بداية التصاريح ونهايتها بما يتوافق مع مواصفات WebGPU. اطّلِع على المثال التالي وissue dawn:1800.
// Create a timestamp query set that will store the timestamp values.
wgpu::QuerySetDescriptor querySetDescriptor = {
.count = 2,
.type = wgpu::QueryType::Timestamp};
wgpu::QuerySet querySet = device.CreateQuerySet(&querySetDescriptor);
wgpu::RenderPassTimestampWrites timestampWrites = {
.querySet = querySet,
.beginningOfPassWriteIndex = 0,
.endOfPassWriteIndex = 1};
wgpu::ComputePassDescriptor pass{.timestampWrites = ×tampWrites};
// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);
يتناول هذا فقط بعض النقاط الرئيسية. يمكنك الاطّلاع على قائمة الالتزامات الشاملة.
الميزات الجديدة في WebGPU
قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU
Chrome 131
- اقتصاص المسافات في WGSL
- GPUCanvasContext getConfiguration()
- يجب ألا يكون لعناصر النقطة والخط الأساسية انحياز عمق
- وظائف مدمجة للفحص الشامل للمجموعات الفرعية
- إتاحة تجريبية للرسم المتعدّد غير المباشر
- خيار تجميع وحدة تظليل الرياضيات الصارمة
- إزالة طلب GPUAdapter requestAdapterInfo()
- إشعارات الفجر
Chrome 130
- دمج مصدرَين
- تحسينات على وقت تجميع برامج التظليل في Metal
- إيقاف نهائي لطريقة requestAdapterInfo() في GPUAdapter
- آخر الأخبار حول Dawn
الإصدار 129 من Chrome
- التوافق مع النطاق العالي الديناميكية (HDR) باستخدام وضع "تعيين نغمة الصورة"
- إتاحة المجموعات الفرعية الموسّعة
- آخر الأخبار حول Dawn
الإصدار 128 من Chrome
- تجربة المجموعات الفرعية
- إيقاف ضبط انحياز عمق الخطوط والنقاط
- إخفاء تحذير "أدوات مطوري البرامج" للخطأ الذي لم يتم تصويره في حال تعذَّر استخدام preventDefault
- دمج WGSL أخذ العينات أولاً وإمّا
- آخر الأخبار حول Dawn
الإصدار 127 من Chrome
- الإصدار التجريبي من OpenGL ES على Android
- سمة معلومات محوّل وحدة معالجة الرسومات
- تحسينات على إمكانية التشغيل التفاعلي لـ WebAssembly
- أخطاء محسّنة في برنامج ترميز الأوامر
- إشعارات الفجر
الإصدار 126 من Chrome
- زيادة الحد الأقصى لعدد الطبقات في مصفوفة Texture
- تحسين تحميل المخزن المؤقت لخلفية Vulkan
- تحسينات على وقت تجميع البرامج النصية للظلال
- يجب أن تكون وحدات تخزين المؤقتات للطلبات المرسَلة فريدة
- إشعارات الفجر
الإصدار 125 من Chrome
- المجموعات الفرعية (ميزة قيد التطوير)
- العرض على شكل شريحة من الزخرفة الثلاثية الأبعاد
- آخر الأخبار حول Dawn
الإصدار 124 من Chrome
- زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
- توافق مشغّلي الخدمات والمشغّلين المشترَكين
- سمات معلومات المحوِّل الجديدة
- إصلاح الأخطاء
- آخر الأخبار حول Dawn
Chrome 123
- إتاحة الوظائف المضمّنة في DP4a في WGSL
- معلَمات المؤشر غير المحدودة في WGSL
- تحسينات في البنية لإزالة الإشارة إلى العناصر المركبة في WGSL
- حالة منفصلة للقراءة فقط لجانبَي الاستنسل والعمق
- آخر الأخبار حول Dawn
Chrome 122
- توسيع مدى الوصول باستخدام وضع التوافق (الميزة قيد التطوير)
- زيادة الحد الأقصى لعدد سمات الرأس
- آخر الأخبار حول Dawn
الإصدار 121 من Chrome
- إتاحة WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع أدوات التظليل على Windows
- طلبات البحث عن الطوابع الزمنية في عمليات الحساب وعمليات التقديم
- نقاط الدخول التلقائية إلى وحدات تأثيرات التظليل
- إتاحة العرض-p3 كمساحة لونية في وحدة معالجة الرسومات الخارجية (GPU)
- معلومات عن مجموعات الذاكرة
- آخر الأخبار حول Dawn
الإصدار 120 من Chrome
- إتاحة قيم النقطة العائمة 16 بت في WGSL
- الارتقاء إلى آفاق جديدة
- التغييرات في حالة "استنسل العمق"
- تعديلات على معلومات المحوِّل
- تجميع طلبات البحث عن الطوابع الزمنية
- ميزات تنظيف الربيع
الإصدار 119 من Chrome
- المواد التي تتضمّن قيمًا عائمة بسعة 32 بت وقابلة للفلترة
- تنسيق رؤوس unorm10-10-10-2
- تنسيق نسيج rgb10a2uint
- آخر الأخبار حول Dawn
الإصدار 118 من Chrome
- إتاحة HTMLImageElement وImageData في
copyExternalImageToTexture()
- إتاحة تجريبية لنسيج التخزين للقراءة والكتابة والقراءة فقط
- آخر الأخبار حول Dawn
Chrome 117
- إلغاء ضبط مخزن رؤوس المضلّعات
- إلغاء ضبط مجموعة الربط
- تجاهُل الأخطاء الناتجة عن إنشاء مسار بيانات غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة وحدات الإضاءة SPIR-V
- تحسين تجربة المطوّرين
- عمليات وضع البيانات في ذاكرة التخزين المؤقت باستخدام تنسيق يتم إنشاؤه تلقائيًا
- آخر الأخبار حول Dawn
Chrome 116
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه من خلال محوّل وحدة معالجة الرسومات
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو عند تسمية
importExternalTexture()
- الامتثال للمواصفات
- تحسين تجربة المطوّرين
- إشعارات الفجر
الإصدار 115 من Chrome
- إضافات لغات WGSL المتاحة
- الدعم التجريبي لـ Direct3D 11
- استخدام وحدة معالجة الرسومات المنفصلة تلقائيًا عند استخدام مصدر طاقة متناوب
- تحسين تجربة المطوّرين
- إشعارات الفجر
الإصدار 114 من Chrome
- تحسين JavaScript
- تؤدي دالة getCurrentTexture() على لوحة غير مُعدَّة إلى طرح InvalidStateError
- آخر الأخبار حول WGSL
- آخر الأخبار حول Dawn