Data publikacji: 30 lipca 2025 r.
Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC
Funkcje "texture-compression-bc-sliced-3d"
i "texture-compression-astc-sliced-3d"
WebGPU dodają obsługę tekstur 3D w formatach Block Compression (BC) i Adaptive Scalable Texture Compression (ASTC). Dzięki temu możesz korzystać z wydajnych możliwości kompresji formatów BC i ASTC w przypadku danych tekstur wolumetrycznych, co pozwala znacznie zmniejszyć wymagania dotyczące pamięci i przepustowości bez znacznej utraty jakości wizualnej. Jest to szczególnie przydatne w takich dziedzinach jak wizualizacja naukowa, obrazowanie medyczne i zaawansowane techniki renderowania.
Poniższy fragment kodu sprawdza, czy karta graficzna obsługuje tekstury 3D w formatach skompresowanych BC i ASTC, i w razie potrzeby wysyła żądanie urządzenia z tymi funkcjami.
const adapter = await navigator.gpu.requestAdapter();
const requiredFeatures = [];
if (adapter?.features.has("texture-compression-bc-sliced-3d")) {
requiredFeatures.push(
"texture-compression-bc",
"texture-compression-bc-sliced-3d",
);
}
if (adapter?.features.has("texture-compression-astc-sliced-3d")) {
requiredFeatures.push(
"texture-compression-astc",
"texture-compression-astc-sliced-3d",
);
}
const device = await adapter?.requestDevice({ requiredFeatures });
// Later on...
if (device.features.has("texture-compression-astc-sliced-3d")) {
// Create a 3D texture using ASTC compression
} else if (device.features.has("texture-compression-bc-sliced-3d")) {
// Create a 3D texture using BC compression
} else {
// Fallback: Create an uncompressed 3D texture
}
Poznaj trójwymiarowe skany mózgu, korzystając z przykładowego kodu Volume Rendering – Texture 3D WebGPU, i zapoznaj się z wpisem w chromestatus.

Nowa funkcja „core-features-and-limits”
W nadchodzącym trybie zgodności WebGPU wprowadzamy nową "core-features-and-limits"
funkcję. Ta funkcja wskazuje, że adapter lub urządzenie obsługuje podstawowe funkcje i ograniczenia specyfikacji WebGPU. Obecnie dostępna jest tylko „podstawowa” wersja WebGPU, więc wszystkie implementacje WebGPU muszą zawierać "core-features-and-limits"
w obsługiwanych funkcjach.
W przyszłości, gdy tryb zgodności WebGPU zostanie udostępniony, adapter lub urządzenie mogą nie mieć tej funkcji, aby wskazywać, że jest to adapter lub urządzenie w trybie zgodności, a nie urządzenie podstawowe. Gdy ta funkcja jest włączona na urządzeniu, usuwa wszystkie ograniczenia trybu zgodności (funkcje i limity).
Szczegółowe wyjaśnienie i sposób użycia w trybie zgodności WebGPU znajdziesz w wyjaśnieniu i w sekcji poniżej. Zobacz problem 418025721.
Testowanie origin trybu zgodności WebGPU
WebGPU to zaawansowany interfejs API zaprojektowany z myślą o nowoczesnej grafice, zgodny z technologiami takimi jak Vulkan, Metal i Direct3D 12. Jednak wiele urządzeń nadal nie obsługuje tych nowszych interfejsów API. Na przykład w systemie Windows 31% użytkowników Chrome nie ma Direct3D w wersji 11.1 lub nowszej. Na Androidzie 15% użytkowników nie ma Vulkana 1.1, w tym 10% użytkowników nie ma Vulkana w ogóle.
Stanowi to wyzwanie dla deweloperów, którzy chcą zmaksymalizować zasięg swojej aplikacji. Często muszą oni opracowywać wiele implementacji (np. WebGPU i WebGL), akceptować bardziej ograniczone grono odbiorców w przypadku podstawowej wersji WebGPU lub trzymać się WebGL, tracąc zaawansowane funkcje WebGPU, takie jak obliczenia na GPU.

