Firefox i Safari otrzymają obsługę WebGPU

Mozilla zdecydowała się włączyć obsługę API WebGPU i języka WGSL (WebGPU Shading Language) w przeglądarce Firefox. Dla platformy Windows Obsługa WebGPU będzie domyślnie włączona w przeglądarce Firefox 141, a jej udostępnienie zaplanowano na 22 lipca. Następnie obsługa WebGPU ma zostać włączona w kompilacjach na kolejne miesiące: Linux и macOSi po pewnym czasie w wersji na platformę AndroidAby ręcznie włączyć WebGPU, możesz skorzystać z parametrów „dom.webgpu.enabled” i „gfx.webrender.all” na stronie about:config.

W przeglądarce Chrome obsługa WebGPU była oferowana domyślnie w wersji 113, wydanej w maju 2023 roku. W Safari planowane jest domyślne włączenie obsługi WebGPU tej jesieni (eksperymentalne wsparcie jest dostępne od listopada 2021 roku). W przeglądarce Firefox eksperymentalna obsługa WebGPU jest obecna od 2020 roku, ale była domyślnie włączona tylko w nocnych kompilacjach Firefoksa. Implementacja WebGPU w Firefoksie opiera się na kodzie projektu WGPU, napisanym w języku Rust i obsługującym graficzne interfejsy API Direct3D 12, Vulkan, OpenGL i Metal.

WebGPU oferuje podobne API do Vulkan, Metal i Direct3D 12 do wykonywania operacji po stronie GPU. Oprócz grafiki 3D, WebGPU oferuje również możliwości związane z przenoszeniem obliczeń na GPU i uruchamianiem shaderów. Koncepcyjnie WebGPU różni się od starej specyfikacji WebGL w taki sam sposób, w jaki API graficzne Vulkan różni się od OpenGL. Jednocześnie WebGPU nie opiera się na konkretnym API graficznym, lecz stanowi warstwę uniwersalną, która wykorzystuje te same prymitywy niskiego poziomu, które są dostępne w Vulkan, Metal i Direct3D.

Technologia WebGPU umożliwia aplikacjom JavaScript kontrolowanie organizacji, przetwarzania i przesyłania poleceń do GPU oraz zarządzanie powiązanymi zasobami, pamięcią, buforami, obiektami tekstur i skompilowanymi shaderami graficznymi. Takie podejście pozwala na zwiększenie wydajności aplikacji graficznych poprzez redukcję obciążenia i zwiększenie efektywności współpracy z GPU.

Dzięki WebGPU możesz tworzyć niezależne od platformy, złożone projekty 3D, które działają równie dobrze, jak samodzielne programy bezpośrednio wykorzystujące Vulkan, Metal lub Direct3D. WebGPU oferuje również dodatkowe możliwości przenoszenia natywnych programów graficznych do formatu działającego w przeglądarkach, dzięki kompilacji do WebAssembly.

Główne cechy WebGPU i różnice w stosunku do WebGL:

  • Oddzielne zarządzanie zasobami, prace przygotowawcze i przekazywanie poleceń do GPU (w WebGL za wszystko odpowiadał jeden obiekt na raz). Dostępne są trzy oddzielne konteksty: GPUDevice do tworzenia zasobów, takich jak tekstury i bufory; GPUCommandEncoder do kodowania poszczególnych poleceń, łącznie z etapami renderowania i obliczeń; GPUCommandBuffer do przekazania do kolejki uruchamiania GPU. Wynik może zostać wyrenderowany w obszarze powiązanym z jednym lub większą liczbą elementów obszaru roboczego lub wyrenderowany bez danych wyjściowych (na przykład podczas wykonywania zadań obliczeniowych). Rozdzielenie etapów ułatwia rozdzielenie operacji tworzenia i udostępniania zasobów na różne procedury obsługi, które mogą działać w różnych wątkach.
  • Inne podejście do obsługi stanów. WebGPU udostępnia dwa obiekty - GPURenderPipeline i GPUComputePipeline, które pozwalają łączyć różne stany predefiniowane przez programistę, dzięki czemu przeglądarka nie marnuje zasobów na dodatkową pracę, np. rekompilację shaderów. Obsługiwane stany obejmują: moduły cieniujące, układy buforów wierzchołków i atrybutów, układy grup trwałych, mieszanie, głębię i wzorce, formaty wyjściowe po renderowaniu.
  • Wiążący model, podobny do narzędzi do grupowania zasobów firmy Vulkan. Aby pogrupować zasoby w grupy, WebGPU udostępnia obiekt GPUBindGroup, który w momencie pisania poleceń można powiązać z innymi podobnymi obiektami do wykorzystania w shaderach. Tworzenie takich grup pozwala sterownikowi na wcześniejsze wykonanie niezbędnych działań przygotowawczych, a przeglądarce pozwala na znacznie szybszą zmianę powiązań zasobów pomiędzy wywołaniami rysowania. Układ powiązań zasobów można wstępnie zdefiniować za pomocą obiektu GPUBindGroupLayout.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster