Integracja z kodekami WebCodecs
WebGPU udostępnia interfejs API do utworzenia nieprzejrzystej „tekstury zewnętrznej” obiekty od HTMLVideoElement
do importExternalTexture()
. Za pomocą tych obiektów możesz skutecznie próbkować klatki filmu, nawet w formie zerowej bezpośrednio z danych źródłowego modelu kolorów YUV.
Jednak pierwotna specyfikacja WebGPU nie zezwalała na tworzenie obiektów GPUExternalTexture
z obiektów WebCodecs VideoFrame
. Ta możliwość jest ważna w przypadku zaawansowanych aplikacji do przetwarzania wideo, które korzystają już z kodeków internetowych i chcą zintegrować WebGPU z potokiem przetwarzania wideo. Integracja z WebCodecs umożliwia korzystanie z interfejsu VideoFrame
jako źródła wywołań GPUExternalTexture
i copyExternalImageToTexture()
. Zobacz przykład poniżej oraz wpis 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.
Wypróbuj eksperymentalną próbkę przesyłania filmów przy użyciu WebCodecs.
Utracone urządzenie zwrócone przez układ GPUAdapter requestDevice()
Jeśli metoda requestDevice()
w obiekcie GPUAdapter
nie zadziała, ponieważ została już użyta do utworzenia GPUDevice
, teraz wykonuje działanie za pomocą elementu GPUDevice
oznaczonego natychmiast jako stracona, zamiast zwracać obietnicę, która została odrzucona z użyciem funkcji 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;
Zadbaj o płynne odtwarzanie filmu, gdy wywoływana jest funkcja importExternalTexture()
Po wywołaniu funkcji importExternalTexture()
za pomocą HTMLVideoElement
odtwarzanie powiązanego filmu nie będzie już ograniczane, gdy film nie będzie 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ółowości (lodMaxClamp
) używany przy próbkowaniu tekstury za pomocą funkcji createSampler()
to 32. Zobacz zmianę chromium:4608063.
Poprawianie wrażeń deweloperów
W konsoli JavaScript Narzędzi deweloperskich wyświetlany jest komunikat przypominający deweloperom, że używają WebGPU na nieobsługiwanej platformie. Zobacz zmianę 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 zmianę chromium:4597950.
![Zrzut ekranu konsoli JavaScript w Narzędziach deweloperskich z komunikatem o błędzie weryfikacji bufora.](https://developer.chrome.com/static/blog/new-in-webgpu-116/image/screenshot-devtools-java-f6335abfb3e85.png?authuser=9&hl=pl)
Aktualizacje o świcie
Nazwa przełącznika debugowania disallow_unsafe_apis
została zmieniona na allow_unsafe_apis
i jest domyślnie wyłączona. 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 do debugowania.
Zobacz problem świt:1685.
wgpu::ShaderModuleWGSLDescriptor
Wycofany atrybut source
zostanie usunięty na rzecz code
. Zobacz zmianę daty:130321.
Brakująca metoda wgpu::RenderBundle::SetLabel()
została wdrożona. Zobacz zmianę daty:134502.
Po uzyskaniu adaptera z opcją wgpu::RequestAdapterOptionsBackendType
aplikacje mogą żądać konkretnego backendu. Zobacz przykład poniżej i wydanie świtu:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Dodaliśmy nową metodę SwapChain::GetCurrentTexture()
z dodatkowymi zastosowaniami do zamiany tekstur, aby można było używać zwróconego wgpu::Texture
w kopiach. Zobacz przykład poniżej i problem dawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
To tylko niektóre z najważniejszych informacji. Zapoznaj się z pełną listą zatwierdzeń.
Co nowego w WebGPU
Lista wszystkiego, co zostało omówione w serii Co nowego w WebGPU.
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
- Testuj najpierw próbkowanie WGSL, a potem jedno i drugie.
- Informacje o świcie
Chrome 127
- Eksperymentalna obsługa OpenGL ES na Androidzie
- Atrybut informacji o karcie GPU
- Ulepszenia współpracy WebAssembly
- Poprawione błędy kodera poleceń
- Informacje o świcie
Chrome 126
- Zwiększanie limitu maxTextureSlateWarstwy
- Optymalizacja przesyłania buforów w backendzie Vulkan
- Skrócony czas kompilacji shadera
- Przesłane bufory poleceń muszą być unikalne
- Informacje o świcie
Chrome 125
Chrome 124
- Tekstury pamięci masowej przeznaczone tylko do odczytu oraz 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.
- Informacje o świcie
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 w przypadku elementów związanych z szablonem i głębią
- Informacje o świcie
Chrome 122
- Zwiększanie zasięgu dzięki trybowi zgodności (funkcja w trakcie opracowywania)
- Zwiększanie limitu maxVertexAttributes
- Informacje o świcie
Chrome 121
- Obsługa WebGPU na Androidzie
- Używanie DXC zamiast FXC do kompilowania danych do cieniowania w systemie Windows
- Zapytania dotyczące sygnatury czasowej w kartach obliczeń i renderowania
- Domyślne punkty wejścia do modułów cieniowania
- Obsługuj display-p3 jako przestrzeń kolorów GPUExternalTexture
- Informacje o stertach pamięci
- Informacje o świcie
Chrome 120
- Obsługa 16-bitowych wartości zmiennoprzecinkowych w WGSL
- Przesuwaj granice
- Zmiany stanu szablonu z głębokością
- Aktualizacje informacji o karcie
- Kwantyzacja zapytań dotyczących sygnatury czasowej
- Funkcje sprzątania przed wiosną
Chrome 119
- Filtrowalne 32-bitowe tekstury zmiennoprzecinkowe
- format wierzchołkowy 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 do odczytu i zapisu oraz tylko do odczytu
- Informacje o świcie
Chrome 117
- Nieskonfigurowany bufor wierzchołkowy
- Nieskonfigurowana grupa powiązań
- Wyciszaj błędy tworzenia potoku asynchronicznego w przypadku utraty urządzenia
- Zmiany związane z tworzeniem modułu cieniowania SPIR-V
- Polepszanie obsługi dla programistów
- Potoki pamięci podręcznej z układem generowanym automatycznie
- Informacje o świcie
Chrome 116
- Integracja z WebCodecs
- Utracone urządzenie zwrócone przez GPUAdapter
requestDevice()
- Odtwarzaj płynnie po wywołaniu
importExternalTexture()
- Zgodność ze specyfikacją
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 115
- Obsługiwane rozszerzenia języka WGSL
- Eksperymentalna obsługa interfejsu Direct3D 11
- Domyślnie używaj dyskretnego GPU przy zasilaniu sieciowym
- Polepszanie obsługi dla programistów
- Informacje o świcie
Chrome 114
- Optymalizacja JavaScriptu
- Funkcja getCurrentTexture() w nieskonfigurowanym obszarze roboczym powoduje zgłoszenie nieprawidłowego stanu błędu
- Aktualizacje WGSL
- Informacje o świcie