قد يكون عدد ميزات WebGPU ضئيلاً هذه المرة، ولكن ستكون بعض التطورات الرئيسية على وشك الانتهاء. ستشمل الإصدارات المستقبلية ميزات مثل تحسينات سرعة تجميع أداة التظليل، وتغييرات في النموذج غير المتزامن للتنفيذ باستخدام WGPUFuture.
المجموعات الفرعية (ميزة قيد التطوير)
تمكّن ميزة المجموعات الفرعية التوازي على مستوى SIMD، مما يسمح للسلاسل داخل المجموعة بالاتصال وتنفيذ عمليات حسابية جماعية (على سبيل المثال، حساب مجموع 16 رقمًا). يوفّر ذلك طريقة فعّالة للغاية لمشاركة البيانات في سلاسل المحادثات.
تتوافق عمليات المجموعات الفرعية مع واجهات برمجة التطبيقات الحديثة لوحدة معالجة الرسومات، ولكن تختلف تفاصيل التسمية والتنفيذ. حدّد فريق 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.
الإصدار 128 من Chrome
- تجربة المجموعات الفرعية
- إيقاف ضبط انحياز عمق الخطوط والنقاط
- إخفاء تحذير "أدوات مطوري البرامج" للخطأ الذي لم يتم تسجيله في حال منع التثبيت التلقائي
- دمج WGSL أخذ العينات أولاً وإمّا
- إشعارات الفجر
الإصدار 127 من Chrome
- التوافق التجريبي مع OpenGL ES على أجهزة Android
- سمة معلومات محوّل وحدة معالجة الرسومات
- تحسينات إمكانية التشغيل التفاعلي WebAssembly
- الأخطاء المحسّنة في برنامج ترميز الأوامر
- إشعارات الفجر
الإصدار 126 من Chrome
- زيادة حد maxTextureArrayLayers
- تحسين تحميل المخزن المؤقت لخلفية Vulkan
- تحسينات وقت تجميع Shader
- يجب أن تكون المخزن المؤقت للأوامر المرسَلة فريدة
- إشعارات الفجر
الإصدار 125 من Chrome
الإصدار 124 من Chrome
- زخارف مساحة التخزين للقراءة فقط والقراءة والكتابة
- دعم مشغّلي الخدمات والعاملين المشترَكين
- السمات الجديدة لمعلومات المحوّلات
- إصلاح الأخطاء
- إشعارات الفجر
الإصدار 123 من Chrome
- توفُّر دوال DP4a المضمَّنة في WGSL
- معلَمات المؤشر غير المحدودة في WGSL
- سكر البنية لتمييز المركّبات في WGSL
- حالة القراءة فقط لجوانب الاستنسل والعمق
- إشعارات الفجر
الإصدار 122 من Chrome
- توسيع مدى الوصول باستخدام وضع التوافق (الميزة قيد التطوير)
- زيادة حد maxVertexAttributes
- إشعارات الفجر
الإصدار 121 من Chrome
- إتاحة استخدام WebGPU على Android
- استخدام DXC بدلاً من FXC لتجميع أدوات التظليل على Windows
- طلبات البحث عن الطابع الزمني في بطاقات الحوسبة والعرض
- نقاط الدخول التلقائية لوحدات أدوات التظليل
- إتاحة العرض-p3 كمساحة لونية في GPUExternalTexture
- معلومات حول الذاكرة المجمّعة
- إشعارات الفجر
الإصدار 120 من Chrome
- إتاحة قيم النقطة العائمة 16 بت في WGSL
- تجاوز الحدود
- التغييرات على حالة الاستنسل العميق
- تعديلات على معلومات المحوّل
- تحديد كمية طلبات الطابع الزمني
- ميزات تنظيف الربيع
الإصدار 119 من Chrome
- زخارف عائمة 32 بت قابلة للفلترة
- تنسيق رأس العمود unorm10-10-10-2
- تنسيق مادة عرض rgb10a2uint
- إشعارات الفجر
الإصدار 118 من Chrome
- إتاحة HTMLImageElement وImageData في
copyExternalImageToTexture()
- إتاحة تجريبية لزخرفة مساحة التخزين للقراءة والقراءة فقط
- إشعارات الفجر
الإصدار 117 من Chrome
- إلغاء ضبط المخزن المؤقت للرأس
- إلغاء ضبط مجموعة الربط
- كتم الأخطاء الناتجة عن إنشاء مسار غير متزامن عند فقدان الجهاز
- تعديلات على إنشاء وحدة تظليل SPIR-V
- تحسين تجربة المطوِّرين
- مسارات التخزين المؤقت باستخدام التنسيق الذي يتم إنشاؤه تلقائيًا
- إشعارات الفجر
الإصدار 116 من Chrome
- دمج WebCodecs
- الجهاز المفقود الذي تم إرجاعه من خلال محوّل وحدة معالجة الرسومات
requestDevice()
- الحفاظ على سلاسة تشغيل الفيديو في حال اختيار
importExternalTexture()
- توافق المواصفات
- تحسين تجربة المطوِّرين
- إشعارات الفجر
الإصدار 115 من Chrome
- إضافات لغات WGSL المتوافقة
- الدعم التجريبي لـ Direct3D 11
- الحصول على وحدة معالجة رسومات منفصلة تلقائيًا باستخدام طاقة التيار المتردد
- تحسين تجربة المطوِّرين
- إشعارات الفجر
الإصدار 114 من Chrome
- تحسين JavaScript
- getCurrentTexture() على لوحة الرسم التي لم يتم ضبطها تؤدي إلىValidStateError
- إشعارات من WGSL
- إشعارات الفجر