WGSL এ ক্লিপ দূরত্ব
ক্লিপ দূরত্ব আপনাকে ভার্টেক্স পর্যায়ের আউটপুটে ব্যবহারকারী-সংজ্ঞায়িত অর্ধ-স্পেস সহ আদিম ক্লিপ ভলিউম সীমাবদ্ধ করতে দেয়। আপনার নিজস্ব ক্লিপিং প্লেনগুলিকে সংজ্ঞায়িত করা আপনার WebGPU দৃশ্যগুলিতে যা দৃশ্যমান তার উপর আরও বেশি নিয়ন্ত্রণ দেয়৷ এই কৌশলটি বিশেষত CAD সফ্টওয়্যারের মতো অ্যাপ্লিকেশনগুলির জন্য উপযোগী, যেখানে ভিজ্যুয়ালাইজেশনের উপর সুনির্দিষ্ট নিয়ন্ত্রণ অত্যন্ত গুরুত্বপূর্ণ।
যখন "clip-distances"
বৈশিষ্ট্যটি একটি GPUAdapter-এ উপলব্ধ থাকে, তখন এই বৈশিষ্ট্যটি সহ একটি GPUDevice অনুরোধ করুন যাতে WGSL-এ ক্লিপ দূরত্ব সমর্থন পাওয়া যায় এবং স্পষ্টভাবে আপনার WGSL কোডে enable clip_distances;
. একবার সক্ষম হয়ে গেলে, আপনি আপনার ভার্টেক্স শেডারে অন্তর্নির্মিত clip_distances
অ্যারে ব্যবহার করতে পারেন। এই অ্যারে একটি ব্যবহারকারী-সংজ্ঞায়িত ক্লিপ প্লেনে দূরত্ব ধারণ করে:
- 0 এর একটি ক্লিপ দূরত্ব মানে শীর্ষবিন্দুটি সমতলে অবস্থিত।
- একটি ইতিবাচক দূরত্ব মানে শীর্ষস্থানটি ক্লিপের অর্ধেক স্থানের ভিতরে রয়েছে (আপনি যে দিকে রাখতে চান)।
- একটি নেতিবাচক দূরত্ব মানে শীর্ষস্থানটি ক্লিপের অর্ধেক স্থানের বাইরে (যে দিকটি আপনি বাতিল করতে চান)।
নিচের স্নিপেট, ক্রোমেস্ট্যাটাস এন্ট্রি এবং ইস্যু 358408571 দেখুন।
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("clip-distances")) {
throw new Error("Clip distances support is not available");
}
// Explicitly request clip distances support.
const device = await adapter.requestDevice({
requiredFeatures: ["clip-distances"],
});
const vertexShaderModule = device.createShaderModule({ code: `
enable clip_distances;
struct VertexOut {
@builtin(clip_distances) my_clip_distances : array<f32, 1>,
@builtin(position) my_position : vec4f,
}
@vertex fn main() -> VertexOut {
var output : VertexOut;
output.my_clip_distances[0] = 1;
output.my_position = vec4f(0, 0, 0, 1);
return output;
}
`,
});
// Send the appropriate commands to the GPU...
GPUCanvasContext getConfiguration()
একবার একটি কনফিগারেশন অভিধানের সাথে GPUCanvasContext configure()
কল করা হলে, GPUCanvasContext getConfiguration()
পদ্ধতি আপনাকে ক্যানভাস প্রসঙ্গ কনফিগারেশন পরীক্ষা করতে দেয়। এতে device
, format
, usage
, viewFormats
, colorSpace
, toneMapping
এবং alphaMode
সদস্য অন্তর্ভুক্ত রয়েছে। ব্রাউজারটি HDR ক্যানভাস সমর্থন করে কিনা তা পরীক্ষা করার মতো কাজের জন্য এটি কার্যকর, যেমনটি পার্টিকেলস (HDR) নমুনায় দেখানো হয়েছে। নিম্নলিখিত স্নিপেট, ক্রোমেস্ট্যাটাস এন্ট্রি এবং ইস্যু 370109829 দেখুন।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const canvas = document.querySelector("canvas");
const context = canvas.getContext("webgpu");
// Configure the canvas for HDR.
context.configure({
device,
format: "rgba16float",
toneMapping: { mode: "extended" },
});
const configuration = context.getConfiguration();
if (configuration.toneMapping.mode === "extended") {
// The browser supports HDR canvas.
// Warning! The user still needs a HDR display to enjoy HDR content.
}
বিন্দু এবং লাইন আদিম গভীরতা পক্ষপাত থাকতে হবে না
পূর্বে ঘোষিত হিসাবে, WebGPU স্পেক এখন depthBias
, depthBiasSlopeScale
, এবং depthBiasClamp
একটি নন-জিরো ভ্যালুতে সেট করার জন্য একটি বৈধতা ত্রুটি করে তোলে যখন রেন্ডার পাইপলাইনের টপোলজি একটি লাইন বা পয়েন্ট টাইপ হয়। সংখ্যা 352567424 দেখুন।
সাবগ্রুপগুলির জন্য অন্তর্নির্মিত ফাংশন অন্তর্ভুক্ত স্ক্যান
সাবগ্রুপ পরীক্ষা-নিরীক্ষার অংশ হিসেবে, ইস্যু 361330160- এ নিম্নলিখিত সাবগ্রুপ বিল্ট-ইন ফাংশন যোগ করা হয়েছে:
-
subgroupInclusiveAdd(value)
: সাবগ্রুপ জুড়ে সমস্ত সক্রিয় আহ্বানেরvalue
অন্তর্ভুক্তিমূলক স্ক্যান সমষ্টি প্রদান করে। -
subgroupInclusiveMul(value)
: সাবগ্রুপ জুড়ে সমস্ত সক্রিয় আহ্বানেরvalue
অন্তর্ভুক্তিমূলক স্ক্যান গুণিতক প্রদান করে।
মাল্টি-ড্র পরোক্ষ জন্য পরীক্ষামূলক সমর্থন
মাল্টি-ড্র ইনডাইরেক্ট জিপিইউ ফিচার আপনাকে একটি জিপিইউ কমান্ড সহ একাধিক ড্র কল ইস্যু করতে দেয়। এটি এমন পরিস্থিতিতে বিশেষভাবে কার্যকর যেখানে বিপুল সংখ্যক বস্তুকে রেন্ডার করা প্রয়োজন, যেমন কণা সিস্টেম, ইনস্ট্যান্সিং এবং বড় দৃশ্য। drawIndirect()
এবং drawIndexedIndirect()
GPURenderPassEncoder পদ্ধতিগুলি একটি GPU বাফারের একটি নির্দিষ্ট অঞ্চল থেকে একবারে একটি একক ড্র কল ইস্যু করতে পারে।
এই পরীক্ষামূলক বৈশিষ্ট্যটি প্রমিত না হওয়া পর্যন্ত, এটিকে Chrome-এ উপলব্ধ করতে chrome://flags/#enable-unsafe-webgpu
"অনিরাপদ WebGPU সমর্থন" পতাকা সক্ষম করুন৷
একটি GPUAdapter-এ উপলব্ধ "chromium-experimental-multi-draw-indirect"
অ-মানক GPU বৈশিষ্ট্য সহ, এই বৈশিষ্ট্য সহ একটি GPU ডিভাইসের অনুরোধ করুন৷ তারপর GPUBufferUsage.INDIRECT
ব্যবহার সহ একটি GPUBuffer তৈরি করুন ড্র কলগুলি সংরক্ষণ করতে৷ রেন্ডার পাসের ভিতরে ড্র কল ইস্যু করার জন্য আপনি এটিকে নতুন multiDrawIndirect()
এবং multiDrawIndexedIndirect()
GPURenderPassEncoder পদ্ধতিতে ব্যবহার করতে পারেন। নিচের স্নিপেট এবং ইস্যু 356461286 দেখুন।
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-multi-draw-indirect")) {
throw new Error("Experimental multi-draw indirect support is not available");
}
// Explicitly request experimental multi-draw indirect support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-multi-draw-indirect"],
});
// Draw call have vertexCount, instanceCount, firstVertex, and firstInstance parameters.
const drawData = new Uint32Array([
3, 1, 0, 0, // First draw call
3, 1, 3, 0, // Second draw call
]);
// Create a buffer to store the draw calls.
const drawBuffer = device.createBuffer({
size: drawData.byteLength,
usage: GPUBufferUsage.INDIRECT | GPUBufferUsage.COPY_DST,
});
device.queue.writeBuffer(drawBuffer, 0, drawData);
// Create a render pipeline, a vertex buffer, and a render pass encoder...
// Inside a render pass, issue the draw calls.
myPassEncoder.setPipeline(myPipeline);
myPassEncoder.setVertexBuffer(0, myVertexBuffer);
myPassEncoder.multiDrawIndirect(drawBuffer, /*offset=*/ 0, /*maxDrawCount=*/ 2);
myPassEncoder.end();
Shader মডিউল সংকলন বিকল্প কঠোর গণিত
একটি বুলিয়ান strictMath
ডেভেলপার বিকল্প GPUShaderModuleDescriptor-এ যোগ করা হয়েছে যাতে আপনি shader মডিউল সংকলনের সময় কঠোর গণিত সক্ষম বা অক্ষম করতে পারেন। এটি chrome://flags/#enable-webgpu-developer-features
এ "WebGPU বিকাশকারী বৈশিষ্ট্য" পতাকার পিছনে উপলব্ধ, যার মানে এটি একটি বৈশিষ্ট্য যা শুধুমাত্র বিকাশের সময় ব্যবহারের উদ্দেশ্যে। সংখ্যা 42241455 দেখুন।
এই বিকল্পটি বর্তমানে মেটাল এবং Direct3D তে সমর্থিত। যখন কঠোর গণিত অক্ষম করা হয়, তখন কম্পাইলার আপনার শেডারগুলিকে এর দ্বারা অপ্টিমাইজ করতে পারে:
- NaN এবং ইনফিনিটি মানগুলির সম্ভাবনাকে উপেক্ষা করা।
- -0কে +0 হিসাবে বিবেচনা করা হচ্ছে।
- পারস্পরিক দ্বারা দ্রুত গুন দিয়ে ভাগ প্রতিস্থাপন।
- সহযোগী এবং বন্টনমূলক বৈশিষ্ট্যের উপর ভিত্তি করে অপারেশন পুনর্বিন্যাস করা।
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const code = `
// Examines the bit pattern of the floating-point number to
// determine if it represents a NaN according to the IEEE 754 standard.
fn isNan(x : f32) -> bool {
bool ones_exp = (bitcast<u32>(x) & 0x7f8) == 0x7f8;
bool non_zero_sig = (bitcast<u32>(x) & 0x7ffff) != 0;
return ones_exp && non_zero_sig;
}
// ...
`;
// Enable strict math during shader compilation.
const shaderModule = device.createShaderModule({ code, strictMath: true });
GPUAdapter requestAdapterInfo() সরান
GPUAdapter requestAdapterInfo()
অ্যাসিঙ্ক্রোনাস পদ্ধতিটি অপ্রয়োজনীয় কারণ আপনি ইতিমধ্যে GPUAdapter info
বৈশিষ্ট্য ব্যবহার করে সিঙ্ক্রোনাসভাবে GPUAdapterInfo পেতে পারেন। তাই, নন-স্ট্যান্ডার্ড GPUAdapter requestAdapterInfo()
পদ্ধতিটি এখন সরানো হয়েছে। অপসারণের অভিপ্রায় দেখুন।
ভোরের আপডেট
tint_benchmark
এক্সিকিউটেবল WGSL থেকে প্রতিটি ব্যাকএন্ড ভাষায় শেডার অনুবাদ করার খরচ পরিমাপ করে। এটি সম্পর্কে আরও জানতে নতুন ডকুমেন্টেশন দেখুন।
এটি শুধুমাত্র কিছু মূল হাইলাইট কভার করে। কমিটের সম্পূর্ণ তালিকা দেখুন।
WebGPU-তে নতুন কি আছে
ওয়েবজিপিইউ সিরিজে নতুন কী কভার করা হয়েছে তার একটি তালিকা।
ক্রোম 131
- WGSL এ ক্লিপ দূরত্ব
- GPUCanvasContext getConfiguration()
- বিন্দু এবং লাইন আদিম গভীরতা পক্ষপাত থাকতে হবে না
- সাবগ্রুপগুলির জন্য অন্তর্নির্মিত ফাংশন অন্তর্ভুক্ত স্ক্যান
- মাল্টি-ড্র পরোক্ষ জন্য পরীক্ষামূলক সমর্থন
- Shader মডিউল সংকলন বিকল্প কঠোর গণিত
- GPUAdapter requestAdapterInfo() সরান
- ভোরের আপডেট
ক্রোম 130
- দ্বৈত উৎস মিশ্রন
- ধাতুতে Shader সংকলন সময় উন্নতি
- GPUAdapter রিকোয়েস্ট অ্যাডাপ্টারইনফো() এর অবচয়
- ভোরের আপডেট
ক্রোম 129
ক্রোম 128
- সাবগ্রুপগুলির সাথে পরীক্ষা করা হচ্ছে
- লাইন এবং পয়েন্টের জন্য গভীরতার পক্ষপাত সেটিং বাতিল করুন
- ডিফল্ট প্রতিরোধ করলে ক্যাপচারড ত্রুটি DevTools সতর্কতা লুকান
- WGSL ইন্টারপোলেট স্যাম্পলিং প্রথমে এবং হয়
- ভোরের আপডেট
ক্রোম 127
- অ্যান্ড্রয়েডে OpenGL ES-এর জন্য পরীক্ষামূলক সমর্থন
- GPUAdapter তথ্য বৈশিষ্ট্য
- WebAssembly ইন্টারপ উন্নতি
- উন্নত কমান্ড এনকোডার ত্রুটি
- ভোরের আপডেট
ক্রোম 126
- maxTextureArrayLayers সীমা বাড়ান
- Vulkan ব্যাকএন্ডের জন্য বাফার আপলোড অপ্টিমাইজেশান
- Shader সংকলন সময় উন্নতি
- জমা দেওয়া কমান্ড বাফার অনন্য হতে হবে
- ভোরের আপডেট
ক্রোম 125
ক্রোম 124
- রিড-ওনলি এবং রিড-রাইট স্টোরেজ টেক্সচার
- সেবা কর্মী এবং শেয়ার্ড ওয়ার্কার্স সমর্থন
- নতুন অ্যাডাপ্টারের তথ্য বৈশিষ্ট্য
- বাগ ফিক্স
- ভোরের আপডেট
ক্রোম 123
- DP4a বিল্ট-ইন ফাংশন WGSL-এ সমর্থন করে
- WGSL-এ অনিয়ন্ত্রিত পয়েন্টার পরামিতি
- WGSL-এ কম্পোজিট ডিরেফারেন্স করার জন্য সিনট্যাক্স চিনি
- স্টেনসিল এবং গভীরতার দিকগুলির জন্য আলাদা পঠনযোগ্য অবস্থা
- ভোরের আপডেট
ক্রোম 122
- সামঞ্জস্যপূর্ণ মোডের সাথে নাগাল প্রসারিত করুন (বিকাশের বৈশিষ্ট্য)
- maxVertexAttributes সীমা বাড়ান
- ভোরের আপডেট
ক্রোম 121
- অ্যান্ড্রয়েডে WebGPU সমর্থন করুন
- উইন্ডোজে শেডার কম্পাইলেশনের জন্য FXC-এর পরিবর্তে DXC ব্যবহার করুন
- গণনা এবং রেন্ডার পাসে টাইমস্ট্যাম্প প্রশ্ন
- শেডার মডিউলে ডিফল্ট এন্ট্রি পয়েন্ট
- GPUExternalTexture রঙের স্থান হিসাবে প্রদর্শন-p3 সমর্থন করে
- মেমরি হিপ তথ্য
- ভোরের আপডেট
ক্রোম 120
- WGSL-এ 16-বিট ফ্লোটিং-পয়েন্ট মানগুলির জন্য সমর্থন
- সীমা ধাক্কা
- গভীরতা-স্টেনসিল অবস্থায় পরিবর্তন
- অ্যাডাপ্টারের তথ্য আপডেট
- টাইমস্ট্যাম্প ক্যোয়ান্টাইজেশন
- বসন্ত-পরিষ্কার বৈশিষ্ট্য
ক্রোম 119
- ফিল্টারযোগ্য 32-বিট ফ্লোট টেক্সচার
- unorm10-10-10-2 শীর্ষবিন্দু বিন্যাস
- rgb10a2uint টেক্সচার ফরম্যাট
- ভোরের আপডেট
ক্রোম 118
-
copyExternalImageToTexture()
এ HTMLImageElement এবং ImageData সমর্থন - পঠন-লেখা এবং শুধুমাত্র-পঠন সঞ্চয়স্থান টেক্সচারের জন্য পরীক্ষামূলক সমর্থন
- ভোরের আপডেট
ক্রোম 117
- শীর্ষবিন্দু বাফার আনসেট করুন
- বাইন্ড গ্রুপ আনসেট করুন
- ডিভাইস হারিয়ে গেলে অ্যাসিঙ্ক পাইপলাইন তৈরির ত্রুটিগুলি নীরব করুন৷
- SPIR-V shader মডিউল তৈরির আপডেট
- বিকাশকারীর অভিজ্ঞতা উন্নত করা
- স্বয়ংক্রিয়ভাবে তৈরি লেআউট সহ পাইপলাইন ক্যাশ করা হচ্ছে
- ভোরের আপডেট
ক্রোম 116
- ওয়েবকোডেক্স ইন্টিগ্রেশন
- হারিয়ে যাওয়া ডিভাইস GPUAdapter
requestDevice()
দ্বারা ফেরত দেওয়া হয়েছে -
importExternalTexture()
বলা হলে ভিডিও প্লেব্যাক মসৃণ রাখুন - বিশেষ সঙ্গতি
- বিকাশকারীর অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম 115
- WGSL ভাষা এক্সটেনশন সমর্থিত
- Direct3D 11 এর জন্য পরীক্ষামূলক সমর্থন
- AC পাওয়ারে ডিফল্টরূপে আলাদা GPU পান
- বিকাশকারীর অভিজ্ঞতা উন্নত করা
- ভোরের আপডেট
ক্রোম 114
- জাভাস্ক্রিপ্ট অপ্টিমাইজ করুন
- getCurrentTexture() কনফিগার না করা ক্যানভাসে InvalidStateError নিক্ষেপ করে
- WGSL আপডেট
- ভোরের আপডেট