Data publikacji: 26 marca 2025 r.
.Zezwalanie na tworzenie układu potoku z układem grupy wiązania null
Wcześniej tworzenie pustego układu grupy wiązania wymagało dodania grupy wiązania z zerowymi wiązaniami, co było niewygodne. Nie jest to już konieczne, ponieważ układy grup wiązania z wartością null są teraz dozwolone i ignorowane podczas tworzenia układu potoku. To powinno ułatwić proces tworzenia.
Możesz na przykład utworzyć potok, który używa tylko układów grupy bind o wartościach 0 i 2. Możesz przypisać układ grupy wiązania 1 do danych fragmentu, a układ grupy wiązania 2 do danych wierzchołka, a następnie wykonać renderowanie bez shadera fragmentu. Zobacz problem 377836524.
const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });
// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
bindGroupLayouts: [bgl0, null, bgl2],
});
Zezwalanie na wyświetlanie widocznych obszarów poza granicami docelowych obszarów renderowania
Zmniejszono wymagania dotyczące weryfikacji widocznego obszaru, aby umożliwić wyświetlanie widocznego obszaru poza granicami obszaru docelowego. Jest to szczególnie przydatne w przypadku rysowania elementów 2D, takich jak interfejs, które mogą wykraczać poza bieżący widoczny obszar. Zobacz problem 390162929.
const passEncoder = myCommandEncoder.beginRenderPass({
colorAttachments: [
{
view: myColorTexture.createView(),
loadOp: "clear",
storeOp: "store",
},
],
});
// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
/*x=*/ -8,
/*y=*/ -8,
/*width=*/ myColorTexture.width + 16,
/*height=*/ myColorTexture.height + 16,
/*minDepth=*/ 0,
/*maxDepth=*/ 1,
);
// Draw geometry and complete the render pass as usual.
Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
Flaga chrome://flags/#enable-unsafe-webgpu
umożliwia teraz samodzielne włączanie wszystkich funkcji wymaganych do eksperymentalnego trybu zgodności WebGPU na Androidzie. Dzięki temu możesz poprosić o GPUAdapter w trybie zgodności za pomocą opcji featureLevel: "compatibility"
, a nawet uzyskać dostęp do backendu OpenGL ES na urządzeniach, które nie obsługują Vulkana. Zobacz ten przykład i problem dawn:389876644.
// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

