W3C prezentas skizon de WebGPU-normo

La W3C publikigis la unuajn skizojn de la specifoj WebGPU kaj WebGPU Shading Language (WGSL), kiuj difinas API-ojn por plenumi GPU-operaciojn kiel bildigo kaj komputado, same kiel ombra lingvo por skribi programojn kiuj funkcias sur la GPU. koncipe simila al la API-oj Vulkan, Metalo kaj Direct3D 12. La specifoj estis preparitaj de laborgrupo kiu inkludis inĝenierojn de Mozilla, Google, Apple kaj Microsoft.

Koncipe, WebGPU devias de WebGL en la sama maniero kiel la Vulkan-grafika API diferencas de OpenGL, sed ĝi ne estas bazita sur specifa grafika API, sed estas universala tavolo kiu uzas la samajn malaltnivelajn primitivaĵojn trovitajn en Vulkan, Metalo kaj Direct3D. WebGPU provizas JavaScript-aplikojn per malaltnivela kontrolo pri la organizo, prilaborado kaj dissendo de komandoj al la GPU, administrante rilatajn rimedojn, memoron, bufrojn, teksturobjektojn kaj kompilitajn grafikajn ombrantojn. Ĉ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 kompleksajn 3D-projektojn por la Reto, kiuj funkcias ne pli malbone ol memstaraj programoj, kiuj rekte aliras Vulkan, Metalo aŭ Direct3D, sed ne estas ligitaj al specifaj platformoj. WebGPU ankaŭ disponigas kromajn kapablojn por porti indiĝenajn grafikajn programojn en ret-ebligitan formon per kompilo en WebAssembly. Aldone al 3D-grafikaĵoj, WebGPU ankaŭ inkluzivas kapablojn rilatajn al malŝarĝado de kalkuloj al la GPU kaj ekzekuti ombrantojn.

Ĉefaj Trajtoj de WebGPU:

  • Aparta administrado de rimedoj, prepara laboro kaj transdono de komandoj al la GPU (en WebGL, unu objekto respondecis pri ĉio samtempe). Tri apartaj kuntekstoj estas provizitaj: GPUDevice por krei rimedojn kiel teksturoj kaj bufroj; GPUCommandEncoder por kodi individuajn komandojn, inkluzive de la bildigo kaj kalkulstadioj; GPUCommandBuffer por pasi al la GPU-kura atendovico. La rezulto povas esti igita en areo asociita kun unu aŭ pluraj kanvaselementoj, aŭ igita sen eligo (ekzemple, dum komputado taskoj). La disiĝo de stadioj faciligas apartigi operaciojn pri kreado kaj provizado de rimedoj en malsamaj prizorgantoj, kiuj povas funkcii per malsamaj fadenoj.
  • Malsama aliro al uzado de ŝtatoj. WebGPU provizas du objektojn - GPURenderPipeline kaj GPUComputePipeline, kiuj ebligas al vi kombini malsamajn statojn antaŭdifinitajn de la programisto, kio ebligas al la retumilo ne malŝpari rimedojn por plia laboro, kiel rekompili ombrantojn. Subtenataj ŝtatoj inkluzivas: ombrigilojn, vertican bufron kaj atributajn aranĝojn, gluiĝemajn grupajn aranĝojn, miksadon, profundon kaj ŝablonojn, post-redonajn eligformatojn.
  • Liganta modelo, tre kiel la iloj pri grupigo de rimedoj de Vulkan. Por grupigi rimedojn en grupojn, la WebGPU disponigas GPUBindGroup-objekton, kiu, en la momento de skribado de komandoj, povas esti asociita kun aliaj similaj objektoj por uzo en ombriloj. 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.

fonto: opennet.ru

Aldoni komenton