Tryb zgodności WebGPU to rozwiązanie, które udostępnia opcjonalną, nieco ograniczoną wersję interfejsu WebGPU API. Ten tryb jest przeznaczony do uruchamiania starszych interfejsów API grafiki, takich jak OpenGL ES 3.1 i Direct3D11, co znacznie zwiększa zasięg aplikacji na urządzeniach, które nie obsługują nowoczesnych, jawnych interfejsów API grafiki wymaganych przez podstawowy WebGPU.
Tryb zgodności jest podzbiorem WebGPU, więc aplikacje w nim utworzone są też prawidłowe aplikacje „podstawowe” WebGPU. Oznacza to, że będą one działać bezproblemowo nawet w przeglądarkach, które nie obsługują trybu zgodności.
W przypadku wielu podstawowych aplikacji włączenie trybu zgodności jest tak proste, jak przekazanie wartości featureLevel: "compatibility"
podczas wywoływania funkcji requestAdapter(). Bardziej złożone aplikacje mogą wymagać drobnych zmian, aby dostosować się do ograniczeń tego trybu. Dobrym przykładem jest przykładowy kod WebGPU do generowania mapy mip.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({
featureLevel: "compatibility",
});
const hasCore = adapter?.features.has("core-features-and-limits");
const device = await adapter?.requestDevice({
requiredFeatures: (hasCore ? ["core-features-and-limits"] : []),
});
if (device?.features.has("core-features-and-limits")) {
// Compatibility mode restrictions will apply
}
Włączanie funkcji
Tryb zgodności WebGPU nie jest domyślnie włączony w Chrome, ale można go wypróbować w Chrome 139, włączając tę funkcję. Możesz ją aktywować lokalnie, włączając flagę „Experimental Web Platform Features” (Eksperymentalne funkcje platformy internetowej) na stronie chrome://flags/#enable-experimental-web-platform-features
.
Aby włączyć tę funkcję dla wszystkich użytkowników aplikacji, prowadzimy testowanie w ramach programu Origin Trial, które zakończy się w Chrome 145 (21 kwietnia 2026 r.). Aby wziąć udział w okresie próbnym, zapoznaj się z postem Pierwsze kroki z okresami próbnymi.
Aktualizacje o świcie
Do funkcji WGPUQueueWorkDoneCallback
dodano argument message
, aby była bardziej spójna z innymi funkcjami wywołania zwrotnego, które również przyjmują stan. Zobacz webgpu-headers PR.
Gdy emdawnwebgpu jest połączony z -sSHARED_MEMORY
, jego plik webgpu.cpp jest również kompilowany z tym flagą. Zobacz Dawn CL 244075.
Obejmuje to tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą zatwierdzeń.
Nowości w WebGPU
Lista wszystkich tematów omówionych w serii Co nowego w WebGPU.
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 wersji próbnej 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 mapowanych 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 wią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
- Zezwalaj 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
- Usuwanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 134
- Ulepszanie zadań systemów uczących się za pomocą podgrup
- Usunięcie obsługi typów tekstur z możliwością filtrowania zmiennoprzecinkowego jako mieszalnych
- Aktualizacje dotyczące Dawn
Chrome 133
- Dodatkowe formaty wierzchołków unorm8x4-bgra i 1-component
- Zezwalaj na żądanie nieznanych limitów z niezdefiniowaną wartością
- Zmiany w regułach wyrównywania WGSL
- Wzrost wydajności WGSL dzięki odrzucaniu
- Używanie parametru VideoFrame displaySize w przypadku tekstur zewnętrznych
- Obsługa obrazów o orientacji innej niż domyślna za pomocą funkcji copyExternalImageToTexture
- Poprawianie komfortu pracy programistów
- Włączanie trybu zgodności za pomocą parametru featureLevel
- Usuwanie funkcji eksperymentalnych podgrup
- Wycofanie limitu maxInterStageShaderComponents
- Aktualizacje dotyczące Dawn
Chrome 132
- Korzystanie z 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
- Poprawianie komfortu pracy programistó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 obejmującego podgrupy
- Eksperymentalna obsługa rysowania pośredniego
- Opcja kompilacji modułu cieniowania strict math
- Usunięcie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 130
- Miksowanie z 2 źródeł
- Krótszy czas kompilacji cieniowania w Metal
- Wycofanie metody GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 129
- Obsługa HDR w trybie mapowania tonów 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 preventDefault
- WGSL interpolate sampling first and either
- Aktualizacje dotyczące Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększanie limitu maxTextureArrayLayers
- Optymalizacja przesyłania bufora na potrzeby backendu Vulkan
- Ulepszenia czasu kompilacji cieniowania
- 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 pracowników usługowych i współdzielonych
- 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
- Uproszczona składnia 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 cieniowania w systemie Windows
- Zapytania o sygnatury czasowe 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 tekstur pamięci do odczytu i zapisu oraz tylko do odczytu
- Aktualizacje dotyczące Dawn
Chrome 117
- Usuwanie bufora wierzchołków
- Usuwanie powiązania grupy
- Wyciszanie błędów podczas asynchronicznego tworzenia potoku, gdy urządzenie zostanie utracone
- Aktualizacje dotyczące tworzenia modułów cieniowania SPIR-V
- Poprawianie komfortu pracy programistów
- Buforowanie potoków z automatycznie generowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja WebCodecs
- Zwrócono utracone urządzenie przez GPUAdapter
requestDevice()
- Zapewnij płynne odtwarzanie wideo, jeśli wywoływana jest funkcja
importExternalTexture()
- Zgodność ze specyfikacją
- Poprawianie komfortu pracy programistó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
- Poprawianie komfortu pracy programistów
- Aktualizacje dotyczące Dawn
Chrome 114
- Optymalizacja JavaScript
- getCurrentTexture() w nieskonfigurowanym elemencie canvas zgłasza błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn