Nowości w WebGPU (Chrome 139)

François Beaufort
François Beaufort

Data publikacji: 30 lipca 2025 r.

Obsługa tekstur 3D w przypadku formatów skompresowanych BC i ASTC

Funkcje "texture-compression-bc-sliced-3d""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.

Skanowanie mózgu w 3D renderowane za pomocą WebGPU.
Obraz skanu mózgu z tekstury 3D w formacie skompresowanym ASTC.

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.

Wizualne przedstawienie trybu zgodności WebGPU.
Rozszerzony zasięg trybu zgodności WebGPU.

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

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113