Usuń limit maxInterStageShaderComponents
Jak informowaliśmy wcześniej, limit maxInterStageShaderComponents został usunięty z powodu kilku czynników:
- Redundancja z poziomem
maxInterStageShaderVariables
: ten limit służy już do podobnego celu, czyli do kontrolowania ilości danych przekazywanych między etapami shadera. - Niewielkie rozbieżności: chociaż istnieją niewielkie różnice w sposobie obliczania tych 2 limitów, są one niewielkie i można skutecznie zarządzać nimi w ramach limitu
maxInterStageShaderVariables
. - Upraszczanie: usunięcie
maxInterStageShaderComponents
upraszcza interfejs shadera i ułatwia pracę deweloperom. Zamiast zarządzać 2 osobnymi limitami o niewielkich różnicach, mogą skupić się na bardziej odpowiednim i pełniejszymmaxInterStageShaderVariables
.
Zobacz intencję usunięcia i problem 364338810.
Aktualizacje świtu
Nie można już używać próbkowania filtrującego do próbkowania tekstury głębi. Przypominamy, że tekstury głębi można używać tylko z próbnikiem bez filtrowania lub porównawczym. Zobacz problem 379788112.
Struktury WGPURequiredLimits
i WGPUSupportedLimits
zostały spłaszczone do WGPULimits
. Zobacz problem 374263404.
Zmieniono nazwy tych struktur. Zobacz problem 42240793.
WGPUImageCopyBuffer
to terazWGPUTexelCopyBufferInfo
WGPUImageCopyTexture
to terazWGPUTexelCopyTextureInfo
WGPUTextureDataLayout
to terazWGPUTexelCopyBufferLayout
Do struktury WGPUAdapterInfo
dodano elementy subgroupMinSize
i subgroupMaxSize
. Zobacz webgpu-headers PR.
Śledzenie użycia interfejsu Dawn API w Metalu jest teraz możliwe po uruchomieniu programu ze zmienną środowiskową DAWN_TRACE_FILE_BASE
, która zapisuje plik .gputrace. Można go później załadować w Metal Debugger w XCode. Zapoznaj się z dokumentacją Debugging Dawn.
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 135
- Zezwalanie na tworzenie układu potoku z układem grupy wiązania null
- Zezwalanie na wyświetlanie widoku poza granice docelowych elementów do renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 134
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usuwanie obsługi typów tekstur do filtrowania typu float jako tekstur do mieszania
- Aktualizacje dotyczące Dawn
Chrome 133
- Dodatkowe formaty wierzchołka unorm8x4-bgra i 1-component
- Zezwalaj na wysyłanie żądań o nieznane limity z nieokreśloną wartością
- Zmiany reguł zgodności z WGSL
- Zwiększenie skuteczności WGSL dzięki odrzuceniu
- Używanie rozmiaru wyświetlania VideoFrame do tekstur zewnętrznych
- Praca z obrazami o orientacji innej niż domyślna za pomocą metody copyExternalImageToTexture
- Ułatwienie pracy programistom
- Włączanie trybu zgodności za pomocą atrybutu featureLevel
- Oczyszczanie eksperymentalnych funkcji podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 132
- Używanie widoku tekstury
- Mieszanie tekstur o typie liczby zmiennoprzecinkowej 32-bitowej
- Atrybut adapterInfo obiektu GPUDevice
- Konfigurowanie kontekstu kanwy z nieprawidłowym formatem powoduje błąd JavaScriptu
- Ograniczenia filtra próbkowania dotyczące tekstur
- Eksperymenty z podgrupami
- Ułatwienie pracy programistom
- Doświadczalna obsługa 16-bitowych normalizowanych formatów tekstur
- Aktualizacje dotyczące Dawn
Chrome 131
- Odcinanie odległości w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie uwzględniające podgrupy
- Dodanie eksperymentalnej obsługi pośredniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisła matematyka
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 130
- Mieszanie dwóch źródeł
- Ulepszenia czasu kompilacji shaderów na Metalu
- Wycofanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR z wykorzystaniem trybu mapowania tonalnego
- Więcej informacji o podgrupach
- 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 preventDefault
- WGSL najpierw interpoluje próbkowanie, a 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 kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora dla backendu Vulkana
- Ulepszenia dotyczące czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie tworzenia)
- Renderowanie na potrzeby wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników i współużytkowników
- 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ładnia cukrowa do odwoływania się do elementów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla stempli i 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 shaderów w systemie Windows
- Zapytania o sygnatury czasowe w przelotach obliczeniowych i renderowania
- Domyślne punkty wejścia do modułów shaderów
- Obsługa przestrzeni barw display-p3 jako przestrzeni barw GPUExternalTexture
- Informacje o stosie pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie granic
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Tekstury 32-bitowe z możliwością filtrowania
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Dodatkowa obsługa tekstury pamięci tylko do odczytu i z możliwością zapisu
- Aktualizacje dotyczące Dawn
Chrome 117
- Nieustawienie bufora wierzchołka
- Cofnij grupę wiązania
- Błędy w przypadku tworzenia asynchronicznego potoku, gdy urządzenie jest utracone
- Aktualizacje dotyczące tworzenia modułów shaderów SPIR-V
- Ułatwienie pracy programistom
- Buforowanie ścieżek z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Utrata urządzenia zwracana przez GPUAdapter
requestDevice()
- Utrzymanie płynnego odtwarzania filmu, jeśli wywołana zostanie funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Wstępna obsługa Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie przy zasilaniu z sieci
- Ułatwienie pracy programistom
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn