الميزات الجديدة في WebGPU (Chrome 119)

François Beaufort
François Beaufort

زخارف عائمة 32 بت قابلة للفلترة

يتم استخدام زخارف النقاط العائمة بتنسيق 32 بت لتخزين بيانات عالية الدقة، مثل صور النطاق العالي الديناميكية (HDR) وخرائط العمق. وهي مهمة بشكل خاص لوحدات معالجة الرسومات المستخدمة في الألعاب المتطورة والتطبيقات الاحترافية.

إنّ دعم الزخارف العائمة 32 بت القابلة للفلترة يصف قدرة وحدة معالجة الرسومات على فلترة زخارف النقاط العائمة 32 بت. وهذا يعني أن وحدة معالجة الرسومات يمكنها تجانس حواف زخارف النقاط العائمة، مما يجعلها تبدو أقل خشنة. وهو مشابه لـ "OES_texture_float_parent" في 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" إضافته إلى مواصفات 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....

آخر أخبار الفجر

تتيح طلبات البحث عن الطوابع الزمنية لتطبيقات WebGPU قياس الوقت الذي تستغرقه أوامر وحدة معالجة الرسومات بدقة (وصولاً إلى نانو ثانية). تم تعديل شكل واجهة برمجة التطبيقات لتسجيل طلبات الطوابع الزمنية في بداية البطاقات ونهايتها ليتطابق مع مواصفات WebGPU. يُرجى الاطّلاع على المثال التالي وإصدار سمة 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 = &timestampWrites};

// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);

يتناول هذا فقط بعض النقاط الرئيسية. يمكنك الاطّلاع على قائمة الالتزامات الشاملة.

الميزات الجديدة في WebGPU

قائمة بكل ما تم تناوله في سلسلة الميزات الجديدة في WebGPU.

الإصدار 128 من Chrome

الإصدار 127 من Chrome

الإصدار 126 من Chrome

الإصدار 125 من Chrome

الإصدار 124 من Chrome

الإصدار 123 من Chrome

الإصدار 122 من Chrome

الإصدار 121 من Chrome

الإصدار 120 من Chrome

الإصدار 119 من Chrome

الإصدار 118 من Chrome

الإصدار 117 من Chrome

الإصدار 116 من Chrome

الإصدار 115 من Chrome

الإصدار 114 من Chrome

الإصدار 113 من Chrome