WebGPU-তে নতুন কী আছে (Chrome 130)

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

দ্বৈত উৎস মিশ্রন

একটি একক ফ্রেমবাফারে দুটি ফ্র্যাগমেন্ট শেডার আউটপুট একত্রিত করাকে ডুয়াল সোর্স ব্লেন্ডিং বলা হয়। এই কৌশলটি বিশেষ করে এমন অ্যাপ্লিকেশনগুলির জন্য দরকারী যেগুলির জন্য জটিল মিশ্রন ক্রিয়াকলাপ প্রয়োজন, যেমন পোর্টার-ডাফ ব্লেন্ড মোডগুলির উপর ভিত্তি করে৷ একটি একক রেন্ডার পাস দিয়ে পরবর্তী রেন্ডার পাস প্রতিস্থাপন করে, ডুয়াল সোর্স মিশ্রন কর্মক্ষমতা এবং নমনীয়তা বাড়াতে পারে।

নতুন "dual-source-blending" ওয়েবজিপিইউ বৈশিষ্ট্যটি আপনাকে @location(0) এ WGSL @blend_src অ্যাট্রিবিউট ব্যবহার করতে দেয় মিশ্রন উত্স সূচক এবং নিম্নলিখিত মিশ্রণের কারণগুলি বোঝাতে: "src1" , "one-minus-src1" , "src1-alpha" , এবং "one-minus-src1-alpha" । নিম্নলিখিত স্নিপেট, ক্রোমেস্ট্যাটাস এন্ট্রি এবং ইস্যু 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...

ধাতুতে Shader সংকলন সময় উন্নতি

ক্রোম টিম মেটাল ব্যাকএন্ড সহ WebGPU সমর্থন করে এমন ডিভাইসগুলির জন্য একটি মধ্যবর্তী প্রতিনিধিত্ব (IR) প্রবর্তনের মাধ্যমে Tint, WebGPU শেডার ভাষা সংকলককে উন্নত করছে৷ এই আইআর, টিন্টের অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (এএসটি) এবং মেটাল ব্যাকএন্ড রাইটারের মধ্যে অবস্থিত, কম্পাইলারটিকে আরও দক্ষ এবং রক্ষণাবেক্ষণযোগ্য করে তুলবে, শেষ পর্যন্ত ডেভেলপার এবং ব্যবহারকারী উভয়কেই উপকৃত করবে। প্রাথমিক পরীক্ষাগুলি দেখায় যে টিন্টের নতুন সংস্করণটি 10 ​​গুণ দ্রুততর হয় যখন ইউনিটির ডাব্লুজিএসএল শেডারগুলিকে এমএসএল-এ অনুবাদ করা হয়।

একটি ফ্লোচার্ট WGSL শেডার কোডকে নিম্ন-স্তরের GPU নির্দেশাবলীতে রূপান্তর করার প্রক্রিয়া দেখায়।
ম্যাকওএস-এ পাইপলাইন তৈরি করুন।

এই উন্নতিগুলি, ইতিমধ্যেই অ্যান্ড্রয়েড এবং ক্রোমওএস-এ অ্যাক্সেসযোগ্য, ম্যাকওএস ডিভাইসগুলিতে ধীরে ধীরে প্রসারিত হচ্ছে যা মেটাল ব্যাকএন্ডের সাথে WebGPU সমর্থন করে৷ সংখ্যা 42251016 দেখুন।

GPUAdapter রিকোয়েস্ট অ্যাডাপ্টারইনফো() এর অবচয়

GPUAdapter requestAdapterInfo() অ্যাসিঙ্ক্রোনাস পদ্ধতিটি অপ্রয়োজনীয় কারণ বিকাশকারীরা ইতিমধ্যেই GPUAdapter info বৈশিষ্ট্য ব্যবহার করে সিঙ্ক্রোনাসভাবে GPUAdapterInfo পেতে পারে। তাই, নন-স্ট্যান্ডার্ড GPUAdapter requestAdapterInfo() পদ্ধতিটি এখন বাতিল করা হয়েছে। অবমূল্যায়ন করার অভিপ্রায় দেখুন।

DevTools কনসোল requestAdapterInfo() এর জন্য একটি অবচয় সতর্কতা প্রদর্শন করে।
Chrome DevTools-এ 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

WGPUDepthStencilState এর depthWriteEnabled অ্যাট্রিবিউট টাইপ জাভাস্ক্রিপ্ট API-এর মতো এর তিনটি সম্ভাব্য অবস্থা (সত্য, মিথ্যা এবং অনির্ধারিত) প্রতিফলিত করার জন্য বুলিয়ান থেকে WGPUOptionalBool এ স্যুইচ করে। আরও জানতে, নিম্নলিখিত কোড স্নিপেট এবং webgpu-হেডার PR দেখুন।

wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default

এটি শুধুমাত্র কিছু মূল হাইলাইট কভার করে। কমিটের সম্পূর্ণ তালিকা দেখুন।

WebGPU-তে নতুন কি আছে

ওয়েবজিপিইউ সিরিজে নতুন কী কভার করা হয়েছে তার একটি তালিকা।

ক্রোম 131

ক্রোম 130

ক্রোম 129

ক্রোম 128

ক্রোম 127

ক্রোম 126

ক্রোম 125

ক্রোম 124

ক্রোম 123

ক্রোম 122

ক্রোম 121

ক্রোম 120

ক্রোম 119

ক্রোম 118

ক্রোম 117

ক্রোম 116

ক্রোম 115

ক্রোম 114

ক্রোম 113

,

