پشتیبانی از HDR با حالت ترسیم تن بوم
توسعه دهندگان وب گزینه های محدودی برای ارائه محتوای HDR دارند که عمدتاً بر عناصر <img>
و <video>
تکیه دارند. با این حال، عنصر <canvas>
به SDR محدود میشود. ایجاد محتوای پویا HDR در یک بوم مستلزم کدگذاری محتویات آن به عنوان یک تصویر HDR قبل از نمایش آن است (برای مثال به این نسخه نمایشی مراجعه کنید).
پارامتر جدید GPUCanvasToneMappingMode
در پیکربندی WebGPU canvas اکنون به WebGPU اجازه میدهد تا رنگهای روشنتر از سفید را ترسیم کند ( #FFFFFF
). این کار را از طریق حالت های زیر انجام می دهد:
"standard"
: رفتار پیش فرض محتوا را به محدوده SDR صفحه محدود می کند. این حالت با بستن تمام مقادیر رنگ در فضای رنگی صفحه به بازه[0, 1]
انجام می شود."extended"
: محدوده کامل HDR صفحه را باز می کند. این حالت با"standard"
در محدوده[0, 1]
صفحه مطابقت دارد. بستن یا طرح ریزی به محدوده دینامیکی گسترده صفحه انجام می شود اما[0, 1]
انجام نمی شود.
قطعه کد زیر به شما نشان می دهد که یک بوم را برای محدوده دینامیکی بالا پیکربندی کنید.
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",
toneMapping: { mode: "extended" },
});
با بررسی نمونه ذرات (HDR) و مثال WebGPU HDR ، HDR را با WebGPU کاوش کنید و ورودی chromestatus را ببینید.
پشتیبانی از زیرگروه های گسترده
پس از اعلام آزمایش زیرگروهها ، توابع داخلی زیرگروه اکنون برای استفاده در سایهزنهای محاسباتی و سایهزنهای قطعه در دسترس هستند. آنها دیگر فقط به محاسبه سایه بان ها محدود نمی شوند. شماره 354738715 را ببینید.
توجه داشته باشید که مقدار داخلی subgroup_size
در حال حاضر در shader های قطعه باگ است. فعلا از آن اجتناب کنید.
علاوه بر این، توابع داخلی زیر گروه زیر اضافه شده است:
-
subgroupAdd(value)
: جمع تمامvalue
فراخوانی فعال s را در سرتاسر زیرگروه برمیگرداند. -
subgroupExclusiveAdd(value)
: جمع اسکن انحصاری تمامvalue
فراخوان های فعال s را در سراسر زیرگروه برمی گرداند. -
subgroupMul(value)
: ضرب تمام فراخوانهای فعالvalue
s را در زیر گروه برمیگرداند. -
subgroupExclusiveMul(value)
: ضرب اسکن انحصاری تمامvalue
فراخوان های فعال s را در سرتاسر زیرگروه برمی گرداند. -
subgroupAnd(value)
: AND باینری همه فراخوانهای فعالvalue
s را در زیر گروه برمیگرداند. -
subgroupOr(value)
: OR باینری همه فراخوانهای فعالvalue
s را در سراسر زیرگروه برمیگرداند. -
subgroupXor(value)
: XOR باینری همه فراخوانهای فعالvalue
s را در زیر گروه برمیگرداند. -
subgroupMin(value)
: حداقل مقدار همه فراخوانهای فعال svalue
در زیر گروه برمیگرداند. -
subgroupMax(value)
: حداکثر مقدار همه فراخوانهای فعال svalue
در زیر گروه برمیگرداند. -
subgroupAll(value)
: اگرvalue
برای همه فراخوانهای فعال در زیرگروه درست باشد، مقدار true را برمیگرداند. -
subgroupAny(value)
: اگرvalue
برای هر فراخوانی فعال در زیرگروه درست باشد، مقدار true را برمیگرداند. -
subgroupElect()
: اگر این فراخوان کمترینsubgroup_invocation_id
در میان فراخوانیهای فعال در زیرگروه داشته باشد، true را برمیگرداند. -
subgroupBroadcastFirst(value)
:value
از فراخوانی فعال با کمترینsubgroup_invocation_id
در زیرگروه به همه فراخوانهای فعال دیگر پخش میکند. -
subgroupShuffle(value, id)
:value
از فراخوانی فعالی کهsubgroup_invocation_id
آن باid
مطابقت دارد، برمیگرداند. -
subgroupShuffleXor(value, mask)
:value
از فراخوانی فعالی کهsubgroup_invocation_id
باsubgroup_invocation_id ^ mask
مطابقت دارد، برمیگرداند.mask
باید به صورت پویا یکنواخت باشد. -
subgroupShuffleUp(value, delta)
:value
از فراخوانی فعالی کهsubgroup_invocation_id
باsubgroup_invocation_id - delta
مطابقت دارد، برمیگرداند. -
subgroupShuffleDown(value, delta)
:value
از فراخوانی فعالی کهsubgroup_invocation_id
آن باsubgroup_invocation_id + delta
مطابقت دارد، برمیگرداند. -
quadBroadcast(value, id)
:value
از فراخوانی quad با شناسه برابر باid
پخش می کند.id
باید یک بیان ثابت باشد. -
quadSwapX(value)
:value
بین فراخوانی ها در چهار در جهت X جابجا می کند. -
quadSwapY(value)
:value
بین فراخوانی ها در چهار در جهت Y مبادله می کند. -
quadSwapDiagonal(value)
:value
بین فراخوانی ها در چهار به صورت مورب تعویض می کند.
به روز رسانی سحر
ساختار wgpu::PrimitiveState
اکنون مستقیماً شامل تنظیمات کنترل کلیپ عمق میشود و نیاز به ساختار جداگانه wgpu::PrimitiveDepthClipControl
از بین میبرد. برای کسب اطلاعات بیشتر، قطعه کد زیر و webgpu-headers PR را ببینید.
// Before
wgpu::PrimitiveState primitive = {};
wgpu::PrimitiveDepthClipControl depthClipControl;
depthClipControl.unclippedDepth = true;
primitive.nextInChain = &depthClipControl;
// Now
wgpu::PrimitiveState primitive = {};
primitive.unclippedDepth = true;
این تنها برخی از نکات کلیدی را پوشش می دهد. فهرست جامع تعهدات را بررسی کنید.
چه چیزی در WebGPU جدید است
فهرستی از همه چیزهایی که در سری What's New in WebGPU پوشش داده شده است.
کروم 131
- فاصله های کلیپ در WGSL
- GPUCanvasContext getConfiguration()
- نقطه و خط اولیه نباید بایاس عمق داشته باشند
- توابع داخلی اسکن جامع برای زیرگروه ها
- پشتیبانی آزمایشی برای چند قرعه کشی غیر مستقیم
- گزینه کامپایل ماژول Shader ریاضی سخت
- حذف GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 130
- ترکیب منبع دوگانه
- بهبود زمان کامپایل شیدر در فلز
- منسوخ شدن GPUAdapter requestAdapterInfo()
- به روز رسانی سحر
کروم 129
کروم 128
- آزمایش با زیر گروه ها
- بایاس عمق تنظیم را برای خطوط و نقاط منسوخ کنید
- در صورت جلوگیری از Default، هشدار DevTools خطای ضبط نشده را مخفی کنید
- WGSL ابتدا نمونهگیری را درونیابی میکند و هر کدام را
- به روز رسانی سحر
کروم 127
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای WebAssembly interop
- خطاهای رمزگذار فرمان بهبود یافته است
- به روز رسانی سحر
کروم 126
- حد maxTextureArrayLayers را افزایش دهید
- بهینه سازی بارگذاری بافر برای باطن Vulkan
- بهبود زمان کامپایل شیدر
- بافرهای فرمان ارسالی باید منحصر به فرد باشند
- به روز رسانی سحر
کروم 125
کروم 124
- بافت های ذخیره سازی فقط خواندنی و خواندنی و نوشتنی
- پشتیبانی کارگران خدماتی و کارگران مشترک
- ویژگی های اطلاعات آداپتور جدید
- رفع اشکال
- به روز رسانی سحر
کروم 123
- توابع داخلی DP4a در WGSL پشتیبانی می کند
- پارامترهای اشاره گر نامحدود در WGSL
- قند نحوی برای عدم ارجاع کامپوزیت ها در WGSL
- حالت فقط خواندنی را برای جنبه های استنسیل و عمق جدا کنید
- به روز رسانی سحر
کروم 122
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- حد maxVertexAttributes را افزایش دهید
- به روز رسانی سحر
کروم 121
- پشتیبانی از WebGPU در اندروید
- برای کامپایل شیدر در ویندوز به جای FXC از DXC استفاده کنید
- پرس و جوهای مهر زمانی در گذرنامه های محاسبه و ارائه
- نقاط ورودی پیش فرض به ماژول های سایه زن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات انبوه حافظه
- به روز رسانی سحر
کروم 120
- پشتیبانی از مقادیر ممیز شناور 16 بیتی در WGSL
- محدودیت ها را فشار دهید
- تغییرات در حالت عمقی-استنسیل
- به روز رسانی اطلاعات آداپتور
- کوانتیزاسیون پرس و جوهای مهر زمانی
- ویژگی های تمیز کردن فنری
کروم 119
کروم 118
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- به روز رسانی سحر
کروم 117
- بافر راس را تنظیم نکنید
- گروه bind را تنظیم نکنید
- هنگام گم شدن دستگاه، خطاهای ایجاد خط لوله ناهمگام را خاموش کنید
- به روز رسانی های ایجاد ماژول سایه زن SPIR-V
- بهبود تجربه توسعه دهندگان
- ذخیره سازی خطوط لوله با طرح تولید خودکار
- به روز رسانی سحر
کروم 116
- یکپارچه سازی WebCodecs
- دستگاه گمشده توسط GPUAdapter
requestDevice()
برگردانده شد - در صورت فراخوانی
importExternalTexture()
پخش ویدیو را روان نگه دارید - مطابقت با مشخصات
- بهبود تجربه توسعه دهندگان
- به روز رسانی سحر
کروم 115
- پشتیبانی از پسوندهای زبان WGSL
- پشتیبانی آزمایشی از Direct3D 11
- GPU گسسته را به طور پیشفرض با برق AC دریافت کنید
- بهبود تجربه توسعه دهنده
- به روز رسانی سحر
کروم 114
- بهینه سازی جاوا اسکریپت
- getCurrentTexture() روی بوم پیکربندی نشده خطای InvalidState را ایجاد می کند
- به روز رسانی WGSL
- به روز رسانی سحر