В
La ŝlosila celo de WebGPU estas disponigi sekuran, uzant-amika, porteblan kaj alt-efikecan programan interfacon por la Reta platformo por utiligi la 3D-grafikajn teknologiojn kaj kapablojn provizitajn de modernaj sistemaj grafikaj APIoj, kiel ekzemple Direct3D 12 sur Vindozo, Metalo. en macOS, kaj Vulkan en Linukso. Koncipe, WebGPU diferencas de WebGL en la sama maniero kiel Vulkan diferencas de OpenGL, kaj samtempe ĝi ne estas bazita sur specifa grafika API, sed estas universala tavolo kiu ĝenerale uzas la samajn malaltnivelajn primitivaĵojn trovitajn en Vulkan, Metalo kaj Direct3D.
WebGPU provizas JavaScript-aplikojn per malsupra-nivela kontrolo de la organizo, pretigo kaj dissendo de komandoj al la GPU, administrante rilatajn resursojn, memoron, bufrojn, teksturajn objektojn kaj kompilitajn grafikombrilojn. Ĉi tiu aliro permesas vin atingi pli altan rendimenton por grafikaj aplikoj reduktante superkostojn kaj pliigante la efikecon labori kun la GPU.
WebGPU ebligas krei plenrajtajn kompleksajn 3D-projektojn por la Reto, kiuj funkcias ne pli malbone ol memstaraj programoj, kiuj rekte aliras Vulkan, Metalon aŭ Direct3D, sed ne estas ligitaj al specifaj platformoj. WebGPU ankaŭ disponigas kromajn kapablojn dum portado de indiĝenaj grafikaj programoj en ret-ebligitan formon per la uzo de WebAssembly-teknologio. Krom 3D-grafikaĵoj, WebGPU ankaŭ kovras kapablojn rilatajn al malŝarĝado de kalkuloj al la GPU kaj subtenado de ombradisvolviĝo. Ombriloj
WebGPU uzas apartan administradon de rimedoj, preparan laboron kaj transdonon de komandoj al la GPU (en WebGL, unu objekto respondecis pri ĉio samtempe). Tri apartaj kuntekstoj estas disponigitaj:
GPUAparato por krei rimedojn kiel teksturoj kaj bufroj; GPUCommandEncoder por kodi individuajn komandojn, inkluzive de bildigo kaj komputado-etapoj; GPUCommandBuffer vidos por ekzekuto sur la GPU. La rezulto povas esti prezentita en areo asociita kun unu aŭ pluraj kanvaselementoj, aŭ prilaborita sen eligo (ekzemple, kiam oni rulas komputajn taskojn). Apartigi la stadiojn plifaciligas disigi operaciojn pri kreado kaj preparado de rimedoj en malsamaj prizorgantoj, kiuj povas funkcii per malsamaj fadenoj.
La dua diferenco inter WebGPU kaj WebGL estas malsama aliro al pritraktado de ŝtatoj. WebGPU ofertas du objektojn - GPURenderPipeline kaj GPUComputePipeline, kiuj ebligas al vi kombini diversajn statojn antaŭdifinitajn de la programisto, kio permesas al la retumilo ne malŝpari rimedojn por plia laboro, kiel rekompili ombrantojn. Subtenataj ŝtatoj inkluzivas: nuanciloj, vertica bufro kaj atributaj aranĝoj, gluiĝemaj grupaj aranĝoj, miksado, profundo kaj ŝablonoj, kaj post-bildaj eligoformatoj.
La tria trajto de WebGPU estas nomita la biliga modelo, plejparte
rememoriga pri la iloj pri grupigo de rimedoj ĉeestantaj en Vulkan.
Por grupigi rimedojn, WebGPU disponigas GPUBindGroup-objekton, kiu povas esti asociita kun aliaj similaj objektoj por uzo en ombriloj dum skribado de komandoj. Krei tiajn grupojn permesas al la ŝoforo plenumi la necesajn preparajn agojn anticipe, kaj permesas al la retumilo ŝanĝi rimedajn ligojn inter remizovokoj multe pli rapide. La aranĝo de rimedligoj povas esti antaŭdifinita uzante la objekton GPUBindGroupLayout.
En Fajrovulpo, por ebligi WebGPU en about:config, ekzistas agordo "dom.webgpu.enabled". CanvasContext-bildigo ankaŭ postulas komponadon esti ebligita
fonto: opennet.ru