ফ্রাঁসোয়া বিউফোর্ট
François Beaufort

দ্বৈত উৎস মিশ্রন

একটি একক ফ্রেমবাফারে দুটি ফ্র্যাগমেন্ট শেডার আউটপুট একত্রিত করাকে ডুয়াল সোর্স ব্লেন্ডিং বলা হয়। এই কৌশলটি বিশেষ করে এমন অ্যাপ্লিকেশনগুলির জন্য দরকারী যেগুলির জন্য জটিল মিশ্রন ক্রিয়াকলাপ প্রয়োজন, যেমন পোর্টার-ডাফ ব্লেন্ড মোডগুলির উপর ভিত্তি করে৷ একটি একক রেন্ডার পাস দিয়ে পরবর্তী রেন্ডার পাস প্রতিস্থাপন করে, ডুয়াল সোর্স মিশ্রন কর্মক্ষমতা এবং নমনীয়তা বাড়াতে পারে।

নতুন "dual-source-blending" ওয়েবজিপিইউ বৈশিষ্ট্যটি আপনাকে @location(0) এ WGSL @blend_src অ্যাট্রিবিউট ব্যবহার করতে দেয় মিশ্রন উত্স সূচক এবং নিম্নলিখিত মিশ্রণের কারণগুলি বোঝাতে: "src1" , "one-minus-src1" , "src1-alpha" , এবং "one-minus-src1-alpha" । নিম্নলিখিত স্নিপেট, ক্রোমেস্ট্যাটাস এন্ট্রি এবং ইস্যু 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...

ধাতুতে Shader সংকলন সময় উন্নতি

ক্রোম টিম মেটাল ব্যাকএন্ড সহ WebGPU সমর্থন করে এমন ডিভাইসগুলির জন্য একটি মধ্যবর্তী প্রতিনিধিত্ব (IR) প্রবর্তনের মাধ্যমে Tint, WebGPU শেডার ভাষা সংকলককে উন্নত করছে৷ এই আইআর, টিন্টের অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (এএসটি) এবং মেটাল ব্যাকএন্ড রাইটারের মধ্যে অবস্থিত, কম্পাইলারটিকে আরও দক্ষ এবং রক্ষণাবেক্ষণযোগ্য করে তুলবে, শেষ পর্যন্ত ডেভেলপার এবং ব্যবহারকারী উভয়কেই উপকৃত করবে। প্রাথমিক পরীক্ষাগুলি দেখায় যে টিন্টের নতুন সংস্করণটি 10 ​​গুণ দ্রুততর হয় যখন ইউনিটির ডাব্লুজিএসএল শেডারগুলিকে এমএসএল-এ অনুবাদ করা হয়।

একটি ফ্লোচার্ট WGSL শেডার কোডকে নিম্ন-স্তরের GPU নির্দেশাবলীতে রূপান্তর করার প্রক্রিয়া দেখায়।
ম্যাকওএস-এ পাইপলাইন তৈরি করুন।

এই উন্নতিগুলি, ইতিমধ্যেই অ্যান্ড্রয়েড এবং ক্রোমওএস-এ অ্যাক্সেসযোগ্য, ম্যাকওএস ডিভাইসগুলিতে ধীরে ধীরে প্রসারিত হচ্ছে যা মেটাল ব্যাকএন্ডের সাথে WebGPU সমর্থন করে৷ সংখ্যা 42251016 দেখুন।

GPUAdapter রিকোয়েস্ট অ্যাডাপ্টারইনফো() এর অবচয়

GPUAdapter requestAdapterInfo() অ্যাসিঙ্ক্রোনাস পদ্ধতিটি অপ্রয়োজনীয় কারণ বিকাশকারীরা ইতিমধ্যেই GPUAdapter info বৈশিষ্ট্য ব্যবহার করে সিঙ্ক্রোনাসভাবে GPUAdapterInfo পেতে পারে। তাই, নন-স্ট্যান্ডার্ড GPUAdapter requestAdapterInfo() পদ্ধতিটি এখন বাতিল করা হয়েছে। অবমূল্যায়ন করার অভিপ্রায় দেখুন।

DevTools কনসোল requestAdapterInfo() এর জন্য একটি অবচয় সতর্কতা প্রদর্শন করে।
Chrome DevTools-এ 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

WGPUDepthStencilState এর depthWriteEnabled অ্যাট্রিবিউট টাইপ জাভাস্ক্রিপ্ট API-এর মতো এর তিনটি সম্ভাব্য অবস্থা (সত্য, মিথ্যা এবং অনির্ধারিত) প্রতিফলিত করার জন্য বুলিয়ান থেকে WGPUOptionalBool এ স্যুইচ করে। আরও জানতে, নিম্নলিখিত কোড স্নিপেট এবং webgpu-হেডার PR দেখুন।

wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default

এটি শুধুমাত্র কিছু মূল হাইলাইট কভার করে। কমিটের সম্পূর্ণ তালিকা দেখুন।

WebGPU-তে নতুন কি আছে

ওয়েবজিপিইউ সিরিজে নতুন কী কভার করা হয়েছে তার একটি তালিকা।

ক্রোম 131

ক্রোম 130

ক্রোম 129

ক্রোম 128

ক্রোম 127

ক্রোম 126

ক্রোম 125

ক্রোম 124

ক্রোম 123

ক্রোম 122

ক্রোম 121

ক্রোম 120

ক্রোম 119

ক্রোম 118

ক্রোম 117

ক্রোম 116

ক্রোম 115

ক্রোম 114

ক্রোম 113