Po kilku latach prac zespół Chrome informuje, że pierwsza wersja WebGPU jest teraz domyślnie dostępna w Chrome na ChromeOS, macOS i Windows. Aby dowiedzieć się więcej, zapoznaj się z artykułem Chrome udostępnia WebGPU.
Zaczęliśmy też dodawać do MDN kompleksową dokumentację WebGPU.
A to nie wszystko.
Używanie źródła WebCodecs VideoFrame
w importExternalTexture()
WebGPU udostępnia interfejs API do tworzenia nieprzezroczystych obiektów „zewnętrznej tekstury” w okresie od HTMLVideoElement
do importExternalTexture()
. Za pomocą tych obiektów możesz skutecznie próbkować klatki filmu, nawet w formie 0 kopii bezpośrednio ze źródłowych danych o YUV.
Początkowa specyfikacja WebGPU nie pozwala jednak na tworzenie obiektów GPUExternalTexture
z obiektów WebCodecs VideoFrame
. Ta funkcja jest ważna dla zaawansowanych aplikacji do przetwarzania wideo, które korzystają już z WebCodecs i chcą zintegrować WebGPU w procesie przetwarzania wideo. Obecnie toczy się dyskusja na temat problemu gpuweb/gpuweb#1380.
Włączanie funkcji
Domyślnie ta funkcja jest wyłączona w Chrome, ale możesz ją wypróbować w Chrome 113, jednoznacznie ją włączając. Możesz go aktywować lokalnie, włączając flagę „WebGPU Developer Features” w chrome://flags/#enable-webgpu-developer-features
.
Aby umożliwić korzystanie z tej funkcji wszystkim użytkownikom Twojej aplikacji, trwa okres próbny origin, który ma się zakończyć w Chrome 118 (8 grudnia 2023 r.). Aby wziąć udział w testach, zarejestruj się i uwzględnij element meta z tokenem wersji próbnej w źródle w kodzie HTML lub w nagłówku HTTP. Więcej informacji znajdziesz w artykule Pierwsze kroki z testami pochodzenia.
Przykładowy kod
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Zapoznaj się z przykładem eksperymentalnego przesyłania filmów za pomocą WebCodecs.
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()
- Elementy podstawowe punktowe i liniowe nie mogą mieć efektu 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 metody requestAdapterInfo() klasy GPUAdapter
- Informacje o świcie
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
Chrome 128
- Eksperymentowanie z podgrupami
- Wycofywanie odchylenia ustawień głębi w przypadku linii i punktów
- Ukrywanie ostrzeżenia DevTools o nieuwzględnionym błędzie, jeśli wywołano funkcję preventDefault
- Najpierw spróbuj interpolować próbkowanie WGSL, a następnie:
- Aktualizacje dotyczące Dawn
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o GPUAdapter
- Ulepszenia interoperacyjności WebAssembly
- Poprawione błędy kodowania poleceń
- Informacje o świcie
Chrome 126
- Zwiększenie limitu maxTextureArrayLayers
- Optymalizacja przesyłania buforów w backendzie Vulkan
- 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
- Informacje o świcie
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
- Nieograniczone parametry wskaźnika 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 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
- Informacje o świcie
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 kupach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przesuwaj granice
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowane tekstury 32-bitowe zmiennoprzecinkowe
- Format wierzchołka unorm10-10-10-2
- Format tekstury rgb10a2uint
- Informacje o świcie
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Informacje o świcie
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- 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
- Polepszanie wrażeń programistów
- Przetwarzanie za pomocą przepływów z automatycznie wygenerowanym układem
- Aktualizacje dotyczące Dawn
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie 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
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia językowe WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie przy zasilaniu z sieci
- Ułatwienie pracy programistom
- Informacje o świcie
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn