Chrome ще включва поддръжка за WebGPU

Компания Google обяви, че по подразбиране включва поддръжка на графичния API WebGPU и езика за шейдъри WGSL (WebGPU Shading Language) в версия Chrome 113, чийто релиз е насрочен за 2 май. WebGPU предлага подобен на Vulkan, Metal и Direct3D 12 интерфейс за програмиране, който позволява извършването на операции на GPU, като рендериране и изчисления, и също така позволява използването на езика за шейдъри за разработка на програми, работещи на GPU. Реализацията на WebGPU първоначално ще бъде включена само в билдовете за ChromeOS, macOS и Windows. Поддръжката за Linux и Android ще бъде активирана по-късно.

Освен в Chrome, експерименталната поддръжка на WebGPU се тества от април 2020 г. в Firefox и от ноември 2021 г. в Safari. За да активирате WebGPU в Firefox, трябва да настроите флаговете dom.webgpu.enabled и gfx.webgpu.force-enabled в about:config. Все още не са обявени плановете за включване на WebGPU по подразбиране в Firefox и Safari. Разработваните реализации на WebGPU за Firefox и Chrome са налични под формата на отделни библиотеки — Dawn (C++) и wgpu (Rust), които можете да използвате за интегриране на поддръжка за WebGPU в собствените си приложения. Работи се и по добавянето на поддръжка за WebGPU в популярни JavaScript библиотеки, които първоначално използват WebGL. Например, вече е обявена пълна поддръжка на WebGPU в Babylon.js, а частична в Three.js, PlayCanvas и TensorFlow.js.

Концептуално WebGPU се различава от WebGL приблизително по същия начин, по който графичният API Vulkan се различава от OpenGL, но при това WebGPU не се основава на конкретен графичен API, а представлява универсален слой, който използва същите нискоуровневи примитиви, каквито се срещат в Vulkan, Metal и Direct3D. WebGPU предоставя на приложенията на JavaScript средства за нискоуровневен контрол над организацията, обработката и предаването на команди към GPU, управление на свързаните ресурси, паметта, буферите, обектите на текстурите и компилираните графични шейдъри. Такъв подход позволява постигането на по-висока производителност на графичните приложения чрез намаляване на разходите и увеличаване на ефективността при работа с GPU.

WebGPU позволява създаването на сложни 3D проекти за уеб, работещи с качество, сравнимо с отделни приложения, които директно използват Vulkan, Metal или Direct3D, но не са привързани към конкретни платформи. WebGPU също така предоставя допълнителни възможности при портироването на нативни графични приложения в формат, способен да работи на базата на уеб технологии, благодарение на компилацията в WebAssembly. Освен 3D графиката, WebGPU обхваща и възможности, свързани с извеждането на изчисления на GPU и изпълнението на шейдъри.

Ключови характеристики на WebGPU:

  • Разделното управление на ресурсите, подготовителните работи и подаването на команди в GPU (в WebGL един обект отговаряше за всичко). Предоставят се три отделни контекста: GPUDevice за създаване на ресурси, като текстури и буфери; GPUCommandEncoder за кодиране на отделни команди, включително етапи на рендериране и изчисления; GPUCommandBuffer за предаване в опашка за изпълнение в GPU. Резултатът може да бъде визуализиран в област, свързана с един или повече елементи canvas, или обработен без извеждане (например, при извършване на изчислителни задачи). Разделянето на етапите опростява различаването на създаването на ресурси и подготовителните операции в различни обработващи единици, които може да се изпълняват в различни потоци.
  • Друг подход при обработката на състояния. В WebGPU са предвидени два обекта — GPURenderPipeline и GPUComputePipeline, които позволяват комбиниране на различни състояния, предварително определени от разработчика, което дава възможност на браузъра да не харчи ресурси за извършване на допълнителна работа, като препроцесиране на шейдери. Поддържаните състояния включват: шейдери, подредби на буферите за върхове и атрибути, подредби на прикрепените групи, смесване, дълбочина и шаблони, формати за извеждане след рендериране.
  • Моделът на свързване наподобява по много начини наличните в Vulkan средства за групиране на ресурси. За обединяване на ресурсите в групи в WebGPU е предвиден обект GPUBindGroup, който по време на запис на команди може да се свърже с други подобни обекти за използване в шейдъри. Създаването на подобни групи дава възможност на драйвера предварително да извърши необходимите подготовителни действия, а на браузъра да ускорени промените на привързванията на ресурсите между извикванията на рендериране. Подредбата на привързванията на ресурсите може да бъде определена предварително с помощта на обекта GPUBindGroupLayout.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster