WGSL fragment_depth এক্সটেনশন
জ্যামিতি-ইনটেনসিভ রেন্ডার পাসের ক্ষেত্রে, আর্লি-Z অপ্টিমাইজেশন হল ডেভেলপারদের সবচেয়ে সেরা বন্ধু। এগুলি GPU-কে ব্যয়বহুল ফ্র্যাগমেন্ট শেডার চালানোর আগে লুকানো পিক্সেল বাতিল করার অনুমতি দিয়ে পারফর্ম্যান্সকে ব্যাপকভাবে বুস্ট করে। রাস্টারাইজড ডেপথ যদি ডেপথ টেস্টে ব্যর্থ হয়, তাহলে GPU ফ্র্যাগমেন্ট শেডার সম্পূর্ণভাবে এড়িয়ে যায়, তবে শেডারের অন্য কোনও সাইড এফেক্ট থাকলে চলবে না।
হার্ডওয়্যার কীভাবে এটি ম্যানেজ করে সেই সম্পর্কে আরও জানতে চাইলে, MJP-এর When Does Early-Z Have to be Disabled?-এ একটি চমৎকার লেখা আছে।
কাস্টম ডেপথ ম্যানিপুলেশন উপযোগী হলেও, আপনার ফ্র্যাগমেন্ট শেডারে এটি করলে কিছু লুকানো খরচ হতে পারে। ফ্র্যাগমেন্ট শেডারের মধ্যে @builtin(frag_depth)-এ লেখার ফলে সাধারণত ড্রাইভাররা পুরো ড্র কলের জন্য এই আর্লি-Z অপ্টিমাইজেশন বন্ধ করতে বাধ্য হয়। এটি ঘটে কারণ ড্রাইভার হিউরিস্টিকস গ্যারান্টি দিতে পারে না যে শেডারের গণনা করা আউটপুট গভীরতা রাস্টারাইজার দ্বারা ইন্টারপোলেট করা গভীরতার সাথে মেলে।
পারফর্ম্যান্সের এই পেনাল্টি সংক্রান্ত সমস্যার সমাধান করতে, WGSL এক্সটেনশন fragment_depth আপনাকে @builtin(frag_depth)-এ less বা greater ডেপথ মোডের নাম নির্দিষ্ট করতে দেয় যাতে স্পষ্টভাবে উল্লেখ করা যায় যে ইন্টারপোলেট করা ডেপথের সাথে লিখিত ডেপথের তুলনা কীভাবে করা হয়, যার ফলে GPU নিরাপদে আর্লি-Z অপ্টিমাইজেশন প্রয়োগ করতে পারে।
navigator.gpu.wgslLanguageFeatures ব্যবহার করে জাভাস্ক্রিপ্টে এই ভাষা এক্সটেনশন ফিচার-শনাক্ত করা যেতে পারে। আপনার WGSL শেডার কোডের উপরে requires fragment_depth;-এর সাথে নন-পোর্টেবিলিটির সম্ভাবনা সিগন্যাল করার জন্য requires-directive ব্যবহার করার সাজেশন দেওয়া হয়। নিচের উদাহরণ ও শিপ করার ইচ্ছা দেখুন।
if (!navigator.gpu.wgslLanguageFeatures.has("fragment_depth")) {
throw new Error(`WGSL fragment depth is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires fragment_depth;
@fragment
fn main() -> @builtin(frag_depth, less) f32 {
// Explicitly states that the output fragment depth is less than early-Z depth,
// allowing the GPU to safely preserve early-Z optimizations.
return 0.0f;
}`,
});
টেক্সচার কম্প্রেশন আনঅ্যালাইন করা হয়েছে
"texture-compression-unaligned" GPU ফিচারটি এমন ডাইমেনশন সহ কম্প্রেস করা টেক্সচার তৈরি করতে দেয় যা ব্লক সাইজের পূর্ণসংখ্যা গুণিতক নয় (যেমন BC, ETC2 এবং ASTC ফর্ম্যাটের জন্য 4x4)। আগে, WebGPU-এর জন্য টেক্সচারের সাইজ এই ব্লক বাউন্ডারির সাথে অ্যালাইন করা বাধ্যতামূলক ছিল। ব্লক অ্যালাইনমেন্টে ফিট করার জন্য টেক্সচার প্যাড বা স্কেল করার প্রয়োজনীয়তা দূর করে, এই ফিচারটি স্কেলিং ডিস্টরশন ছাড়াই আসল কম্প্রেশন ফিডেলিটি বজায় রাখে। শিপ করার ইচ্ছা দেখুন।
নিম্নলিখিত কোড স্নিপেট চেক করে যে অ্যাডাপ্টার টেক্সচার কম্প্রেশন আনঅ্যালাইনড সাপোর্ট করে কিনা এবং উপলভ্য থাকলে, এটির সাথে একটি ডিভাইসের জন্য অনুরোধ করে।
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("texture-compression-unaligned")) {
throw new Error("Texture compression unaligned support is not available");
}
// Explicitly request texture compression unaligned support.
const device = await adapter.requestDevice({
requiredFeatures: ["texture-compression-unaligned"],
});
এই ফিচার, স্পেক ও CTS-এর কাজ এগিয়ে নিয়ে যাওয়ার জন্য spark.js-এর এক্সটার্নাল কন্ট্রিবিউটর Ignacio Castaño-কে অনেক ধন্যবাদ!
srgb-linear এবং display-p3-linear কালার স্পেস
"srgb-linear" এবং "display-p3-linear" প্রি-ডিফাইন করা কালার স্পেস যোগ করার মাধ্যমে, WebGPU ক্যানভাস কনটেক্সট এখন সরাসরি এক্সটেন্ডেড-রেঞ্জ লিনিয়ার কালার স্পেসে রেন্ডার করতে পারে যাতে ওয়াইড-গ্যামাট ডিসপ্লেতে কাজ করে। এইসব কালার স্পেস পিক্সেল ভ্যালু ও ফিজিক্যাল লুমিন্যান্সের মধ্যে লিনিয়ার সম্পর্ক বজায় রাখে। এর ফলে, গেমে ফিজিক্যাল লাইট রেন্ডারিংয়ের পাশাপাশি অ্যান্টি-অ্যালাইজিং, ইন্টারপোলেশন ও ডেসিমেসনের মতো স্পেশাল প্রসেসিং টাস্কের জন্য এটি আদর্শ হয়ে ওঠে। শিপ করার ইনটেন্ট এবং পার্টিকেল (HDR) স্যাম্পেল PR #574 দেখুন।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const canvas = document.querySelector("canvas");
const context = canvas.getContext("webgpu");
context.configure({
device,
format: "rgba16float",
colorSpace: "display-p3-linear",
});
অতিরিক্ত snorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
"snorm10-10-10-2" ভার্টেক্স ফর্ম্যাট হল একটি প্যাক করা ৩২-বিট ফর্ম্যাট যাতে চারটি সাইন করা নরমালাইজ করা ভ্যালু থাকে: তিনটি ১০-বিট কম্পোনেন্ট (r, g, b) এবং একটি ২-বিট কম্পোনেন্ট (a)। এই ফর্ম্যাটের সাহায্যে, আপনি মেমরি ব্যান্ডউইথ সেভ করার সময় অতিরিক্ত ২-বিট স্কেলার বা অ্যালাইনমেন্ট ফ্ল্যাগ সহ 3D নরমাল ভেক্টরের মতো অ্যাট্রিবিউট দক্ষতার সাথে স্টোর করতে পারবেন। spec PR 6491 দেখুন।
NVIDIA-এর জন্য Linux-এ f16 সাপোর্ট
ঐচ্ছিক "shader-f16" ফিচার, যা WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট ভ্যালুর জন্য সহায়তা প্রদান করে, এখন সাম্প্রতিক NVIDIA GPU ড্রাইভারের জন্য Linux-এ কাজ করে। issue chromium:42251215 দেখুন।
ভোরের আপডেট
আপনি এখন WGPUAdapterPropertiesD3D স্ট্রাক্ট ব্যবহার করে প্রদত্ত GPU অ্যাডাপ্টারের জন্য আন্ডারলাইং DXGIAdapter-এর LUID কোয়েরি করতে পারবেন। সমস্যা chromium:562849566 দেখুন।
এতে কিছু গুরুত্বপূর্ণ হাইলাইট কভার করা হয়েছে। কমিটের সম্পূর্ণ তালিকা দেখুন।
WebGPU-তে নতুন কী আছে
WebGPU-তে নতুন কী আছে সিরিজে কভার করা হয়েছে এমন সবকিছুর তালিকা।
Chrome 155-156
- WGSL fragment_depth এক্সটেনশন
- টেক্সচার কম্প্রেশন অ্যালাইন করা নেই
- srgb-linear এবং display-p3-linear কালার স্পেস
- অতিরিক্ত snorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
- NVIDIA-এর জন্য Linux-এ f16 সাপোর্ট
- Dawn আপডেট
Chrome 153-154
Chrome 151-152
Chrome 149-150
Chrome 147-148
Chrome 146
- OpenGL ES 3.1-এ WebGPU কম্প্যাটিবিলিটি মোড সাপোর্ট করুন
- ট্রানজিয়েন্ট অ্যাটাচমেন্ট
- WGSL texture_and_sampler_let এক্সটেনশন
- Dawn আপডেট
Chrome 145
- WGSL subgroup_uniformity এক্সটেনশন
- ওয়ার্কারদের মধ্যে এক্সপেরিমেন্টাল সিঙ্ক্রোনাস বাফার ম্যাপিং
- Dawn আপডেট
Chrome 144
- WGSL subgroup_id এক্সটেনশন
- WGSL uniform_buffer_standard_layout এক্সটেনশন
- Linux-এ WebGPU
- আরও দ্রুত writeBuffer ও writeTexture
- Dawn আপডেট
Chrome 143
Chrome 142
Chrome 141
- Tint IR সম্পূর্ণ হয়েছে
- WGSL কম্পাইলারে ইন্টিজার রেঞ্জ বিশ্লেষণ
- Vulkan ব্যাকএন্ডের জন্য SPIR-V 1.4 আপডেট
- Dawn আপডেট
Chrome 140
- ডিভাইস অনুরোধ কনজিউম অ্যাডাপ্টার
- টেক্সচার ভিউ ব্যবহার করা হয় এমন জায়গায় টেক্সচার ব্যবহার করার শর্টহ্যান্ড
- WGSL textureSampleLevel 1D টেক্সচার সাপোর্ট করে
- bgra8unorm শুধু-পড়ার-জন্য স্টোরেজ টেক্সচার ব্যবহার বন্ধ করা
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউট সরিয়ে দেওয়া
- Dawn আপডেট
Chrome 139
- BC এবং ASTC কম্প্রেস করা ফর্ম্যাটের জন্য 3D টেক্সচার সাপোর্ট
- নতুন "core-features-and-limits" ফিচার
- WebGPU কম্প্যাটিবিলিটি মোডের জন্য অরিজিন ট্রায়াল
- Dawn আপডেট
Chrome 138
- বাইন্ডিং রিসোর্স হিসেবে বাফার ব্যবহার করার শর্টহ্যান্ড
- তৈরি করার সময় ম্যাপ করা বাফারের জন্য সাইজের প্রয়োজনীয়তায় পরিবর্তন
- সাম্প্রতিক GPU-এর জন্য আর্কিটেকচার রিপোর্ট
- GPUAdapter isFallbackAdapter অ্যাট্রিবিউট বন্ধ করা
- Dawn আপডেট
Chrome 137
- externalTexture বাইন্ডিংয়ের জন্য টেক্সচার ভিউ ব্যবহার করুন
- অফসেট ও সাইজ উল্লেখ না করেই বাফার কপি করে
- অ্যাটমিকের পয়েন্টার ব্যবহার করে WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference অ্যাট্রিবিউট
- GPURequestAdapterOptions compatibilityMode অ্যাট্রিবিউট সরিয়ে দিন
- Dawn আপডেট
Chrome 136
- GPUAdapterInfo isFallbackAdapter অ্যাট্রিবিউট
- D3D12-এ শেডার কম্পাইলেশনের সময় সংক্রান্ত উন্নতি
- ক্যানভাস ছবি সেভ ও কপি করা
- লিফ্ট কম্প্যাটিবিলিটি মোড সংক্রান্ত বিধিনিষেধ
- Dawn আপডেট
Chrome 135
- নাল বাইন্ড গ্রুপ লেআউট সহ পাইপলাইন লেআউট তৈরি করার অনুমতি দিন
- রেন্ডার টার্গেট বাউন্ডের বাইরে ভিউপোর্টকে বাড়ানোর অনুমতি দিন
- Android-এ এক্সপেরিমেন্টাল কম্প্যাটিবিলিটি মোডে আরও সহজে অ্যাক্সেস
- maxInterStageShaderComponents সীমা সরান
- Dawn আপডেট
Chrome 134
- সাবগ্রুপের মাধ্যমে মেশিন লার্নিং ওয়ার্কলোড উন্নত করা
- ব্লেন্ডেবল হিসেবে ফ্লোট ফিল্টারেবল টেক্সচার টাইপ সাপোর্ট সরান
- Dawn আপডেট
Chrome 133
- অতিরিক্ত unorm8x4-bgra এবং ১-কম্পোনেন্ট ভার্টেক্স ফর্ম্যাট
- অনির্দিষ্ট ভ্যালু সহ অজানা সীমার জন্য অনুরোধ করার অনুমতি দিন
- WGSL অ্যালাইনমেন্ট সংক্রান্ত নিয়মে পরিবর্তন
- বাতিল করার মাধ্যমে WGSL পারফর্ম্যান্স বৃদ্ধি
- এক্সটার্নাল টেক্সচারের জন্য VideoFrame displaySize ব্যবহার করুন
- copyExternalImageToTexture ব্যবহার করে ডিফল্ট নয় এমন ওরিয়েন্টেশন সহ ছবি ম্যানেজ করা
- ডেভেলপারের অভিজ্ঞতা উন্নত করা
- featureLevel-এর সাথে কম্প্যাটিবিলিটি মোড চালু করুন
- এক্সপেরিমেন্টাল সাবগ্রুপ ফিচার ক্লিন-আপ
- maxInterStageShaderComponents সীমা বন্ধ করা
- Dawn আপডেট
Chrome 132
- টেক্সচার ভিউ ব্যবহার
- ৩২-বিট ফ্লোট টেক্সচার ব্লেন্ডিং
- GPUDevice adapterInfo অ্যাট্রিবিউট
- ভুল ফর্ম্যাট সহ ক্যানভাস কনটেক্সট কনফিগার করলে জাভাস্ক্রিপ্ট সংক্রান্ত সমস্যা হয়
- টেক্সচারে ফিল্টারিং স্যাম্পলার সংক্রান্ত বিধিনিষেধ
- এক্সটেন্ডেড সাবগ্রুপ এক্সপেরিমেন্টেশন
- ডেভেলপারের অভিজ্ঞতা উন্নত করা
- ১৬-বিট নরমালাইজড টেক্সচার ফর্ম্যাটের জন্য পরীক্ষামূলক সহায়তা
- Dawn আপডেট
Chrome 131
- WGSL-এ ক্লিপের দূরত্ব
- GPUCanvasContext getConfiguration()
- পয়েন্ট ও লাইন প্রিমিটিভে ডেপথ বায়াস থাকলে চলবে না
- সাবগ্রুপের জন্য ইনক্লুসিভ স্ক্যান বিল্ট-ইন ফাংশন
- মাল্টি-ড্র ইনডাইরেক্টের জন্য এক্সপেরিমেন্টাল সহায়তা
- শেডার মডিউল কম্পাইলেশন বিকল্প স্ট্রিক্ট ম্যাথ
- GPUAdapter requestAdapterInfo() সরিয়ে দিন
- Dawn আপডেট
Chrome 130
- ডুয়াল সোর্স ব্লেন্ডিং
- Metal-এ শেডার কম্পাইলেশন টাইম সংক্রান্ত উন্নতি
- GPUAdapter requestAdapterInfo() বন্ধ করা
- Dawn আপডেট
Chrome 129
Chrome 128
- সাবগ্রুপ নিয়ে পরীক্ষা করা
- লাইন ও পয়েন্টের জন্য ডেপথ বায়াস সেটিং বন্ধ করা
- preventDefault হলে, DevTools-এর ক্যাপচার না করা ত্রুটি সংক্রান্ত সতর্কতা লুকান
- WGSL ইন্টারপোলেট স্যাম্পলিং প্রথমে এবং যেকোনও একটি
- Dawn আপডেট
Chrome 127
- Android-এ OpenGL ES-এর জন্য পরীক্ষামূলক সহায়তা
- GPUAdapter তথ্য অ্যাট্রিবিউট
- WebAssembly ইন্টারঅপারেবিলিটি সংক্রান্ত উন্নতি
- কমান্ড এনকোডার সংক্রান্ত সমস্যার সমাধান করা হয়েছে
- Dawn আপডেট
Chrome 126
- maxTextureArrayLayers-এর সীমা বাড়ান
- Vulkan ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশন
- শেডার কম্পাইলেশন টাইম সংক্রান্ত উন্নতি
- জমা দেওয়া কমান্ড বাফার অনন্য হতে হবে
- Dawn আপডেট
Chrome 125
Chrome 124
- শুধুমাত্র-পড়া এবং পড়া-লেখা স্টোরেজ টেক্সচার
- সার্ভিস ওয়ার্কার্স ও শেয়ার্ড ওয়ার্কার্স সংক্রান্ত সহায়তা
- নতুন অ্যাডাপ্টার সংক্রান্ত তথ্যের অ্যাট্রিবিউট
- সমস্যার সমাধান
- Dawn আপডেট
Chrome 123
- WGSL-এ DP4a বিল্ট-ইন ফাংশন সাপোর্ট
- WGSL-এ আনরেস্ট্রিক্টেড পয়েন্টার প্যারামিটার
- WGSL-এ কম্পোজিট ডি-রেফারেন্স করার জন্য সিনট্যাক্স সুগার
- স্টেনসিল ও ডেপথ অ্যাস্পেক্টের জন্য আলাদা কেবল-পঠনযোগ্য স্ট্যাটাস
- Dawn আপডেট
Chrome 122
- কম্প্যাটিবিলিটি মোডের মাধ্যমে রিচ বাড়ান (ফিচারটি ডেভেলপ করা হচ্ছে)
- maxVertexAttributes-এর সীমা বাড়ান
- Dawn আপডেট
Chrome 121
- Android-এ WebGPU কাজ করে
- Windows-এ শেডার কম্পাইলেশনের জন্য FXC-এর পরিবর্তে DXC ব্যবহার করুন
- কম্পিউট ও রেন্ডার পাসে টাইমস্ট্যাম্প কোয়েরি
- শেডার মডিউলে ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture কালার স্পেস হিসেবে display-p3 কাজ করে
- মেমরি হিপ সংক্রান্ত তথ্য
- Dawn আপডেট
Chrome 120
- WGSL-এ ১৬-বিট ফ্লোটিং-পয়েন্ট ভ্যালুর জন্য সহায়তা
- সীমা অতিক্রম করুন
- ডেপথ-স্টেনসিল স্টেটে পরিবর্তন
- অ্যাডাপ্টার সংক্রান্ত তথ্য আপডেট
- টাইমস্ট্যাম্প কোয়েরি কোয়ান্টাইজেশন
- স্প্রিং-ক্লিনিং ফিচার
Chrome 119
- ফিল্টার করা যায় এমন ৩২-বিট ফ্লোট টেক্সচার
- unorm10-10-10-2 ভার্টেক্স ফর্ম্যাট
- rgb10a2uint টেক্সচার ফর্ম্যাট
- Dawn আপডেট
Chrome 118
copyExternalImageToTexture()-এ HTMLImageElement এবং ImageData সাপোর্ট- রিড-রাইট ও শুধু-পড়া-যায় স্টোরেজ টেক্সচারের জন্য পরীক্ষামূলক সহায়তা
- Dawn আপডেট
Chrome 117
- ভার্টেক্স বাফার আনসেট করুন
- বাইন্ড গ্রুপ আনসেট করুন
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরি করার সময় সমস্যা সাইলেন্স করা
- SPIR-V শেডার মডিউল তৈরি সংক্রান্ত আপডেট
- ডেভেলপারের অভিজ্ঞতা উন্নত করা
- অটোমেটিক তৈরি করা লেআউট সহ ক্যাশিং পাইপলাইন
- Dawn আপডেট
Chrome 116
- WebCodecs ইন্টিগ্রেশন
- GPUAdapter
requestDevice()-এর মাধ্যমে হারিয়ে যাওয়া ডিভাইস ফেরত পাওয়া গেছে importExternalTexture()কল করা হলে ভিডিও প্লেব্যাক স্মুথ রাখুন- স্পেসিফিকেশন মেনে চলা
- ডেভেলপারের অভিজ্ঞতা উন্নত করা
- Dawn আপডেট
Chrome 115
- কাজ করে এমন WGSL ল্যাঙ্গুয়েজ এক্সটেনশন
- Direct3D 11-এর জন্য এক্সপেরিমেন্টাল সহায়তা
- এসি পাওয়ারে ডিফল্ট হিসেবে ডিসক্রিট GPU পান
- ডেভেলপারের অভিজ্ঞতা উন্নত করা
- Dawn আপডেট
Chrome 114
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করা
- কনফিগার না করা ক্যানভাসে getCurrentTexture() ব্যবহার করলে InvalidStateError দেখায়
- WGSL আপডেট
- Dawn আপডেট