Мозила је одлучила да омогући подршку за WebGPU API и WGSL (WebGPU Shading Language) у Фајерфоксу. За платформу Windows Подршка за WebGPU ће бити подразумевано омогућена у Firefox-у 141, заказаном за 22. јул. Затим је планирано да подршка за WebGPU буде омогућена у верзијама за наредне месеце: Linux и macOS, а после неког времена и у верзији за платформу AndroidДа бисте ручно омогућили WebGPU, можете користити параметре „dom.webgpu.enabled“ и „gfx.webrender.all“ на страници about:config.
У Chrome-у, подршка за WebGPU је била подразумевано понуђена у верзији 113, објављеној у мају 2023. У Safari-ју, планирано је да подршка за WebGPU буде подразумевано омогућена ове јесени (експериментална подршка је доступна од новембра 2021). У Firefox-у, експериментална подршка за WebGPU је присутна од 2020. године, али је била подразумевано омогућена само у ноћним верзијама Firefox-а. Firefox-ова имплементација WebGPU-а је заснована на WGPU пројектном коду, написаном у Rust-у и способном да ради преко Direct3D 12, Vulkan, OpenGL и Metal графичких API-ја.
WebGPU пружа сличан API као Vulkan, Metal и Direct3D 12 за обављање операција на страни GPU-а. Поред 3D графике, WebGPU такође покрива могућности везане за пребацивање прорачуна на страну GPU-а и извршавање шејдера. Концептуално, WebGPU се разликује од старе WebGL спецификације на сличан начин на који се Vulkan графички API разликује од OpenGL-а. Истовремено, WebGPU није заснован на специфичном графичком API-ју, већ је универзални слој који користи исте нисконивоске примитиве који су доступни у Vulkan-у, Metal-у и Direct3D-у.
WebGPU омогућава JavaScript апликацијама да контролишу организацију, обраду и пренос команди на GPU, и да управљају повезаним ресурсима, меморијом, баферима, текстурним објектима и компајлираним графичким шејдерима. Овај приступ омогућава веће перформансе графичких апликација смањењем оптерећења и повећањем ефикасности рада са GPU-ом.
Помоћу WebGPU-а можете креирати платформски независне, сложене 3D пројекте који функционишу једнако добро као и самостални програми који директно користе Vulkan, Metal или Direct3D. WebGPU такође пружа додатне могућности за преношење изворних графичких програма у облик који може да се покреће у прегледачима, захваљујући компајлацији у WebAssembly.
Кључне карактеристике WebGPU-а и разлике у односу на WebGL:
- Одвојено управљање ресурсима, припремни рад и пренос команди на ГПУ (у ВебГЛ-у је један објекат био одговоран за све одједном). Обезбеђена су три одвојена контекста: ГПУДевице за креирање ресурса као што су текстуре и бафери; ГПУЦоммандЕнцодер за кодирање појединачних команди, укључујући фазе рендеровања и израчунавања; ГПУЦоммандБуффер који се ставља у ред за извршење на ГПУ-у. Резултат се може приказати у области која је повезана са једним или више елемената платна, или обрадити без излаза (на пример, када се извршавају рачунски задаци). Раздвајање фаза олакшава одвајање операција креирања и припреме ресурса у различите руковаоце који могу да раде на различитим нитима.
- Другачији приступ обради стања. ВебГПУ нуди два објекта - ГПУРендерПипелине и ГПУЦомпутеПипелине, који вам омогућавају да комбинујете различита стања унапред дефинисана од стране програмера, што омогућава претраживачу да не троши ресурсе на додатни рад, као што је поновно компајлирање сејдера. Подржана стања укључују: шејдере, бафере врхова и распореде атрибута, распореде лепљивих група, мешање, дубину и обрасце и излазне формате после рендеровања.
- Модел везивања сличан Вулкановим карактеристикама груписања ресурса. За груписање ресурса, ВебГПУ обезбеђује ГПУбиндГроуп објекат, који се може повезати са другим сличним објектима за употребу у схадерима током писања команди. Креирање таквих група омогућава драјверу да унапред изврши неопходне припремне радње и омогућава претраживачу да промени везивања ресурса између позива за цртање много брже. Распоред везивања ресурса може се унапред дефинисати коришћењем ГПУбиндГроупЛаиоут објекта.
Извор: опеннет.ру
