İkili kaynak karıştırma
İki parça gölgelendirici çıkışlarının tek bir çerçeve arabelleğinde birleştirilmesine çift kaynak karıştırma adı verilir. Bu teknik, özellikle Porter-Duff karışım modlarına dayalı olanlar gibi karmaşık karışım işlemleri gerektiren uygulamalar için yararlıdır. İkili kaynak karıştırma, sonraki oluşturma geçişlerini tek bir oluşturma geçişiyle değiştirerek performansı ve esnekliği artırabilir.
Yeni "dual-source-blending"
WebGPU özelliği, @location(0)
adresindeki WGSL @blend_src
özelliğini kullanarak karıştırma kaynak dizini ve aşağıdaki karıştırma faktörlerini ("src1"
, "one-minus-src1"
, "src1-alpha"
ve "one-minus-src1-alpha"
) belirtmenize olanak tanır. Aşağıdaki snippet'e, chromestatus girişine ve 341973423 numaralı soruna bakın.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("dual-source-blending")) {
throw new Error("Dual source blending support is not available");
}
// Explicitly request dual source blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["dual-source-blending"],
});
const code = `
enable dual_source_blending;
struct FragOut {
@location(0) @blend_src(0) color : vec4f,
@location(0) @blend_src(1) blend : vec4f,
}
@fragment fn main() -> FragOut {
var output : FragOut;
output.color = vec4f(1.0, 1.0, 1.0, 1.0);
output.blend = vec4f(0.5, 0.5, 0.5, 0.5);
return output;
}
`;
const shaderModule = device.createShaderModule({ code });
// Create a render pipeline with this shader module
// and run the shader on the GPU...
Metal'de gölgelendirici derleme süresi iyileştirmeleri
Chrome ekibi, WebGPU gölgelendirici dili derleyicisi Tint'i, Metal arka ucu ile WebGPU'yu destekleyen cihazlar için bir ara temsil (IR) ekleyerek geliştiriyor. Tint'in soyut söz dizimi ağacı (AST) ile Metal arka uç yazarı arasına yerleştirilen bu IR, derleyiciyi daha verimli ve bakımı kolay hale getirerek hem geliştiricilere hem de kullanıcılara fayda sağlayacak. İlk testler, Tint'in yeni sürümünün Unity'nin WGSL gölgelendiricilerini MSL'ye çevirirken 10 kata kadar daha hızlı olduğunu gösteriyor.
Android ve ChromeOS'te halihazırda kullanılabilen bu iyileştirmeler, Metal arka ucu ile WebGPU'yu destekleyen macOS cihazlarına kademeli olarak uygulanıyor. 42251016 numaralı soruna bakın.
GPUAdapter requestAdapterInfo() desteğinin sonlandırılması
Geliştiriciler GPUAdapter info
özelliğini kullanarak GPUAdapterInfo'yu zaten senkronize olarak alabildikleri için GPUAdapter requestAdapterInfo()
asynkron yöntemi gereksizdir. Bu nedenle, standart olmayan GPUAdapter requestAdapterInfo()
yönteminin desteği sonlandırıldı. Kullanımdan kaldırma niyeti bölümüne bakın.
Şafak güncellemeleri
webgpu.h C API'sinde, uzantı yapıları için bazı adlandırma kuralları tanımlanmıştır. Aşağıdaki ad değişikliklerine ve 42241174 numaralı soruna bakın.
WGPURenderPassDescriptor uzantı
|
|
WGPURenderPassDescriptorMaxDrawCount ->
|
WGPURenderPassMaxDrawCount
|
WGPUShaderModuleDescriptor uzantı
|
|
WGPUShaderModuleSPIRVDescriptor ->
|
WGPUShaderSourceSPIRV
|
WGPUShaderModuleWGSLDescriptor ->
|
WGPUShaderSourceWGSL
|
WGPUSurfaceDescriptor uzantı
|
|
WGPUSurfaceDescriptorFromMetalLayer ->
|
WGPUSurfaceSourceMetalLayer
|
WGPUSurfaceDescriptorFromWindowsHWND ->
|
WGPUSurfaceSourceWindowsHWND
|
WGPUSurfaceDescriptorFromXlibWindow ->
|
WGPUSurfaceSourceXlibWindow
|
WGPUSurfaceDescriptorFromWaylandSurface ->
|
WGPUSurfaceSourceWaylandSurface
|
WGPUSurfaceDescriptorFromAndroidNativeWindow ->
|
WGPUSurfaceSourceAndroidNativeWindow
|
WGPUSurfaceDescriptorFromXcbWindow ->
|
WGPUSurfaceSourceXCBWindow
|
WGPUSurfaceDescriptorFromCanvasHTMLSelector ->
|
WGPUSurfaceSourceCanvasHTMLSelector_Emscripten
|
WGPUDepthStencilState
öğesinin depthWriteEnabled
özellik türü, JavaScript API'de olduğu gibi üç olası durumunu (true, false ve undefined) daha iyi yansıtmak için boole değerinden WGPUOptionalBool
değerine geçer. Daha fazla bilgi edinmek için aşağıdaki kod snippet'ine ve webgpu-headers PR'ye bakın.
wgpu::DepthStencilState depthStencilState = {};
depthStencilState.depthWriteEnabled = wgpu::OptionalBool::True; // Undefined by default
Bu, önemli noktalardan yalnızca bazılarını kapsar. Kapsamlı commit listesine göz atın.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.
Chrome 131
- Mesafeleri WGSL'de kırp
- GPUCanvasContext getConfiguration()
- Nokta ve çizgi primitiflerinde derinlik önyargısı olmamalıdır
- Alt gruplar için dahili kapsayıcı tarama işlevleri
- Çoklu çizim için deneysel destek
- Shader modülü derleme seçeneği katı matematik
- GPUAdapter requestAdapterInfo() yöntemini kaldırın
- Dawn güncellemeleri
Chrome 130
- Çift kaynak karıştırma
- Metall'de Shader derleme süresi iyileştirmeleri
- GPUAdapter requestAdapterInfo() desteğinin sonlandırılması
- Dawn güncellemeleri
Chrome 129
Chrome 128
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarının desteği sonlandırıldı
- preventDefault ise yakalanmayan hata DevTools uyarısını gizleme
- WGSL ilk olarak örneklemeyi
- Dawn güncellemeleri
Chrome 127
- Android'de OpenGL ES için deneysel destek
- GPUAdapter bilgi özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- Komut kodlayıcı hataları iyileştirildi
- Dawn güncellemeleri
Chrome 126
- maxTextureArraylayers sınırını artır
- Vulkan arka uç için arabellek yükleme optimizasyonu
- Gölgelendirici derleme süresiyle ilgili iyileştirmeler
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Gün doğumu güncellemeleri
Chrome 125 sürümü
Chrome 124
- Salt okunur ve okuma/yazma depolama alanı dokuları
- Service Worker'lar ve paylaşılan çalışan desteği
- Yeni adaptör bilgileri özellikleri
- Hata düzeltmeleri
- Dawn güncellemeleri
Chrome 123
- WGSL'de DP4a yerleşik işlevleri desteği
- WGSL'de sınırsız işaretçi parametreleri
- WGSL'de bileşimlerin referansını kaldırmak için söz dizimi
- Şablon ve derinlik unsurları için ayrı salt okunur durum
- Dawn güncellemeleri
Chrome 122
- Uyumluluk modu ile erişimi genişletin (geliştirme aşamasındaki özellik)
- maxVertexAttributes sınırını artırma
- Dawn güncellemeleri
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'ta gölgelendirici derleme için FXC yerine DXC kullanma
- İşleme ve oluşturma geçişlerinde zaman damgası sorguları
- Gölgelendirici modüllerinin varsayılan giriş noktaları
- GPUExternalTexture renk alanı olarak display-p3 desteği
- Bellek yığını bilgileri
- Dawn güncellemeleri
Chrome 120
- WGSL'de 16 bitlik kayan nokta değerleri için destek
- Sınırları zorlayın
- Derinlik-gölge durumuyla ilgili değişiklikler
- Adaptör bilgileri güncellemeleri
- Zaman damgası sorgularının kesirli sayılara dönüştürülmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan noktalı dokular
- unorm10-10-10-2 köşe noktası biçimi
- rgb10a2uint doku biçimi
- Dawn güncellemeleri
Chrome 118
copyExternalImageToTexture()
'te HTMLImageElement ve ImageData desteği- Okuma/yazma ve salt okuma depolama dokusu için deneysel destek
- Dawn güncellemeleri
Chrome 117
- Köşe noktası arabelleğinin ayarını kaldırma
- Bağlama grubunu kaldırma
- Cihaz kaybolduğunda eşzamansız ardışık düzen oluşturma işlemlerinden kaynaklanan hataları yoksayma
- SPIR-V gölgelendirici modülü oluşturma güncellemeleri
- Geliştirici deneyimini iyileştirme
- Otomatik olarak oluşturulan düzenle ardışık düzenleri önbelleğe alma
- Dawn güncellemeleri
Chrome 116
- WebCodecs entegrasyonu
- Kayıp cihaz, GPUAdapter
requestDevice()
tarafından döndürüldü importExternalTexture()
çağrılırsa video oynatmanın sorunsuz olmasını sağlama- Spesifikasyona uygunluk
- Geliştirici deneyimini iyileştirme
- Gün doğumu güncellemeleri
Chrome 115 sürümü
- Desteklenen WGSL dil uzantıları
- Direct3D 11 için deneysel destek
- AC gücünde ayrı GPU'yu varsayılan olarak alma
- Geliştirici deneyimini iyileştirme
- Gün doğumu güncellemeleri
Chrome 114
- JavaScript'i optimize edin
- Yapılandırılmamış kanvasta getCurrentTexture() InvalidStateError hatası veriyor
- WGSL ile ilgili güncellemeler
- Dawn güncellemeleri