В
Кључни циљ ВебГПУ-а је да обезбеди сигуран, лак за коришћење, преносив и програмски интерфејс високих перформанси за веб платформу како би се искористиле технологије и могућности 3Д графике које пружају савремени АПИ-ји за системску графику, као што је Дирецт3Д 12 на Виндовс-у, Метал на мацОС-у и Вулкан на Линук-у. Концептуално, ВебГПУ се разликује од ВебГЛ-а на исти начин на који се Вулкан разликује од ОпенГЛ-а, а у исто време није заснован на специфичном графичком АПИ-ју, већ је универзални слој који генерално користи исте примитиве ниског нивоа који се налазе у Вулкану, Метал и Дирецт3Д.
ВебГПУ пружа ЈаваСцрипт апликацијама контролу нижег нивоа над организацијом, обрадом и преносом команди на ГПУ, управљањем повезаним ресурсима, меморијом, баферима, објектима текстуре и компајлираним графичким схадерима. Овај приступ вам омогућава да постигнете веће перформансе за графичке апликације смањењем режијских трошкова и повећањем ефикасности рада са ГПУ-ом.
ВебГПУ омогућава креирање пуноправних комплексних 3Д пројеката за Веб који не раде ништа лошије од самосталних програма који директно приступају Вулкану, Металу или Дирецт3Д-у, али нису везани за одређене платформе. ВебГПУ такође пружа додатне могућности приликом преноса матичних графичких програма у веб-омогућен облик коришћењем ВебАссембли технологије. Поред 3Д графике, ВебГПУ такође покрива могућности које се односе на преношење калкулација на ГПУ и подршку развоју схадера. Схадерс
ВебГПУ користи одвојено управљање ресурсима, припремни рад и пренос команди ГПУ-у (у ВебГЛ-у је један објекат био одговоран за све одједном). Наведена су три одвојена контекста:
ГПУДевице за креирање ресурса као што су текстуре и бафери; ГПУЦоммандЕнцодер за кодирање појединачних команди, укључујући фазе рендеровања и израчунавања; ГПУЦоммандБуффер који се ставља у ред за извршење на ГПУ-у. Резултат се може приказати у области која је повезана са једним или више елемената платна, или обрадити без излаза (на пример, када се извршавају рачунски задаци). Раздвајање фаза олакшава одвајање операција креирања и припреме ресурса у различите руковаоце који могу да раде на различитим нитима.
Друга разлика између ВебГПУ-а и ВебГЛ-а је другачији приступ руковању стањима. ВебГПУ нуди два објекта - ГПУРендерПипелине и ГПУЦомпутеПипелине, који вам омогућавају да комбинујете различита стања унапред дефинисана од стране програмера, што омогућава претраживачу да не троши ресурсе на додатни рад, као што је поновно компајлирање сејдера. Подржана стања укључују: шејдере, бафере врхова и распореде атрибута, распореде лепљивих група, мешање, дубину и обрасце и излазне формате после рендеровања.
Трећа карактеристика ВебГПУ-а се углавном зове модел везивања
подсећа на алатке за груписање ресурса присутне у Вулкану.
За груписање ресурса, ВебГПУ обезбеђује ГПУбиндГроуп објекат, који се може повезати са другим сличним објектима за употребу у схадерима током писања команди. Креирање таквих група омогућава драјверу да унапред изврши неопходне припремне радње и омогућава претраживачу да промени везивања ресурса између позива за цртање много брже. Распоред везивања ресурса може се унапред дефинисати коришћењем ГПУбиндГроупЛаиоут објекта.
У Фирефок-у, да бисте омогућили ВебГПУ у абоут:цонфиг, постоји поставка „дом.вебгпу.енаблед“. ЦанвасЦонтект рендеровање такође захтева да буде омогућено састављање
Извор: опеннет.ру