منتشر شده: ۸ ژانویه ۲۰۲۵
استفاده از نمای بافت
نماهای بافت GPU در حال حاضر تمام پرچمهای استفاده را از بافت GPU منبع خود به ارث میبرند. این میتواند مشکلساز باشد زیرا برخی از قالبهای نمایش با کاربردهای خاصی ناسازگار هستند. برای رفع این مشکل، فراخوانی createView()
با عضو usage
اختیاری به شما امکان میدهد تا به طور صریح زیرمجموعهای از پرچمهای استفاده از بافت منبع را که با قالب نمای انتخاب شده سازگار هستند، مشخص کنید.
این تغییر امکان اعتبارسنجی اولیه و کنترل دقیقتر بر نحوه استفاده از نما را فراهم میکند. همچنین با سایر APIهای گرافیکی که در آنها پرچمهای استفاده پارامترهای رایجی در ایجاد نما هستند، همسو میشود و فرصتهای بهینهسازی را ارائه میدهد.
به قطعه کد زیر، ورودی chromestatus و شماره ۳۶۳۹۰۳۵۲۶ مراجعه کنید.
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: 'rgba8unorm-srgb',
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage.
});
ترکیب بافتهای شناور ۳۲ بیتی
بافتهای ممیز شناور ۳۲ بیتی برای رندر HDR ضروری هستند تا طیف وسیعی از مقادیر رنگ را حفظ کرده و از ایجاد مصنوعات نواری رنگ جلوگیری کنند. به عنوان مثال در مصورسازی علمی.
ویژگی جدید GPU با نام "float32-blendable"
باعث میشود بافتهای GPU با فرمتهای "r32float"
، "rg32float"
و "rgba32float"
قابل ترکیب باشند. ایجاد یک خط لوله رندر که از ترکیب با هر پیوست با فرمت float32 استفاده میکند، اکنون هنگام درخواست یک دستگاه GPU با این ویژگی امکانپذیر است.
به قطعه کد زیر، ورودی chromestatus و شماره ۳۶۹۶۴۹۳۴۸ مراجعه کنید.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
// Explicitly request 32-bit float textures blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-blendable"],
});
// ... Creation of shader modules is omitted for readability.
// Create a render pipeline that uses blending for the rgba32float format.
device.createRenderPipeline({
vertex: { module: myVertexShaderModule },
fragment: {
module: myFragmentShaderModule,
targets: [
{
format: "rgba32float",
blend: { color: {}, alpha: {} },
},
],
},
layout: "auto",
});
// Create the GPU texture with rgba32float format and
// send the appropriate commands to the GPU...
ویژگی اطلاعات adapterInfo
GPUDevice
برای کتابخانههایی که از اشیاء GPUDevice
ارائه شده توسط کاربر استفاده میکنند، دسترسی به اطلاعات مربوط به GPU فیزیکی مهم است، زیرا ممکن است نیاز به بهینهسازی یا پیادهسازی راهحلهایی بر اساس معماری GPU داشته باشند. اگرچه دسترسی به این اطلاعات از طریق شیء GPUAdapter
امکانپذیر است، اما هیچ راه مستقیمی برای دریافت آن از GPUDevice
به تنهایی وجود ندارد. این میتواند ناخوشایند باشد، زیرا ممکن است کاربران را ملزم به ارائه اطلاعات اضافی در کنار GPUDevice
کند.
برای رفع این مشکل، GPUAdapterInfo
اکنون از طریق ویژگی GPUDevice
adapterInfo
نمایش داده میشود. این ویژگیها مشابه ویژگی info
GPUAdapter
موجود هستند.
به قطعه کد زیر، ورودی chromestatus و شماره ۳۷۶۶۰۰۸۳۸ مراجعه کنید.
function optimizeForGpuDevice(device) {
if (device.adapterInfo.vendor === "amd") {
// Use AMD-specific optimizations.
} else if (device.adapterInfo.architecture.includes("turing")) {
// Optimize for NVIDIA Turing architecture.
}
}
پیکربندی زمینه بوم با قالب نامعتبر، خطای جاوا اسکریپت ایجاد میکند
پیش از این، استفاده از یک قالب بافت نامعتبر با متد configure()
از زمینه بوم GPU منجر به خطای اعتبارسنجی GPU میشد. این خطا به خطای TypeError
جاوا اسکریپت تغییر یافته است. این امر از سناریوهایی که در آنها getCurrentTexture()
با وجود پیکربندی نادرست زمینه بوم GPU، یک بافت GPU معتبر برمیگرداند، جلوگیری میکند. اطلاعات بیشتر را میتوانید در شماره 372837859 بیابید.
فیلتر کردن محدودیتهای نمونهبرداری روی بافتها
استفاده از بافتهای با فرمت "sint"
، "uint"
و " depth"
با نمونههای فیلترینگ قبلاً مجاز بود. اکنون به درستی استفاده از بافت با فرمت "sint"
یا "uint"
با نمونهگیر فیلترینگ را ممنوع میکند. توجه داشته باشید که در حال حاضر اگر از بافت " depth"
با نمونهگیر فیلترینگ استفاده کنید، هشداری منتشر میکند زیرا در آینده مجاز نخواهد بود. به شماره 376497143 مراجعه کنید.
این محدودیتها به این معنی است که استفاده از یک بافت عمقی با یک نمونهگیر بدون فیلتر، نیاز به ایجاد دستی طرحبندیهای گروه اتصال دارد. دلیل این امر این است که طرحبندیهای گروه اتصال ایجاد شده به صورت "خودکار" هنوز از این ترکیب پشتیبانی نمیکنند. شماره مشخصات ۴۹۵۲ شامل پیشنهادی است که در دست بررسی است تا این محدودیت را در آینده برطرف کند.
آزمایش زیرگروههای توسعهیافته
آزمایش زیرگروهها که در ابتدا قرار بود در کروم ۱۳۱ به پایان برسد، به کروم ۱۳۳ گسترش یافته و در ۱۶ آوریل ۲۰۲۵ به پایان میرسد. در حالی که اولین آزمایش اصلی بر عملکرد متمرکز بود، فاقد ضمانتهای مهم قابلیت حمل بود. این ضمانتها اکنون اضافه خواهند شد که به طور بالقوه باعث ایجاد خطا در کد موجود میشوند.
بهبود تجربه توسعهدهنده
اکنون هنگام استفاده از گزینه powerPreference
با requestAdapter()
در ویندوز، یک هشدار در DevTools مشاهده میشود. این هشدار زمانی که Chrome بداند چگونه از دو پردازنده گرافیکی مختلف استفاده کند و نتایج بین آنها را ترکیب کند، حذف خواهد شد. به شماره ۳۶۹۲۱۹۱۲۷ مراجعه کنید.
اندازه بافر GPU اکنون در پیام خطا هنگام ایجاد یک بافر GPU که خیلی بزرگ است، نشان داده میشود. به شماره ۳۷۴۱۶۷۹۸ مراجعه کنید.
پشتیبانی آزمایشی از فرمتهای بافت نرمالشدهی ۱۶ بیتی
قالبهای بافت نرمالشده و نرمالشدهی امضاشدهی ۱۶ بیتی اکنون به ترتیب به صورت آزمایشی در پشت ویژگیهای پردازندهی گرافیکی "chromium-experimental-snorm16-texture-formats"
و "chromium-experimental-unorm16-texture-formats"
در دسترس هستند، در حالی که برای استانداردسازی مورد بحث قرار میگیرند.
این ویژگیها پشتیبانی از فرمتهای بافت نرمالشده ۱۶ بیتی با کاربردهای COPY_SRC
، COPY_DST
، TEXTURE_BINDING
، RENDER_ATTACHMENT
، نمونهبرداری چندگانه و قابلیتهای تفکیک را اضافه میکنند. فرمتهای اضافی عبارتند از "r16unorm"
، "rg16unorm"
، "rgba16unorm"
، "r16snorm"
، "rg16snorm"
و "rgba16snorm"
.
تا زمانی که این ویژگیهای آزمایشی استانداردسازی شوند، پرچم «پشتیبانی از Unsafe WebGPU» را در chrome://flags/#enable-unsafe-webgpu
فعال کنید تا در کروم در دسترس قرار گیرند.
به قطعه کد زیر و شماره ۳۷۴۷۹۰۸۹۸ مراجعه کنید.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-snorm16-texture-formats")) {
throw new Error("16-bit signed normalized formats support is not available");
}
// Explicitly request 16-bit signed normalized formats support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-snorm16-texture-formats"],
});
// Create a texture with the rgba16snorm format which consists of four
// components, each of which is a 16-bit, normalized, signed integer value.
const texture = device.createTexture({
size: [4, 4],
format: "rgba16snorm",
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
// Send the appropriate commands to the GPU...
بهروزرسانیهای سپیدهدم
متدهای EnumerateFeatures(FeatureName * features)
از wgpu::Adapter
و wgpu::Device
به نفع استفاده از GetFeatures(SupportedFeatures * features)
منسوخ شدهاند. به شماره ۳۶۸۶۷۲۱۲۳ مراجعه کنید.
رابط برنامهنویسی کاربردی webgpu.h در زبان C، تمام char const *
به ساختار WGPUStringView
تغییر داده است که یک نما را به صورت یک رشته کدگذاری شده با UTF-8 تعریف میکند. این ساختار مانند یک اشارهگر به دادههای رشته عمل میکند که به همراه طول آن ارائه شده است. این به شما امکان میدهد بدون نیاز به کپی کردن رشته، با بخشهایی از آن کار کنید. به شماره 42241188 مراجعه کنید.
این فقط برخی از نکات برجسته کلیدی را پوشش میدهد. لیست جامع کامیتها را بررسی کنید.
ویژگیهای جدید WebGPU
فهرستی از تمام مواردی که در مجموعه «ویژگیهای جدید WebGPU» پوشش داده شده است.
کروم ۱۴۲
کروم ۱۴۱
- رنگ IR تکمیل شد
- تحلیل محدوده اعداد صحیح در کامپایلر WGSL
- بهروزرسانی SPIR-V 1.4 برای رابط کاربری Vulkan
- بهروزرسانیهای سپیدهدم
کروم ۱۴۰
- درخواستهای دستگاه، آداپتور را مصرف میکنند
- اختصار برای استفاده از بافت در جایی که از نمای بافت استفاده میشود
- WGSL textureSampleLevel از بافتهای تکبعدی پشتیبانی میکند.
- استفاده از بافت ذخیرهسازی فقط خواندنی bgra8unorm را منسوخ کنید
- ویژگی isFallbackAdapter مربوط به GPUAdapter را حذف کنید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۹
- پشتیبانی از بافت سهبعدی برای فرمتهای فشرده BC و ASTC
- ویژگی جدید «ویژگیهای اصلی و محدودیتها»
- نسخه آزمایشی Origin برای حالت سازگاری با WebGPU
- بهروزرسانیهای سپیدهدم
کروم ۱۳۸
- مختصر نویسی برای استفاده از بافر به عنوان منبع اتصال
- تغییرات اندازه مورد نیاز برای بافرهای نگاشت شده در زمان ایجاد
- گزارش معماری برای پردازندههای گرافیکی اخیر
- منسوخ کردن ویژگی isFallbackAdapter در GPUAdapter
- بهروزرسانیهای سپیدهدم
کروم ۱۳۷
- استفاده از نمای بافت برای اتصال خارجی بافت
- بافرها بدون مشخص کردن آفستها و اندازه، کپی میکنند
- بارگذاری یکنواخت گروه کاری WGSL با استفاده از اشارهگر به اتمی
- ویژگی powerPreference آداپتور GPU
- ویژگی سازگاری GPURequestAdapterOptions را حذف کنید.
- بهروزرسانیهای سپیدهدم
کروم ۱۳۶
- GPUAdapterInfo ویژگی آداپتور برگشتی است
- بهبود زمان کامپایل شیدر در D3D12
- تصاویر بوم را ذخیره و کپی کنید
- محدودیتهای حالت سازگاری را بردارید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۵
- اجازه ایجاد طرح خط لوله با طرح گروه اتصال تهی
- اجازه دهید نماها از مرزهای اهداف رندر فراتر روند
- دسترسی آسانتر به حالت سازگاری آزمایشی در اندروید
- حذف محدودیت maxInterStageShaderComponents
- بهروزرسانیهای سپیدهدم
کروم ۱۳۴
- بهبود حجم کار یادگیری ماشین با زیرگروهها
- حذف پشتیبانی از انواع بافتهای قابل فیلتر شدن با شناور به عنوان بافتهای قابل ترکیب
- بهروزرسانیهای سپیدهدم
کروم ۱۳۳
- فرمتهای رأس اضافی unorm8x4-bgra و 1-component
- اجازه دهید محدودیتهای ناشناخته با مقدار نامشخص درخواست شوند
- تغییرات قوانین ترازبندی WGSL
- افزایش عملکرد WGSL با حذف
- استفاده از VideoFrame displaySize برای بافتهای خارجی
- مدیریت تصاویر با جهتهای غیر پیشفرض با استفاده از copyExternalImageToTexture
- بهبود تجربه توسعهدهنده
- فعال کردن حالت سازگاری با featureLevel
- پاکسازی ویژگیهای زیرگروه آزمایشی
- محدودیت maxInterStageShaderComponents را منسوخ کنید
- بهروزرسانیهای سپیدهدم
کروم ۱۳۲
- استفاده از نمای بافت
- ترکیب بافتهای شناور ۳۲ بیتی
- ویژگی اطلاعات آداپتور GPUDevice
- پیکربندی زمینه بوم با قالب نامعتبر، خطای جاوا اسکریپت ایجاد میکند
- فیلتر کردن محدودیتهای نمونهبرداری روی بافتها
- آزمایش زیرگروههای توسعهیافته
- بهبود تجربه توسعهدهنده
- پشتیبانی آزمایشی از فرمتهای بافت نرمالشدهی ۱۶ بیتی
- بهروزرسانیهای سپیدهدم
کروم ۱۳۱
- فواصل برش در WGSL
- تابع ()GPUCanvasContext getConfiguration
- اشکال هندسی اولیه نقطه و خط نباید دارای بایاس عمق باشند.
- توابع داخلی اسکن فراگیر برای زیرگروهها
- پشتیبانی آزمایشی از چند ترسیم غیرمستقیم
- گزینه کامپایل ماژول شیدر با محاسبات دقیق
- حذف تابع requestAdapterInfo() در کارت گرافیک GPUAdapter
- بهروزرسانیهای سپیدهدم
کروم ۱۳۰
- ترکیب دو منبعی
- بهبود زمان کامپایل شیدر در Metal
- منسوخ شدن تابع GPUAdapter requestAdapterInfo()
- بهروزرسانیهای سپیدهدم
کروم ۱۲۹
کروم ۱۲۸
- آزمایش با زیرگروهها
- منسوخ کردن تنظیم بایاس عمق برای خطوط و نقاط
- اگر preventDefault خطای ضبط نشده را پنهان کنید، هشدار DevTools
- ابتدا نمونهبرداری درونیابی WGSL و یا
- بهروزرسانیهای سپیدهدم
کروم ۱۲۷
- پشتیبانی آزمایشی از OpenGL ES در اندروید
- ویژگی اطلاعات GPUAdapter
- بهبودهای تعامل وباسمبلی
- بهبود خطاهای انکودر فرمان
- بهروزرسانیهای سپیدهدم
کروم ۱۲۶
- افزایش محدودیت maxTextureArrayLayers
- بهینهسازی آپلود بافر برای بکاند ولکان
- بهبود زمان کامپایل سایهزن
- بافرهای دستور ارسالی باید منحصر به فرد باشند
- بهروزرسانیهای سپیدهدم
کروم ۱۲۵
کروم ۱۲۴
- بافتهای ذخیرهسازی فقط خواندنی و خواندنی-نوشتنی
- پشتیبانی از کارگران خدماتی و کارگران اشتراکی
- ویژگیهای اطلاعات آداپتور جدید
- رفع اشکالات
- بهروزرسانیهای سپیدهدم
کروم ۱۲۳
- پشتیبانی از توابع داخلی DP4a در WGSL
- پارامترهای اشارهگر بدون محدودیت در WGSL
- شکر نحوی برای ارجاعزدایی از ترکیبات در WGSL
- حالت فقط خواندنی جداگانه برای استنسیل و جنبههای عمق
- بهروزرسانیهای سپیدهدم
کروم ۱۲۲
- گسترش دسترسی با حالت سازگاری (ویژگی در حال توسعه)
- افزایش محدودیت maxVertexAttributes
- بهروزرسانیهای سپیدهدم
کروم ۱۲۱
- پشتیبانی از WebGPU در اندروید
- برای کامپایل سایهزن در ویندوز، به جای FXC از DXC استفاده کنید
- کوئریهای برچسب زمانی در پاسهای محاسبه و رندر
- نقاط ورودی پیشفرض به ماژولهای سایهزن
- پشتیبانی از display-p3 به عنوان فضای رنگی GPUExternalTexture
- اطلاعات مربوط به تودههای حافظه
- بهروزرسانیهای سپیدهدم
کروم ۱۲۰
- پشتیبانی از مقادیر ممیز شناور ۱۶ بیتی در WGSL
- محدودیتها را کنار بزنید
- تغییرات در حالت عمق شابلون
- بهروزرسانیهای اطلاعات آداپتور
- کوئستیزاسیون کوئستسنجی کوئستسنجی کوئستسنجی با مهر زمانی
- ویژگیهای نظافت بهاری
کروم ۱۱۹
- بافتهای شناور ۳۲ بیتی قابل فیلتر
- قالب رأس unorm10-10-10-2
- فرمت بافت rgb10a2uint
- بهروزرسانیهای سپیدهدم
کروم ۱۱۸
- پشتیبانی از HTMLImageElement و ImageData در
copyExternalImageToTexture()
- پشتیبانی آزمایشی از بافت ذخیرهسازی خواندنی-نوشتنی و فقط خواندنی
- بهروزرسانیهای سپیدهدم
کروم ۱۱۷
- بافر رأس را غیرفعال کنید
- گروه اتصال را غیرفعال کنید
- خطاهای ناشی از ایجاد خط لوله ناهمگام را هنگام از دست رفتن دستگاه، بیصدا کنید
- بهروزرسانیهای ایجاد ماژول سایهزن SPIR-V
- بهبود تجربه توسعهدهنده
- ذخیره سازی خطوط لوله با طرح بندی خودکار تولید شده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۶
- ادغام WebCodecs
- دستگاه گمشده توسط
requestDevice()
از نوع GPUAdapter بازگردانده میشود. - اگر تابع
importExternalTexture()
فراخوانی شود، پخش ویدیو روان خواهد بود. - انطباق با مشخصات
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۵
- افزونههای زبان WGSL پشتیبانیشده
- پشتیبانی آزمایشی از Direct3D 11
- به طور پیش فرض از پردازنده گرافیکی مجزا با برق AC استفاده کنید
- بهبود تجربه توسعهدهنده
- بهروزرسانیهای سپیدهدم
کروم ۱۱۴
- بهینهسازی جاوا اسکریپت
- تابع ()getCurrentTexture روی بوم پیکربندی نشده، خطای InvalidStateError را نمایش میدهد.
- بهروزرسانیهای WGSL
- بهروزرسانیهای سپیدهدم