Integracja kodeków internetowych
WebGPU udostępnia interfejs API do tworzenia nieprzezroczystych obiektów „zewnętrznej tekstury” w okresie 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.
Jeśli źródło WGSL code
zawiera wartość \0
, wywoływany jest błąd.createShaderModule()
Zobacz problem: świt: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 buforów są natychmiast wyświetlane w konsoli JavaScript Narzędzi deweloperskich, gdy błąd getMappedRange()
się nie powiedzie. Deweloperzy nie muszą wysyłać 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 ukrywa błędy weryfikacji w punktach wejścia interfejsu API lub kombinacjach 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 zmianę daty: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();
To tylko niektóre z najważniejszych informacji. Zobacz pełną listę zatwierdzeń.
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średniego rysowania wielokrotnego
- Opcja kompilacji modułu shadera: ścisłe obliczenia matematyczne
- Usuwanie interfejsu GPUAdapter requestAdapterInfo()
- Aktualizacje dotyczące Dawn
Chrome 130
- Łączenie z podwójnym źródłem
- Skrócony czas kompilowania shadera w 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
- Ukryj nieprzechwycony błąd w Narzędziach deweloperskich w przypadku funkcji preventDefault
- Najpierw spróbuj interpolować próbkowanie WGSL, a następnie:
- 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 kodera poleceń
- Aktualizacje dotyczące Dawn
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- 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
- Aktualizacje dotyczące Dawn
Chrome 124
- Tekstury tylko do odczytu i do odczytu i zapisu
- Obsługa pracowników usług i pracowników wspólnych
- Nowe atrybuty informacji o adapterze
- Poprawki błędów
- Aktualizacje dotyczące Dawn
Chrome 123
- Obsługa wbudowanych funkcji DP4a w języku WGSL
- Nieograniczone parametry wskaźnika w WGSL
- Składnikowy cukier do dereferencji 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 danych do cieniowania 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 zmiennoprzecinkowe
- format wierzchołkowy unorm10-10-10-2
- Format tekstury rgb10a2uint
- Aktualizacje dotyczące Dawn
Chrome 118
- Obsługa HTMLImageElement i ImageData w
copyExternalImageToTexture()
- Eksperymentalna obsługa tekstury pamięci masowej tylko do odczytu i do odczytu i zapisu
- Aktualizacje dotyczące Dawn
Chrome 117
- Bufor wierzchołka nieustawiony
- 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
- Przetwarzanie za pomocą przepływów z automatycznie wygenerowanym układem
- Informacje o świcie
Chrome 116
- Integracja z WebCodecs
- Urządzenie zgubione 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
- Aktualizacje dotyczące Dawn
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Uzyskaj oddzielny procesor graficzny domyślnie na zasilaniu z sieci
- Polepszanie wrażeń programistów
- Informacje o świcie
Chrome 114
- Optymalizacja kodu JavaScript
- getCurrentTexture() na nieskonfigurowanym płótnie powoduje błąd InvalidStateError
- Aktualizacje WGSL
- Aktualizacje dotyczące Dawn