Tuval ton eşleme modu ile HDR desteği
Web geliştiricileri, HDR içerik yayınlamak için temel olarak <img>
ve <video>
öğelerine dayalı sınırlı seçeneklere sahiptir. Ancak <canvas>
öğesi SDR ile sınırlı kalır. Bir kanvasta dinamik HDR içeriği oluşturmak için içeriğin, görüntülenmeden önce HDR resmi olarak kodlanması gerekir (örnek için bu demo'ya bakın).
WebGPU tuval yapılandırmasındaki yeni GPUCanvasToneMappingMode
parametresi artık WebGPU'nun beyazdan (#FFFFFF
) daha parlak renkler çizmesine izin veriyor. Bunu aşağıdaki modlarla yapar:
"standard"
: Varsayılan davranış, içeriği ekranın SDR aralığıyla kısıtlar. Bu mod, ekranın renk alanındaki tüm renk değerleri[0, 1]
aralığına sınırlanarak gerçekleştirilir."extended"
: Ekranın tüm HDR aralığının kilidini açar. Bu mod, ekranın[0, 1]
aralığındaki"standard"
ile eşleşir. Kilitleme veya projeksiyon, ekranın genişletilmiş dinamik aralığına uygulanır ancak[0, 1]
'e uygulanmaz.
Aşağıdaki kod snippet'inde, kanvası yüksek dinamik aralık için nasıl yapılandıracağınız gösterilmektedir.
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" },
});
Parçacıklar (HDR) örneği ve WebGPU HDR örneğine göz atarak WebGPU ile HDR'yi keşfedin ve chromestatus girişi'ne bakın.
Genişletilmiş alt grup desteği
Alt grup denemeleri duyurulduktan sonra, alt grup yerleşik işlevleri artık hem hesaplama gölgelendiricilerinde hem de parça gölgelendiricilerde kullanılabilir. Artık yalnızca hesaplama gölgelendiricileriyle sınırlı değiller. 354738715 numaralı soruna bakın.
subgroup_size
yerleşik değerinin şu anda parçacık gölgelendiricilerde hatalı olduğunu unutmayın. Şimdilik kaçının.
Ayrıca, aşağıdaki alt grup yerleşik işlevleri eklendi:
subgroupAdd(value)
: Alt gruptaki tüm etkin çağrılarınvalue
toplamını döndürür.subgroupExclusiveAdd(value)
: Alt gruptaki tüm etkin çağrılarınvalue
'larının özel tarama toplamını döndürür.subgroupMul(value)
: Alt gruptaki tüm etkinvalue
çağrılarının çarpımını döndürür.subgroupExclusiveMul(value)
: Alt grup genelindeki tüm etkinvalue
çağrılarının özel tarama çarpımını döndürür.subgroupAnd(value)
: Alt gruptaki tüm etkin çağrılarınvalue
'lerinin ikili VE işlevini döndürür.subgroupOr(value)
: Alt gruptaki tüm etkin çağrıların (value
) ikilisini VEYA değerini döndürür.subgroupXor(value)
: Alt gruptaki tüm etkin çağrılarınvalue
'larının ikili XOR'unu döndürür.subgroupMin(value)
: Alt gruptaki tüm etkin çağrıların (value
) minimum değerini döndürür.subgroupMax(value)
: Alt gruptaki tüm etkin çağrıların (value
) maksimum değerini döndürür.subgroupAll(value)
: Alt gruptaki tüm etkin çağrılar içinvalue
doğruysa true değerini döndürür.subgroupAny(value)
: Alt gruptaki etkin çağrılar içinvalue
doğruysa doğru değerini döndürür.subgroupElect()
: Bu çağrı, alt gruptaki etkin çağrılar arasında en düşüksubgroup_invocation_id
değerine sahipse doğru değerini döndürür.subgroupBroadcastFirst(value)
:value
öğesini, alt gruptaki en düşüksubgroup_invocation_id
değerine sahip etkin çağrıdan diğer tüm etkin çağrılara yayınlar.subgroupShuffle(value, id)
: Etkin çağrıdansubgroup_invocation_id
değeriid
ile eşleşenvalue
değerini döndürür.subgroupShuffleXor(value, mask)
: Etkin çağrıdansubgroup_invocation_id
değerisubgroup_invocation_id ^ mask
ile eşleşenvalue
değerini döndürür.mask
dinamik olarak tekdüze olmalıdır.subgroupShuffleUp(value, delta)
:subgroup_invocation_id
değerisubgroup_invocation_id - delta
ile eşleşen etkin çağrıdanvalue
değerini döndürür.subgroupShuffleDown(value, delta)
: Etkin çağrıdansubgroup_invocation_id
değerisubgroup_invocation_id + delta
ile eşleşenvalue
değerini döndürür.quadBroadcast(value, id)
:id
kimlikli dörtlü çağrıdanvalue
yayınlar.id
bir sabit ifade olmalıdır.quadSwapX(value)
:value
değerini, dörtlü gruptaki çağrılar arasında X yönünde değiştirir.quadSwapY(value)
:value
değerini Y yönündeki dörtlü gruptaki çağrılar arasında değiştirir.quadSwapDiagonal(value)
:value
değerini, çapraz dörtgendeki çağrılar arasında değiştirir.
Şafak güncellemeleri
wgpu::PrimitiveState
yapısı artık doğrudan derinlik klibi kontrol ayarını içerir ve ayrı bir wgpu::PrimitiveDepthClipControl
yapısına yönelik ihtiyacı ortadan kaldırır. Daha fazla bilgi edinmek için aşağıdaki kod snippet'ine ve webgpu-headers PR'ye bakın.
// Before
wgpu::PrimitiveState primitive = {};
wgpu::PrimitiveDepthClipControl depthClipControl;
depthClipControl.unclippedDepth = true;
primitive.nextInChain = &depthClipControl;
// Now
wgpu::PrimitiveState primitive = {};
primitive.unclippedDepth = true;
Bu, önemli noktalardan yalnızca bazılarını kapsar. Taahhütlerin kapsamlı listesini inceleyin.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.
Chrome 131
- WGSL'de mesafeleri kırpma
- 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 dolaylı destek
- Gölgelendirici modülü derleme seçeneği katı matematik
- GPUAdapter requestAdapterInfo() işlevini kaldırma
- Dawn güncellemeleri
Chrome 130
- İkili kaynak karıştırma
- Metal'de gölgelendirici derleme süresiyle ilgili iyileştirmeler
- GPUAdapter requestAdapterInfo() işlevinin kullanımdan kaldı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 sürümü
- Android'de OpenGL ES için deneysel destek
- GPUAdapter bilgi özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- Komut kodlayıcı hataları iyileştirildi
- Gün doğumu güncellemeleri
Chrome 126
- maxTextureArrayLayers sınırını artırma
- 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
- Dawn güncellemeleri
Chrome 125
Chrome 124
- Salt okunur ve okuma/yazma depolama alanı dokuları
- Hizmet çalışanları ve paylaşılan çalışanlar 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 özellikleri için ayrı salt okunur durum
- Gün doğumu 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 desteği
- Windows'ta gölgelendirici derleme için FXC yerine DXC kullanma
- Bilgi işlem ve oluşturma kartlarında 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 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 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 sürümü
copyExternalImageToTexture()
'te HTMLImageElement ve ImageData desteği- Okuma/yazma ve salt okuma depolama dokusu için deneysel destek
- Dawn güncellemeleri
Chrome 117 sürümü
- 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ğlayın- Spesifikasyona uygunluk
- Geliştirici deneyimini iyileştirme
- Dawn güncellemeleri
Chrome 115
- 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
- Dawn güncellemeleri
Chrome 114
- JavaScript'i optimize etme
- Yapılandırılmamış tuvalde bulunangetCurrentTexture() işlemi InvalidStateError hatası veriyor
- WGSL ile ilgili güncellemeler
- Dawn güncellemeleri
Chrome 113
importExternalTexture()
dosyasında WebCodecs VideoFrame kaynağını kullanma