Opublikowano: 15 września 2026 r.
Rozszerzenie WGSL buffer_view
Rozszerzenie języka WGSL buffer_view umożliwia interpretowanie danych zmiennej jednolitej, pamięci masowej lub grupy roboczej jako wielu różnych typów. Ma to szerokie zastosowanie, od konwencjonalnych zastosowań związanych z grą słów opartą na typach po dzielenie zmiennej na wiele zmiennych logicznych.
Ze względów bezpieczeństwa i ułatwienia implementacji do reinterpretowanych typów można uzyskać dostęp tylko za pomocą tych wbudowanych funkcji:
bufferView<T>()interpretuje pamięć przy określonym przesunięciu bajtowym jako wskaźnik typu T.bufferArrayView<T>()tworzy wskaźnik ograniczonej tablicy z określoną liczbą elementów.bufferLength()zwraca rozmiar bufora w bajtach.
To rozszerzenie języka można wykryć w JavaScript za pomocą funkcji navigator.gpu.wgslLanguageFeatures. Zalecamy użycie dyrektywy requires, aby zasygnalizować potencjalną nieprzenośność za pomocą requires buffer_view u góry kodu shadera WGSL. Zapoznaj się z tym przykładem w WGSL i planem wdrożenia.
requires buffer_view;
// +-------------------+-----------------------------+----------------------------+
// | Byte 0 .. 3 | Byte 4 .. (4 + N - 1) | Byte (4 + N) .. End |
// +-------------------+-----------------------------+----------------------------+
// | indices_size (u32)| indices (array<u32, count>) | vertices (array<f32>) |
// +-------------------+-----------------------------+----------------------------+
@group(0) @binding(0) var<storage> indices_and_vertices : buffer;
fn unpack_and_process_geometry() {
let indices_size = *bufferView<u32>(&indices_and_vertices, 0);
let indices = bufferArrayView<array<u32>>(&indices_and_vertices, 4, indices_size);
let vertices = bufferView<array<f32>>(&indices_and_vertices, indices_size + 4);
...
}
Więcej informacji znajdziesz w propozycji widoku bufora, a także możesz wypróbować przykładowy szkielet WebGPU.
Rozszerzenie WGSL swizzle_assignment
W odpowiedzi na jedną z najbardziej pożądanych funkcji społeczności rozszerzenie WGSL swizzle_assignment umożliwia bezpośrednie zapisywanie w wektorowych mieszankach kolorów, co pozwala aktualizować wiele komponentów w jednej instrukcji. Znacznie zmniejsza ilość kodu standardowego i poprawia czytelność cieniowania, a także dostosowuje WGSL do innych języków cieniowania.
To rozszerzenie języka można wykryć w JavaScript za pomocą funkcji navigator.gpu.wgslLanguageFeatures. Zalecamy użycie dyrektywy requires, aby zasygnalizować potencjalną nieprzenośność za pomocą requires swizzle_assignment u góry kodu shadera WGSL. Zapoznaj się z tym przykładem w WGSL i planem wdrożenia.
if (!navigator.gpu.wgslLanguageFeatures.has("swizzle_assignment")) {
throw new Error(`WGSL swizzle assignment is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires swizzle_assignment;
@vertex
fn main(@builtin(vertex_index) vertex_index: u32) -> @builtin(position) vec4f {
var position = vec4f(0.0, 0.0, 0.0, 1.0);
position.xy = vec2f(10.0, 20.0); // Swizzle assignment
return position;
}`,
});
Aktualizacje rozszerzeń WGSL
Rozszerzenie języka texture-formats-tier1, mimo że jest obsługiwane w kodzie WGSL, nie było wcześniej prawidłowo mapowane na navigator.gpu.wgslLanguageFeatures (jako texture_formats_tier1) w JavaScript. Ten problem z mapowaniem został już rozwiązany. Zobacz Chromium CL 8159562.
Rozszerzenie języka subgroups jest teraz automatycznie włączane, gdy w WGSL włączone jest rozszerzenie subgroup_size_control. Zobacz problem dawn:545285663.
Aktualizacje Dawn
Nowa wgpu::FeatureName::BufferMapWriteExtendedUsagesfunkcja eksperymentalna
umożliwia tworzenie bufora z wgpu::BufferUsage::MapWrite w połączeniu z dowolnym innym wgpu::BufferUsage, z wyjątkiem wgpu::BufferUsage::MapRead, aby zapisywać dane
bezpośrednio w buforze z możliwością mapowania, który jest również użyteczny dla procesora graficznego. Eliminuje to bufor tymczasowy i dodatkową kopię w przypadku backendów Vulkan i D3D12. Więcej informacji znajdziesz w artykule Buffer Map Write Extended Usages i w zgłoszeniu dawn:386255678.
Możesz teraz używać wiązań webgpu_cpp.h na dowolnej implementacji webgpu.h zamiast być powiązanym z wersją Dawn, korzystając z nowego webgpu_upstream_cpp_headers. Zobacz problem 596 w repozytorium webgpu-headers.
Dawn wymaga teraz systemu macOS 13.0 lub nowszego. Zobacz Dawn CL 334415.
To tylko niektóre z najważniejszych informacji. Więcej informacji znajdziesz na wyczerpującej liście zatwierdzeń.
Co nowego w WebGPU
Lista wszystkich tematów omówionych w serii Nowości w WebGPU.
Chrome 155–156
- Rozszerzenie WGSL fragment_depth
- Niezgodna kompresja tekstur
- przestrzenie kolorów srgb-linear i display-p3-linear
- Dodatkowy format wierzchołka snorm10-10-10-2
- Obsługa formatu f16 w systemie Linux na urządzeniach NVIDIA
- Aktualizacje dotyczące Dawn
Chrome 153–154
- Rozszerzenie WGSL buffer_view
- Rozszerzenie WGSL swizzle_assignment
- Aktualizacje rozszerzeń WGSL
- Aktualizacje dotyczące Dawn
Chrome 151–152
- Kontrola rozmiaru podgrupy
- OperationError w przypadku błędów weryfikacji setImmediates
- Aktualizacje dotyczące Dawn
Chrome 149-150
Chrome 147–148
Chrome 146
- Obsługa trybu zgodności WebGPU w OpenGL ES 3.1
- Załączniki tymczasowe
- Rozszerzenie WGSL texture_and_sampler_let
- Aktualizacje dotyczące Dawn
Chrome 145
- Rozszerzenie WGSL subgroup_uniformity
- Eksperymentalne synchroniczne mapowanie bufora w procesach roboczych
- Aktualizacje dotyczące Dawn
Chrome 144
- Rozszerzenie WGSL subgroup_id
- Rozszerzenie WGSL uniform_buffer_standard_layout
- WebGPU w systemie Linux
- Szybsze funkcje writeBuffer i writeTexture
- Aktualizacje dotyczące Dawn
Chrome 143
- Przekształcenie komponentu tekstury
- Usuwanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Aktualizacje dotyczące Dawn
Chrome 142
- Rozszerzone możliwości obsługi formatów tekstur
- Indeks typu pierwotnego w WGSL
- Aktualizacje dotyczące Dawn
Chrome 141
- Zakończono kalibrację odcieni IR
- Analiza zakresu liczb całkowitych w kompilatorze WGSL
- Aktualizacja SPIR-V 1.4 dla backendu Vulkan
- Aktualizacje dotyczące Dawn
Chrome 140
- Żądania dotyczące urządzeń wykorzystują adapter
- Skrót do używania tekstury w miejscu, w którym używany jest widok tekstury
- Funkcja WGSL textureSampleLevel obsługuje tekstury 1D
- Wycofanie użycia tekstury pamięci tylko do odczytu bgra8unorm
- Usunięcie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje dotyczące Dawn
Chrome 139
- Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC
- Nowa funkcja „core-features-and-limits”
- Testowanie origin trybu zgodności WebGPU
- Aktualizacje dotyczące Dawn
Chrome 138
- Skrót do używania bufora jako zasobu wiążącego
- Zmiany wymagań dotyczących rozmiaru buforów zmapowanych podczas tworzenia
- Raport o architekturze najnowszych układów GPU
- Wycofanie atrybutu GPUAdapter isFallbackAdapter
- Aktualizacje dotyczące Dawn
Chrome 137
- Używanie widoku tekstury do powiązania externalTexture
- Kopiowanie buforów bez określania przesunięć i rozmiaru
- WGSL workgroupUniformLoad using pointer to atomic
- Atrybut powerPreference interfejsu GPUAdapterInfo
- Usunięcie atrybutu compatibilityMode z interfejsu GPURequestAdapterOptions
- Aktualizacje dotyczące Dawn
Chrome 136
- Atrybut GPUAdapterInfo isFallbackAdapter
- Krótszy czas kompilacji shaderów w D3D12
- Zapisywanie i kopiowanie obrazów z płótna
- Ograniczenia trybu zgodności pomiaru wzrostu
- Aktualizacje dotyczące Dawn
Chrome 135
- Zezwalanie na tworzenie układu potoku z układem grupy wiązań o wartości null
- Zezwalaj na wykraczanie obszarów widoku poza granice docelowych obszarów renderowania
- Łatwiejszy dostęp do eksperymentalnego trybu zgodności na Androidzie
- Usunięcie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 134
- Ulepszanie zadań uczenia maszynowego za pomocą podgrup
- Usuwanie obsługi typów tekstur z możliwością filtrowania zmiennoprzecinkowego jako mieszanych
- Aktualizacje dotyczące Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-component
- Zezwalaj na wysyłanie próśb o nieznane limity z niezdefiniowaną wartością
- Zmiany w regułach wyrównania WGSL
- Wzrost wydajności WGSL dzięki odrzucaniu
- Używanie parametru displaySize w przypadku tekstur zewnętrznych
- Obsługa obrazów o orientacji innej niż domyślna za pomocą funkcji copyExternalImageToTexture
- Zwiększanie komfortu pracy deweloperów
- Włączanie trybu zgodności za pomocą parametru featureLevel
- Usuwanie funkcji eksperymentalnych podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 132
- Wykorzystanie widoku tekstury
- Mieszanie tekstur zmiennoprzecinkowych 32-bitowych
- Atrybut adapterInfo interfejsu GPUDevice
- Konfigurowanie kontekstu elementu canvas w nieprawidłowym formacie powoduje błąd JavaScriptu
- Ograniczenia dotyczące próbkowania tekstur
- Eksperymentowanie z rozszerzonymi podgrupami
- Zwiększanie komfortu pracy deweloperów
- Eksperymentalna obsługa 16-bitowych znormalizowanych formatów tekstur
- Aktualizacje dotyczące Dawn
Chrome 131
- Obcinanie odległości w WGSL
- GPUCanvasContext getConfiguration()
- Elementy pierwotne punktów i linii nie mogą mieć odchylenia głębi
- Wbudowane funkcje skanowania uwzględniającego podgrupy
- Eksperymentalna obsługa pośredniego pobierania wielu środków
- Opcja kompilacji modułu cieniowania ścisłe obliczenia matematyczne
- Usunięcie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 130
- Miksowanie z 2 źródeł
- Krótszy czas kompilacji shaderów w Metal
- Wycofanie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR w trybie mapowania odcieni na płótnie
- Rozszerzona obsługa podgrup
- Aktualizacje dotyczące Dawn
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofanie ustawiania odchylenia głębi dla linii i punktów
- Ukrywanie ostrzeżenia Narzędzi deweloperskich o nieprzechwyconym błędzie, jeśli użyto metody preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje dotyczące Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut info interfejsu GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Ulepszone błędy kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększanie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora w przypadku backendu Vulkan
- Ulepszenia czasu kompilacji shaderów
- Przesłane bufory poleceń muszą być unikalne
- Aktualizacje dotyczące Dawn
Chrome 125
- Podgrupy (funkcja w trakcie opracowywania)
- Renderowanie do wycinka tekstury 3D
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury pamięci tylko do odczytu i do odczytu i zapisu
- Obsługa skryptów service worker i shared worker
- 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
- Lukier składniowy dla dereferencji typów złożonych w WGSL
- Oddzielny stan tylko do odczytu dla aspektów szablonu i głębi
- Aktualizacje dotyczące Dawn
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Aktualizacje dotyczące Dawn
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilacji shaderów w systemie Windows
- Zapytania o sygnaturę czasową w przypadku obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługa przestrzeni kolorów display-p3 jako przestrzeni kolorów GPUExternalTexture
- Informacje o obszarach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczaj granice
- Zmiany stanu bufora głębi i szablonu
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatur czasowych
- Funkcje wiosennych porządków
Chrome 119
- Filtrowane tekstury zmiennoprzecinkowe 32-bitowe
- unorm10-10-10-2 vertex format
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa elementów HTMLImageElement i ImageData w
copyExternalImageToTexture() - Eksperymentalna obsługa tekstury pamięci masowej do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje dotyczące Dawn
Chrome 117
- Usuwanie bufora wierzchołków
- Usuwanie grupy powiązań
- Wyciszanie błędów podczas tworzenia asynchronicznego potoku, gdy urządzenie zostanie utracone
- Aktualizacje tworzenia modułu cieniowania SPIR-V
- Zwiększanie komfortu pracy deweloperów
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice() - Zapewnij płynne odtwarzanie filmu, jeśli wywołana zostanie funkcja
importExternalTexture() - Zgodność ze specyfikacją
- Zwiększanie komfortu pracy deweloperów
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa Direct3D 11
- Domyślne korzystanie z osobnego procesora graficznego po podłączeniu do zasilania sieciowego
- Zwiększanie komfortu pracy deweloperów
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja JavaScriptu
- getCurrentTexture() w przypadku nieskonfigurowanego elementu canvas zgłasza błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn