مواد زخرفية عائمة قابلة للفلترة بسعة 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 بت للّون الشفاف. راجِع المثال التالي وissue 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()
- آخر الأخبار حول Dawn
Chrome 130
- دمج مصدرَين
- تحسينات على وقت تجميع برامج التظليل في Metal
- إيقاف نهائي لطريقة requestAdapterInfo() في GPUAdapter
- آخر الأخبار حول Dawn
الإصدار 129 من Chrome
- التوافق مع النطاق العالي الديناميكية (HDR) باستخدام وضع "تعيين نغمة الصورة"
- إتاحة المجموعات الفرعية الموسّعة
- آخر الأخبار حول Dawn
Chrome 128
- تجربة المجموعات الفرعية
- إيقاف نهائي لإعداد الميل إلى العمق للخطوط والنقاط
- إخفاء تحذير أدوات مطوّري البرامج بشأن الخطأ الذي لم يتم تسجيله في حال استخدام preventDefault
- تستخدم WGSL أسلوب الاستقراء في أخذ العينات أولاً ثم
- آخر الأخبار حول Dawn
Chrome 127
- الإصدار التجريبي من OpenGL ES على Android
- سمة info في GPUAdapter
- تحسينات على إمكانية التشغيل التفاعلي لـ WebAssembly
- أخطاء محسّنة في برنامج ترميز الأوامر
- آخر الأخبار حول Dawn
الإصدار 126 من Chrome
- زيادة الحد الأقصى لعدد الطبقات في مصفوفة النسيج
- تحسين تحميل المخزن المؤقت لنظام Vulkan الأساسي
- تحسينات على وقت تجميع برامج التظليل
- يجب أن تكون وحدات تخزين المؤقتات للطلبات المرسَلة فريدة
- آخر الأخبار حول Dawn
الإصدار 125 من Chrome
- المجموعات الفرعية (ميزة قيد التطوير)
- العرض على شكل شريحة من الزخرفة الثلاثية الأبعاد
- آخر الأخبار حول Dawn
Chrome 124
- ملفات تخزين للقراءة فقط والقراءة والكتابة
- توافق مشغّلي الخدمات والمشغّلين المشترَكين
- سمات معلومات المحوِّل الجديدة
- إصلاح الأخطاء
- آخر الأخبار حول Dawn
Chrome 123
- إتاحة الوظائف المضمّنة في DP4a في WGSL
- مَعلمات المؤشر غير المقيّدة في WGSL
- Syntax sugar for dereferencing composites in WGSL
- حالة منفصلة للقراءة فقط لجانبَي الاستنسل والعمق
- آخر الأخبار حول Dawn
Chrome 122
- توسيع مدى الوصول باستخدام وضع التوافق (ميزة قيد التطوير)
- زيادة الحد الأقصى لعدد سمات الرأس
- آخر الأخبار حول Dawn
الإصدار 121 من Chrome
- إتاحة WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع البرامج النصية لتأثيرات الإضاءة على نظام التشغيل Windows
- طلبات البحث عن الطوابع الزمنية في عمليات الحساب وعمليات التقديم
- نقاط الدخول التلقائية إلى وحدات تأثيرات التظليل
- إتاحة display-p3 كمساحة ألوان GPUExternalTexture
- معلومات عن مجموعات الذاكرة
- آخر الأخبار حول Dawn
الإصدار 120 من Chrome
- إتاحة قيم النقطة العائمة 16 بت في WGSL
- الارتقاء إلى آفاق جديدة
- التغييرات في حالة "استنسل العمق"
- تعديلات على معلومات المحوِّل
- تجميع طلبات البحث عن الطوابع الزمنية
- ميزات تنظيف الربيع
الإصدار 119 من Chrome
- المواد التي تتضمّن قيمًا عائمة بسعة 32 بت ويمكن فلترتها
- تنسيق رؤوس unorm10-10-10-2
- تنسيق نسيج rgb10a2uint
- آخر الأخبار حول Dawn
Chrome 118
- إتاحة HTMLImageElement وImageData في
copyExternalImageToTexture()
- إتاحة تجريبية لنسيج التخزين للقراءة والكتابة والقراءة فقط
- آخر الأخبار حول Dawn
Chrome 117
- عدم ضبط مخزن رؤوس المضلّعات
- إلغاء ضبط مجموعة الربط
- تجاهُل الأخطاء الناتجة عن إنشاء مسار بيانات غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة وحدات الإضاءة SPIR-V
- تحسين تجربة المطوّرين
- عمليات وضع البيانات في ذاكرة التخزين المؤقت باستخدام تنسيق يتم إنشاؤه تلقائيًا
- آخر الأخبار حول Dawn
Chrome 116
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه بواسطة GPUAdapter
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو في حال تلقّي طلب
importExternalTexture()
- الامتثال للمواصفات
- تحسين تجربة المطوّرين
- آخر الأخبار حول Dawn
Chrome 115
- إضافات لغات WGSL المتوافقة
- التوافق التجريبي مع Direct3D 11
- استخدام وحدة معالجة الرسومات المنفصلة تلقائيًا عند استخدام طاقة التيار المتّصل
- تحسين تجربة المطوّرين
- آخر الأخبار حول Dawn
الإصدار 114 من Chrome
- تحسين JavaScript
- تؤدي دالة getCurrentTexture() على لوحة غير مُعدَّة إلى طرح InvalidStateError
- آخر الأخبار حول WGSL
- آخر الأخبار حول Dawn