Tekstury w pamięci tylko do odczytu i do odczytu i zapisu
Typ wiązania tekstur pamięci masowej umożliwia shaderom odczytywanie tekstur z pamięci masowej bez dodawania użycia TEXTURE_BINDING
oraz wykonywanie operacji odczytu i zapisu mieszanych w określonych formatach. Jeśli "readonly_and_readwrite_storage_textures"
rozszerzenie języka WGSL jest obecne w navigator.gpu.wgslLanguageFeatures
, podczas tworzenia układu grupy wiązania możesz ustawić dostęp GPUStorageTexture
do "read-write"
lub "read-only"
. Wcześniej było to ograniczone do "write-only"
.
Dzięki temu kod cieniowania WGSL może używać kwalifikatora dostępu read_write
i read
na potrzeby tekstur pamięci, wbudowane funkcje textureLoad()
i textureStore()
działają odpowiednio. Dostępna jest też nowa wbudowana funkcja textureBarrier()
do synchronizowania dostępu do pamięci tekstur w grupie roboczej.
Zalecamy użycie dyrektywy wymagań, aby zasygnalizować potencjalną niekompatybilność z requires readonly_and_readwrite_storage_textures;
na początku kodu shadera WGSL. Zobacz ten przykład i problem dawn:1972.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
Obsługa skryptów service worker i skryptów współdzielonych
WebGPU w Chrome przenosi obsługę procesów internetowych na wyższy poziom, oferując teraz obsługę zarówno dla skryptów roboczych, jak i współdzielonych. Skrypty service worker pozwalają usprawniać zadania w tle i możliwości offline, a współpracowniki ułatwiają efektywne udostępnianie zasobów między skryptami. Zobacz problem chromium:41494731.
Aby dowiedzieć się, jak używać WebGPU w workerze rozszerzenia, zapoznaj się z próbką rozszerzenia Chrome i rozszerzeniem WebLLM do Chrome.
Nowe atrybuty informacji o adapterach
Niestandardowe atrybuty informacji o adapterze d3dShaderModel
i vkDriverVersion
są teraz dostępne po wywołaniu requestAdapterInfo()
, jeśli użytkownik włączył flagę „Funkcje dla deweloperów WebGPU” w sekcji chrome://flags/#enable-webgpu-developer-features
. Jeśli ta funkcja jest obsługiwana:
d3dShaderModel
to maksymalny obsługiwany numer modelu shadera D3D. Na przykład wartość 62 oznacza, że bieżący sterownik obsługuje HLSL SM 6.2. Zapoznaj się z dokumentacją i problemem dawn:1254.vkDriverVersion
to określony przez dostawcę numer wersji sterownika Vulkan. Zapoznaj się z dokumentacją i problemem chromium:327457605.
Poprawki błędów
Tworzenie 2 potoku z pasującymi grupami bindów za pomocą layout: "auto"
, a następnie tworzenie grupy bindów z pierwszego potoku i używanie jej w drugim powoduje błąd GPUValidationError. Dopuszczenie do tego było błędem implementacji, który został naprawiony za pomocą odpowiednich testów. Zobacz issue dawn:2402.
Aktualizacje o świcie
W interfejsie Dawn API wywołanie funkcji obsługi nieprzechwyczonej awarii wgpuDeviceSetUncapturedErrorCallback
nie jest już wywoływane po utracie połączenia z urządzeniem GPU. Ta poprawka dopasowuje Dawn do specyfikacji interfejsu API JavaScript i do implementacji Blink. Zobacz issue dawn:2459.
Obejmuje to tylko niektóre najważniejsze informacje. Zapoznaj się z pełną listą commitów.
Co nowego w WebGPU
Lista wszystkich tematów omawianych w cyklu Co nowego w WebGPU.
Chrome 131
- Odcinki odległości w WGSL
- GPUCanvasContext getConfiguration(),
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Dodanie eksperymentalnej obsługi pośredniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisłe obliczenia matematyczne
- Usuwanie interfejsu GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 130
- Mieszanie dwóch źródeł
- Skrócenie czasu kompilacji shaderów na Metalu
- Wycofanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR w trybie mapowania tonalnego obszaru roboczego
- Rozszerzona obsługa podgrup
- Aktualizacje dotyczące Dawn
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie obsługi ustawiania głębi dla linii i punktów
- Ukrywanie ostrzeżenia DevTools o nieuwzględnionym błędzie, jeśli wywołano funkcję preventDefault
- WGSL interpoluje próbkowanie najpierw i potem
- Aktualizacje dotyczące Dawn
Chrome 127
- Doświadczalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodowania poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora dla backendu Vulkana
- Skrócony czas kompilacji shadera
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie tworzenia)
- Renderowanie na wycinek tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników Service Worker i pracowników współużytkowanych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów.
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w WGSL
- Parametry wskaźnika bez ograniczeń w WGSL
- Składnikowy cukier do dereferencji elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla stempli i aspektów głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększenie zasięgu dzięki trybowi zgodności (funkcja w trakcie tworzenia)
- Zwiększenie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania danych do cieniowania w systemie Windows
- Zapytania dotyczące sygnatury czasowej w kartach obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o kupach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowalne 32-bitowe tekstury zmiennoprzecinkowe
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Aktualizacje dotyczące Dawn
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Nieskonfigurowana grupa powiązań
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Przetwarzanie za pomocą przepływów z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Urządzenie zgubione zwrócone przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie wrażeń programistów
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Wstępna obsługa Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie na zasilaniu z sieci
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn