Integracja z WebCodecs
WebGPU udostępnia interfejs API do tworzenia nieprzezroczystych obiektów „tekstury zewnętrznej” od HTMLVideoElement
do importExternalTexture()
. Możesz użyć tych obiektów do efektywnego próbkowania klatek wideo, prawdopodobnie bez kopiowania bezpośrednio z danych źródłowych modelu kolorów YUV.
Jednak początkowa specyfikacja WebGPU nie pozwalała 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. Integracja z WebCodecs umożliwia korzystanie z VideoFrame
jako źródła wywołania GPUExternalTexture
i copyExternalImageToTexture()
. Zobacz poniższy przykład i entry chromestatus.
// 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);
// Create texture from VideoFrame.
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.
Utracone urządzenie zwrócone przez GPUAdapter requestDevice()
Jeśli metoda requestDevice()
w GPUAdapter
zakończy się niepowodzeniem, ponieważ została już użyta do utworzenia GPUDevice
, zostanie teraz spełniona z użyciem GPUDevice
natychmiast oznaczonego jako utracony, zamiast zwracania obietnicy, która odrzuca null
. Zobacz problem chromium:1234617.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
Utrzymywanie płynnego odtwarzania filmu, jeśli wywołano importExternalTexture()
Gdy wywołujesz funkcję importExternalTexture()
z argumentem HTMLVideoElement
, odtwarzanie powiązanego filmu nie jest już ograniczane, gdy film nie jest widoczny w widocznym obszarze. Zobacz problem chromium:1425252.
Zgodność ze specyfikacją
Argument message
w konstruktorze GPUPipelineError()
jest opcjonalny. Zobacz zmianę chromium:4613967.
Podczas wywoływania funkcji createShaderModule()
występuje błąd, jeśli źródło WGSL code
zawiera \0
. Zobacz issue dawn:1345.
Domyślny maksymalny poziom szczegółów (lodMaxClamp
) używany podczas próbkowania tekstury za pomocą createSampler()
to 32. Zobacz zmianę chromium:4608063.
Ulepszenie środowiska programisty
W konsoli JavaScript DevTools wyświetla się komunikat przypominający deweloperom, że używają WebGPU na nieobsługiwanej platformie. Zobacz change chromium:4589369.
Komunikaty o błędach weryfikacji bufora są natychmiast wyświetlane w konsoli JavaScript w Narzędziach deweloperskich, gdy getMappedRange()
nie działa, bez konieczności wysyłania poleceń do kolejki. Zobacz change chromium:4597950.
Aktualizacje świtu
Przełącznik debugowania disallow_unsafe_apis
został przemianowany na allow_unsafe_apis
i domyślnie jest wyłączony. Ten przełącznik tłumi błędy sprawdzania poprawności w przypadku punktów wejścia interfejsu API lub kombinacji parametrów, które nie są jeszcze uważane za bezpieczne. Może to być przydatne podczas debugowania.
Zobacz issue dawn:1685.
Wycofany atrybut source
został zastąpiony atrybutem code
.wgpu::ShaderModuleWGSLDescriptor
Zobacz change dawn:130321.
Wdrożono brakującą metodę wgpu::RenderBundle::SetLabel()
. Zobacz change dawn:134502.
Aplikacje mogą prosić o konkretny backend podczas uzyskiwania adaptera z opcją wgpu::RequestAdapterOptionsBackendType
. Poniżej znajdziesz przykład i problem dawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Dodano nową metodę SwapChain::GetCurrentTexture()
z dodatkowymi zastosowaniami dla tekstur swapchain, aby zwracana wartość wgpu::Texture
mogła być używana w kopiach. Poniżej znajdziesz przykład i problem dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
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 131
- Odcinki odległości w WGSL
- GPUCanvasContext getConfiguration()
- Punkty i linie nie mogą mieć ustawienia głębi
- Funkcje wbudowane w skanowanie z uwzględnieniem wszystkich grup
- Dodanie eksperymentalnej obsługi pośrednich metod wielokrokowego rysowania
- Opcja kompilacji modułu shadera: ścisła matematyka
- Usuwanie metody requestAdapterInfo() klasy GPUAdapter
- Aktualizacje dotyczące Dawn
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
- 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 interpoluje próbkowanie najpierw i 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 kodowania 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 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
- 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 kupach pamięci
- Aktualizacje dotyczące Dawn
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przekraczanie limitów
- Zmiany stanu głębi cieniowania
- Aktualizacje informacji o adapterze
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje wiosenne porządki
Chrome 119
- Filtrowane tekstury 32-bitowe
- 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
- Skuteczne wykorzystanie pamięci podręcznej dzięki automatycznie generowanemu układowi
- 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ą
- 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 na 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