İ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, Porter-Duff harmanlama modlarına dayalı olanlar gibi karmaşık karıştırma işlemleri gerektiren uygulamalar için özellikle 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, kaynak dizinini ve şu harmanlama faktörlerini belirtmek için @location(0)
adresindeki WGSL @blend_src
özelliğini kullanmanıza olanak tanır: "src1"
, "one-minus-src1"
, "src1-alpha"
ve "one-minus-src1-alpha"
. Aşağıdaki snippet'e, chromestatus girişi'ne 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, Metal arka uçlu WebGPU'yu destekleyen cihazlar için bir ara temsil (IR) sunarak, WebGPU gölgelendirici dil derleyicisi Ton'u geliştiriyor. Tint'in soyut söz dizimi ağacı (AST) ile Metal arka uç yazıcısı arasında konumlandırılan bu IR, derleyiciyi daha verimli ve sürdürülebilir hale getirerek hem geliştiricilerin hem de kullanıcıların yararına olacaktır. İlk testler, Unity'nin WGSL gölgelendiricilerini MSL'ye çevirirken Tint'in yeni sürümünün 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ı sorunu inceleyin.
GPUAdapter requestAdapterInfo() işlevinin kullanımdan kaldı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'de, uzantı struct'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
'ın depthWriteEnabled
özellik türü, JavaScript API'sindeki üç olası durumunu (doğru, yanlış ve tanımlanmamış) daha iyi yansıtmak için boole yerine WGPUOptionalBool
olarak değiştirildi. 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, öne çıkan özelliklerin yalnızca bir kısmı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 130
- İkili kaynak karıştırma
- Metal'de gölgelendirici derleme süresiyle ilgili iyileştirmeler
- GPUAdapter requestAdapterInfo() desteğinin sonlandırılması
- Dawn güncellemeleri
Chrome 129 sürümü
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ırma
- Vulkan arka ucu için arabellek yükleme optimizasyonu
- Gölgelendirici derleme süresiyle ilgili iyileştirmeler
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Dawn güncellemeleri
Chrome 125 sürümü
Chrome 124 sürümü
- Salt okunur ve okuma-yazma depolama dokuları
- Service Worker'lar ve paylaşılan çalışan desteği
- Yeni bağdaştırıcı bilgi özellikleri
- Hata düzeltmeleri
- Dawn güncellemeleri
Chrome 123
- WGSL'de DP4a yerleşik işlev 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 özellikleri için ayrı salt okunur durum
- Gün doğumu güncellemeleri
Chrome 122
- Uyumluluk moduyla erişimi genişletme (geliştirme aşamasındaki özellik)
- maxVertexAttributes sınırını artırma
- Gün doğumu güncellemeleri
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'da gölgelendirici derlemesi için FXC yerine DXC'yi kullanın
- İşleme ve oluşturma geçişlerinde zaman damgası sorguları
- Gölgelendirici modüllerinin varsayılan giriş noktaları
- Display-p3'ü GPUExternalTexture renk alanı olarak destekle
- Bellek yığınları bilgileri
- Dawn güncellemeleri
Chrome 120
- WGSL'de 16 bit kayan nokta değerleri desteği
- Sınırları zorlayın
- Derinlik-gölge durumuyla ilgili değişiklikler
- Bağdaştırıcı bilgisi güncellemeleri
- Zaman damgası sorgularının nicelenmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan dokular
- unorm10-10-10-2 tepe noktası biçimi
- rgb10a2uint doku biçimi
- Dawn güncellemeleri
Chrome 118
copyExternalImageToTexture()
ürününde HTMLImageElement ve ImageData desteği- Okunma-yazma ve salt okunur depolama dokusu için deneysel destek
- Gün doğumu güncellemeleri
Chrome 117 sürümü
- Köşe arabelleğini ayarlama
- Bağlama grubunu kaldırma
- Cihaz kaybolduğunda eşzamansız ardışık düzen oluşturma sırasında karşılaşılan hataları susturma
- 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
- Gün doğumu güncellemeleri
Chrome 116
- WebCodecs entegrasyonu
- GPUAdapter tarafından iade edilen kayıp cihaz
requestDevice()
importExternalTexture()
çağrılırsa video oynatmanın sorunsuz olmasını sağlayın- Spesifikasyon uygunluğu
- 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üç kaynağında varsayılan olarak ayrı GPU'yu etkinleştirme
- Geliştirici deneyimini iyileştirme
- Dawn güncellemeleri
Chrome 114
- JavaScript'i optimize etme
- Yapılandırılmamış tuvalde bulunangetCurrentTexture() işlemi InvalidStateError hatası veriyor
- WGSL güncellemeleri
- Gün doğumu güncellemeleri
Chrome 113
importExternalTexture()
dosyasında WebCodecs VideoFrame kaynağını kullanma