প্রকাশিত: ১৫ সেপ্টেম্বর, ২০২৬
WGSL বাফার_ভিউ এক্সটেনশন
WGSL ল্যাঙ্গুয়েজ এক্সটেনশন buffer_view একটি uniform, storage, বা workgroup ভেরিয়েবলের ডেটাকে একাধিক ভিন্ন টাইপ হিসেবে ব্যাখ্যা করার সুযোগ দেয়। প্রচলিত টাইপ-প্যানিং ব্যবহার থেকে শুরু করে একটি ভেরিয়েবলকে একাধিক লজিক্যাল ভেরিয়েবলে বিভক্ত করা পর্যন্ত এর ব্যাপক উপযোগিতা রয়েছে।
নিরাপত্তা এবং বাস্তবায়নের সরলতার জন্য, রিইন্টারপ্রিটেড টাইপগুলো শুধুমাত্র নিম্নলিখিত বিল্ট-ইন ফাংশনগুলো ব্যবহার করে অ্যাক্সেস করা যায়:
-
bufferView<T>()একটি নির্দিষ্ট বাইট অফসেটে থাকা মেমরিকে T টাইপের একটি পয়েন্টার হিসেবে বিবেচনা করে। -
bufferArrayView<T>()একটি নির্দিষ্ট সংখ্যক উপাদান সহ একটি সীমাবদ্ধ অ্যারে পয়েন্টার তৈরি করে। -
bufferLength()বাফারের বাইট সাইজ ফেরত দেয়।
এই ল্যাঙ্গুয়েজ এক্সটেনশনটি জাভাস্ক্রিপ্টে navigator.gpu.wgslLanguageFeatures ব্যবহার করে ফিচার-ডিটেক্ট করা যায়। আপনার WGSL শেডার কোডের শুরুতে requires buffer_view ; ব্যবহার করে নন-পোর্টেবিলিটির সম্ভাবনা বোঝানোর জন্য একটি requires-ডিরেক্টিভ ব্যবহার করার পরামর্শ দেওয়া হয়। নিম্নলিখিত WGSL উদাহরণ এবং এটি শিপ করার উদ্দেশ্য দেখুন।
requires buffer_view;
// +-------------------+-----------------------------+----------------------------+
// | Byte 0 .. 3 | Byte 4 .. (4 + N - 1) | Byte (4 + N) .. End |
// +-------------------+-----------------------------+----------------------------+
// | indices_size (u32)| indices (array<u32, count>) | vertices (array<f32>) |
// +-------------------+-----------------------------+----------------------------+
@group(0) @binding(0) var<storage> indices_and_vertices : buffer;
fn unpack_and_process_geometry() {
let indices_size = *bufferView<u32>(&indices_and_vertices, 0);
let indices = bufferArrayView<array<u32>>(&indices_and_vertices, 4, indices_size);
let vertices = bufferView<array<f32>>(&indices_and_vertices, indices_size + 4);
...
}
আরও বিস্তারিত জানতে আপনি বাফার ভিউ প্রস্তাবনাটিও দেখতে পারেন এবং ওয়্যারফ্রেম ওয়েবজিপিইউ স্যাম্পলটি নিয়ে পরীক্ষা-নিরীক্ষা করতে পারেন।
WGSL swizzle_assignment এক্সটেনশন
কমিউনিটির অন্যতম বহুল অনুরোধকৃত একটি ফিচারের জবাবে, WGSL এক্সটেনশন swizzle_assignment আপনাকে সরাসরি ভেক্টর সুইজল-এ লেখার সুযোগ দেয়, যার ফলে আপনি একটিমাত্র স্টেটমেন্টে একাধিক কম্পোনেন্ট আপডেট করতে পারেন। এটি বয়লারপ্লেট কোড ব্যাপকভাবে হ্রাস করে এবং শেডারের পঠনযোগ্যতা উন্নত করে, একই সাথে WGSL-কে অন্যান্য শেডিং ল্যাঙ্গুয়েজের সাথে সামঞ্জস্যপূর্ণ করে তোলে।
এই ল্যাঙ্গুয়েজ এক্সটেনশনটি জাভাস্ক্রিপ্টে navigator.gpu.wgslLanguageFeatures ব্যবহার করে ফিচার-ডিটেক্ট করা যায়। আপনার WGSL শেডার কোডের শুরুতে requires swizzle_assignment ; ব্যবহার করে নন-পোর্টেবিলিটির সম্ভাবনা বোঝানোর জন্য একটি requires-ডিরেক্টিভ ব্যবহার করার পরামর্শ দেওয়া হয়। নিম্নলিখিত WGSL উদাহরণ এবং এটি শিপ করার উদ্দেশ্য দেখুন।
if (!navigator.gpu.wgslLanguageFeatures.has("swizzle_assignment")) {
throw new Error(`WGSL swizzle assignment is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires swizzle_assignment;
@vertex
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
var position = vec4f(0.0, 0.0, 0.0, 1.0);
position.xy = vec2f(10.0, 20.0); // Swizzle assignment
return position;
}`,
});
WGSL এক্সটেনশন আপডেট
texture-formats-tier1 ল্যাঙ্গুয়েজ এক্সটেনশনটি WGSL কোডে সমর্থিত হলেও, পূর্বে জাভাস্ক্রিপ্টে এটি navigator.gpu.wgslLanguageFeatures ( texture_formats_tier1 হিসেবে) এর সাথে সঠিকভাবে ম্যাপ করা ছিল না। এই ম্যাপিং সমস্যাটির এখন সমাধান করা হয়েছে। Chromium CL 8159562 দেখুন।
WGSL-এ subgroup_size_control সক্রিয় করা হলে subgroups ল্যাঙ্গুয়েজ এক্সটেনশনটি এখন স্বয়ংক্রিয়ভাবে সক্রিয় হয়ে যায়। ইস্যু dawn:545285663 দেখুন।
ভোরের আপডেট
নতুন wgpu::FeatureName::BufferMapWriteExtendedUsages পরীক্ষামূলক ফিচারটি আপনাকে wgpu::BufferUsage::MapWrite সাথে wgpu wgpu::BufferUsage::MapRead ছাড়া অন্য যেকোনো wgpu::BufferUsage BufferUsage ব্যবহার করে একটি বাফার তৈরি করতে দেয়, যা সরাসরি একটি ম্যাপেবল বাফারে লেখার সুযোগ দেয় এবং এটি GPU-ব্যবহারযোগ্যও। এর ফলে Vulkan এবং D3D12 ব্যাকএন্ডে স্টেজিং বাফার এবং অতিরিক্ত কপির প্রয়োজনীয়তা দূর হয়। আরও তথ্যের জন্য, Buffer Map Write Extended Usages এবং ইস্যু dawn:386255678 দেখুন।
এখন আপনি নতুন webgpu_upstream_cpp_headers ব্যবহার করে Dawn-এর নিজস্ব সংস্করণের সাথে আবদ্ধ না থেকে যেকোনো webgpu.h ইমপ্লিমেন্টেশনের উপরে webgpu_cpp.h বাইন্ডিং ব্যবহার করতে পারবেন। webgpu-headers ইস্যু #596 দেখুন।
ডন ব্যবহারের জন্য এখন ম্যাকওএস ১৩.০ বা তার পরবর্তী সংস্করণ প্রয়োজন। ডন সিএল ৩৩৪৪০১৫ দেখুন।
এখানে কেবল কয়েকটি মূল বিষয় তুলে ধরা হয়েছে। আরও বিস্তারিত জানতে কমিটগুলোর সম্পূর্ণ তালিকাটি দেখুন।
WebGPU-তে নতুন কী আছে
'What's New in WebGPU' সিরিজে যা যা আলোচনা করা হয়েছে, তার একটি তালিকা।
ক্রোম ১৫৩-১৫৪
ক্রোম ১৫১-১৫২
ক্রোম ১৪৯-১৫০
ক্রোম ১৪৭-১৪৮
ক্রোম ১৪৬
- OpenGL ES 3.1-এ WebGPU সামঞ্জস্যপূর্ণ মোড সমর্থন করে
- ক্ষণস্থায়ী সংযুক্তি
- WGSL টেক্সচার_এবং_স্যাম্পলার_লেট এক্সটেনশন
- ভোরের আপডেট
ক্রোম ১৪৫
- WGSL উপগোষ্ঠী_একরূপতা সম্প্রসারণ
- ওয়ার্কারদের মধ্যে পরীক্ষামূলক সিঙ্ক্রোনাস বাফার ম্যাপিং
- ভোরের আপডেট
ক্রোম ১৪৪
- WGSL উপগোষ্ঠী_আইডি এক্সটেনশন
- WGSL uniform_buffer_standard_layout এক্সটেনশন
- লিনাক্সে ওয়েবজিপিইউ
- দ্রুততর writeBuffer এবং writeTexture
- ভোরের আপডেট
ক্রোম ১৪৩
ক্রোম ১৪২
ক্রোম ১৪১
- টিন্ট আইআর সম্পন্ন হয়েছে
- WGSL কম্পাইলারে পূর্ণসংখ্যার পরিসর বিশ্লেষণ
- ভুলকান ব্যাকএন্ডের জন্য SPIR-V 1.4 আপডেট
- ভোরের আপডেট
ক্রোম ১৪০
- ডিভাইস অ্যাডাপ্টার ব্যবহারের অনুরোধ করে।
- যেখানে টেক্সচার ভিউ ব্যবহৃত হয়, সেখানে টেক্সচার ব্যবহারের সংক্ষিপ্ত রূপ।
- WGSL textureSampleLevel 1D টেক্সচার সমর্থন করে
- bgra8unorm রিড-অনলি স্টোরেজ টেক্সচারের ব্যবহার অপ্রচলিত করুন
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি সরান
- ভোরের আপডেট
ক্রোম ১৩৯
- BC এবং ASTC কম্প্রেসড ফরম্যাটের জন্য 3D টেক্সচার সাপোর্ট
- নতুন 'কোর-ফিচার-অ্যান্ড-লিমিটস' ফিচার
- WebGPU সামঞ্জস্য মোডের জন্য Origin ট্রায়াল
- ভোরের আপডেট
ক্রোম ১৩৮
- বাইন্ডিং রিসোর্স হিসেবে বাফার ব্যবহারের সংক্ষিপ্ত রূপ
- তৈরির সময় ম্যাপ করা বাফারগুলির আকারের প্রয়োজনীয়তা পরিবর্তিত হয়।
- সাম্প্রতিক জিপিইউগুলির জন্য স্থাপত্য প্রতিবেদন
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউটটি অপ্রচলিত করুন
- ভোরের আপডেট
ক্রোম ১৩৭
- এক্সটার্নাল টেক্সচার বাইন্ডিং এর জন্য টেক্সচার ভিউ ব্যবহার করুন
- অফসেট এবং আকার নির্দিষ্ট না করে বাফার কপি করা হয়
- WGSL workgroupUniformLoad অ্যাটমিকের পয়েন্টার ব্যবহার করে
- GPUAdapterInfo powerPreference অ্যাট্রিবিউট
- GPURequestAdapterOptions-এর compatibilityMode অ্যাট্রিবিউটটি মুছে ফেলুন
- ভোরের আপডেট
ক্রোম ১৩৬
- GPUAdapterInfo isFallbackAdapter অ্যাট্রিবিউট
- D3D12-এ শেডার কম্পাইলেশন সময়ের উন্নতি
- ক্যানভাসের ছবিগুলো সংরক্ষণ ও কপি করুন
- লিফট সামঞ্জস্য মোড সীমাবদ্ধতা
- ভোরের আপডেট
ক্রোম ১৩৫
- নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরির অনুমতি দিন
- ভিউপোর্টগুলিকে রেন্ডার টার্গেটের সীমানা ছাড়িয়ে প্রসারিত করার অনুমতি দিন
- অ্যান্ড্রয়েডে পরীক্ষামূলক সামঞ্জস্য মোডে আরও সহজে প্রবেশ করা যায়
- maxInterStageShaderComponents সীমা অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩৪
- সাবগ্রুপের মাধ্যমে মেশিন-লার্নিং ওয়ার্কলোড উন্নত করুন
- ফ্লোট ফিল্টারযোগ্য টেক্সচার প্রকারের সমর্থন ব্লেন্ডেবল হিসেবে অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩৩
- অতিরিক্ত unorm8x4-bgra এবং 1-কম্পোনেন্ট ভার্টেক্স ফরম্যাট
- অনির্ধারিত মান দিয়ে অজানা সীমা অনুরোধ করার অনুমতি দিন।
- WGSL অ্যালাইনমেন্ট নিয়মের পরিবর্তন
- বর্জনের মাধ্যমে WGSL-এর কর্মক্ষমতা বৃদ্ধি
- বাহ্যিক টেক্সচারের জন্য VideoFrame displaySize ব্যবহার করুন
- `copyExternalImageToTexture` ব্যবহার করে ডিফল্ট ওরিয়েন্টেশন ছাড়া অন্য ওরিয়েন্টেশনের ছবি পরিচালনা করুন।
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- featureLevel-এর সাথে সামঞ্জস্য মোড সক্রিয় করুন
- পরীক্ষামূলক উপগোষ্ঠীর বৈশিষ্ট্য পরিষ্করণ
- maxInterStageShaderComponents সীমা বাতিল করুন
- ভোরের আপডেট
ক্রোম ১৩২
- টেক্সচার ভিউ ব্যবহার
- ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং
- GPUDevice অ্যাডাপ্টারইনফো অ্যাট্রিবিউট
- ভুল ফরম্যাটে ক্যানভাস কনটেক্সট কনফিগার করলে জাভাস্ক্রিপ্ট ত্রুটি দেখা দেয়।
- টেক্সচারের উপর ফিল্টারিং স্যাম্পলারের সীমাবদ্ধতা
- বর্ধিত উপগোষ্ঠী পরীক্ষা
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ১৬-বিট নর্মালাইজড টেক্সচার ফরম্যাটের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম ১৩১
- WGSL-এ ক্লিপ দূরত্ব
- GPUCanvasContext getConfiguration()
- বিন্দু এবং রেখা প্রিমিটিভগুলিতে গভীরতার পক্ষপাত থাকা উচিত নয়।
- উপগোষ্ঠীগুলির জন্য অন্তর্ভুক্তিমূলক স্ক্যান অন্তর্নির্মিত ফাংশন
- মাল্টি-ড্র ইনডিরেক্টের জন্য পরীক্ষামূলক সমর্থন
- শেডার মডিউল সংকলন বিকল্প কঠোর গণিত
- GPUAdapter requestAdapterInfo() অপসারণ করুন
- ভোরের আপডেট
ক্রোম ১৩০
- দ্বৈত উৎস মিশ্রণ
- মেটালে শেডার কম্পাইলেশন সময়ের উন্নতি
- GPUAdapter requestAdapterInfo() এর অপ্রচলিতকরণ
- ভোরের আপডেট
ক্রোম ১২৯
ক্রোম ১২৮
- উপগোষ্ঠী নিয়ে পরীক্ষা-নিরীক্ষা
- লাইন এবং পয়েন্টের জন্য ডেপথ বায়াস সেট করা অপ্রচলিত।
- preventDefault ব্যবহার করলে ক্যাপচার না করা ত্রুটির DevTools সতর্কতা লুকান
- WGSL প্রথমে ইন্টারপোলেট স্যাম্পলিং করে এবং হয়
- ভোরের আপডেট
ক্রোম ১২৭
- অ্যান্ড্রয়েডে OpenGL ES-এর জন্য পরীক্ষামূলক সমর্থন
- GPUAdapter তথ্য অ্যাট্রিবিউট
- ওয়েবঅ্যাসেম্বলি ইন্টারঅপ উন্নতি
- উন্নত কমান্ড এনকোডার ত্রুটি
- ভোরের আপডেট
ক্রোম ১২৬
- maxTextureArrayLayers সীমা বৃদ্ধি করুন
- ভলকান ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন
- শেডার কম্পাইলেশন সময়ের উন্নতি
- জমা দেওয়া কমান্ড বাফারগুলি অবশ্যই অনন্য হতে হবে।
- ভোরের আপডেট
ক্রোম ১২৫
ক্রোম ১২৪
- পঠন-যোগ্য এবং পঠন-লিখনযোগ্য স্টোরেজ টেক্সচার
- পরিষেবা কর্মী এবং ভাগাভাগি কর্মীদের সমর্থন
- নতুন অ্যাডাপ্টার তথ্যের বৈশিষ্ট্য
- বাগ সংশোধন
- ভোরের আপডেট
ক্রোম ১২৩
- WGSL-এ DP4a-এর অন্তর্নির্মিত ফাংশনগুলির সমর্থন
- WGSL-এ অবাধ পয়েন্টার প্যারামিটার
- WGSL-এ কম্পোজিট ডি-রেফারেন্সিং-এর জন্য সিনট্যাক্স সুগার
- স্টেনসিল এবং গভীরতার দিকগুলির জন্য পৃথক পঠনযোগ্য অবস্থা
- ভোরের আপডেট
ক্রোম ১২২
- কম্প্যাটিবিলিটি মোডের মাধ্যমে পরিধি প্রসারিত করুন (ফিচারটি নির্মাণাধীন)
- maxVertexAttributes সীমা বৃদ্ধি করুন
- ভোরের আপডেট
ক্রোম ১২১
- অ্যান্ড্রয়েডে ওয়েবজিপিইউ সমর্থন করুন
- উইন্ডোজে শেডার কম্পাইলেশনের জন্য FXC-এর পরিবর্তে DXC ব্যবহার করুন।
- কম্পিউট এবং রেন্ডার পাসে টাইমস্ট্যাম্প কোয়েরি
- শেডার মডিউলগুলির ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture কালার স্পেস হিসেবে display-p3 সমর্থন করে।
- মেমরি হিপস তথ্য
- ভোরের আপডেট
ক্রোম ১২০
- WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট মানের জন্য সমর্থন
- সীমা ছাড়িয়ে যান
- গভীরতা-স্টেনসিল অবস্থার পরিবর্তন
- অ্যাডাপ্টার তথ্যের আপডেট
- টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
- বসন্তকালীন পরিষ্কার-পরিচ্ছন্নতার বৈশিষ্ট্য
ক্রোম ১১৯
- ফিল্টারযোগ্য ৩২-বিট ফ্লোট টেক্সচার
- অগঠিত১০-১০-১০-২ শীর্ষবিন্দু বিন্যাস
- rgb10a2uint টেক্সচার ফরম্যাট
- ভোরের আপডেট
ক্রোম ১১৮
-
copyExternalImageToTexture()ফাংশনে HTMLImageElement এবং ImageData-এর সাপোর্ট - রিড-রাইট এবং রিড-অনলি স্টোরেজ টেক্সচারের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম ১১৭
- আনসেট ভার্টেক্স বাফার
- আনসেট বাইন্ড গ্রুপ
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরির ত্রুটিগুলো নীরব করুন
- SPIR-V শেডার মডিউল তৈরির আপডেট
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- স্বয়ংক্রিয়ভাবে তৈরি লেআউট সহ ক্যাশিং পাইপলাইন
- ভোরের আপডেট
ক্রোম ১১৬
- ওয়েবকোডেকস ইন্টিগ্রেশন
- GPUAdapter
requestDevice()দ্বারা ফেরত দেওয়া হারানো ডিভাইস -
importExternalTexture()কল করা হলে ভিডিও প্লেব্যাক মসৃণ রাখুন - স্পেক সঙ্গতি
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম ১১৫
- সমর্থিত WGSL ভাষা এক্সটেনশন
- Direct3D 11 এর জন্য পরীক্ষামূলক সমর্থন
- এসি পাওয়ারে ডিফল্টভাবে ডেডিকেটেড জিপিইউ পাওয়া যায়।
- ডেভেলপারদের অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম ১১৪
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করুন
- অকনফিগার করা ক্যানভাসে getCurrentTexture() কল করলে InvalidStateError থ্রো করে।
- WGSL আপডেট
- ভোরের আপডেট