W3C го претстави нацрт стандардот WebGPU

W3C ги објави првите нацрти на спецификациите на WebGPU и WebGPU Shading Language (WGSL), кои дефинираат API за извршување операции на графичкиот процесор, како што се рендерирање и пресметување, како и јазик за шејдер за пишување програми што работат на графичкиот процесор. Концептуално слични на Vulkan, Metal и Direct3D 12 API Спецификациите беа подготвени од работна група која вклучуваше инженери од Mozilla, Google, Apple и Microsoft.

Концептуално, WebGPU се разликува од WebGL на ист начин како што графичкиот API на Vulkan се разликува од OpenGL, но не се заснова на специфичен графички API, туку е универзален слој што ги користи истите примитиви на ниско ниво што се наоѓаат во Vulkan, Metal и Direct3D. WebGPU обезбедува JavaScript апликации со контрола на ниско ниво врз организацијата, обработката и преносот на команди до графичкиот процесор, управувањето со поврзаните ресурси, меморијата, баферите, објектите на текстурата и компајлираните графички шејдери. Овој пристап ви овозможува да постигнете повисоки перформанси за графички апликации со намалување на општите трошоци и зголемување на ефикасноста на работата со графичкиот процесор.

WebGPU овозможува создавање сложени 3D проекти за Интернет кои не работат полошо од самостојните програми кои директно пристапуваат до Vulkan, Metal или Direct3D, но не се врзани за одредени платформи. WebGPU, исто така, обезбедува дополнителни можности за пренесување мајчин графички програми во форма овозможена од веб преку компилација во WebAssembly. Покрај 3D графиката, WebGPU вклучува и можности поврзани со превчитување на пресметките на графичкиот процесор и извршување на шејдери.

Главни карактеристики на WebGPU:

  • Одделно управување со ресурсите, подготвителна работа и пренос на команди до графичкиот процесор (во WebGL еден објект беше одговорен за сè одеднаш). Обезбедени се три посебни контексти: GPUУред за создавање ресурси како што се текстури и бафери; GPUCommandEncoder за кодирање на поединечни команди, вклучително и фази на рендерирање и пресметување; GPUCommandBuffer да се чека на ред за извршување на графичкиот процесор. Резултатот може да се прикаже во област поврзана со еден или повеќе елементи на платно или да се обработи без излез (на пример, кога се извршуваат пресметковни задачи). Одвојувањето на фазите го олеснува одделувањето на операциите за создавање и подготовка на ресурси во различни управувачи кои можат да работат на различни нишки.
  • Поинаков пристап кон состојбите за обработка. WebGPU нуди два објекта - GPURenderPipeline и GPUComputePipeline, кои ви дозволуваат да комбинирате различни состојби однапред дефинирани од развивачот, што му овозможува на прелистувачот да не троши ресурси за дополнителна работа, како што е повторно компајлирање шејдери. Поддржани состојби вклучуваат: шејдери, распоред на теме бафер и атрибути, распоред на лепливи групи, мешање, длабочина и обрасци и излезни формати по рендерирање.
  • Обврзувачки модел многу сличен на карактеристиките за групирање ресурси на Vulkan. За да се групираат ресурсите заедно, WebGPU обезбедува објект GPUBindGroup, кој може да се поврзе со други слични објекти за употреба во шејдери додека пишувате команди. Создавањето такви групи му овозможува на возачот однапред да ги изврши потребните подготвителни дејства и му овозможува на прелистувачот многу побрзо да ги менува врските со ресурсите помеѓу повиците за извлекување. Распоредот на врските за ресурси може да се предефинира со користење на објектот GPUBindGroupLayout.

Извор: opennet.ru

Додадете коментар