Inilabas ng W3C ang draft na pamantayan ng WebGPU

Inilabas ng W3C ang mga unang draft ng mga pagtutukoy ng WebGPU at WebGPU Shading Language (WGSL), na tumutukoy sa mga API para sa pagsasagawa ng mga operasyon ng GPU gaya ng pag-render at pag-compute, pati na rin ng isang shader na wika para sa pagsusulat ng mga program na tumatakbo sa GPU. ang konsepto ay katulad ng Vulkan, Metal at Direct3D 12 na mga API Ang mga pagtutukoy ay inihanda ng isang nagtatrabahong grupo na kinabibilangan ng mga inhinyero mula sa Mozilla, Google, Apple at Microsoft.

Sa konsepto, ang WebGPU ay naiiba sa WebGL sa parehong paraan na ang Vulkan graphics API ay naiiba sa OpenGL, ngunit ito ay hindi batay sa isang partikular na graphics API, ngunit ito ay isang unibersal na layer na gumagamit ng parehong mababang antas na mga primitive na matatagpuan sa Vulkan, Metal at Direct3D. Nagbibigay ang WebGPU ng mga JavaScript application na may mababang antas ng kontrol sa organisasyon, pagproseso at pagpapadala ng mga command sa GPU, pamamahala ng mga nauugnay na mapagkukunan, memorya, buffer, texture object at pinagsama-samang graphics shader. Binibigyang-daan ka ng diskarteng ito na makamit ang mas mataas na pagganap para sa mga graphics application sa pamamagitan ng pagbabawas ng mga gastos sa overhead at pagtaas ng kahusayan ng pagtatrabaho sa GPU.

Ginagawang posible ng WebGPU na lumikha ng mga kumplikadong 3D na proyekto para sa Web na gumagana nang hindi mas masahol kaysa sa mga standalone na programa na direktang nag-a-access sa Vulkan, Metal o Direct3D, ngunit hindi nakatali sa mga partikular na platform. Nagbibigay din ang WebGPU ng mga karagdagang kakayahan para sa pag-port ng mga native na graphics program sa isang web-enabled na form sa pamamagitan ng compilation sa WebAssembly. Bilang karagdagan sa 3D graphics, kasama rin sa WebGPU ang mga kakayahan na nauugnay sa pag-offload ng mga kalkulasyon sa GPU at pag-execute ng mga shader.

Mga pangunahing tampok ng WebGPU:

  • Paghiwalayin ang pamamahala ng mga mapagkukunan, paghahanda sa trabaho at paghahatid ng mga utos sa GPU (sa WebGL isang bagay ang responsable para sa lahat nang sabay-sabay). Tatlong magkakahiwalay na konteksto ang ibinigay: GPUDevice para sa paglikha ng mga mapagkukunan tulad ng mga texture at buffer; GPUCommandEncoder para sa pag-encode ng mga indibidwal na command, kabilang ang mga yugto ng pag-render at pag-compute; GPUCommandBuffer na i-queued para sa execution sa GPU. Ang resulta ay maaaring i-render sa isang lugar na nauugnay sa isa o higit pang mga elemento ng canvas, o iproseso nang walang output (halimbawa, kapag nagpapatakbo ng mga gawain sa pag-compute). Ang paghihiwalay sa mga yugto ay nagpapadali sa paghiwalay ng mga operasyon sa paggawa at paghahanda ng mapagkukunan sa iba't ibang mga tagapangasiwa na maaaring tumakbo sa iba't ibang mga thread.
  • Ibang diskarte sa pagpoproseso ng mga estado. Nag-aalok ang WebGPU ng dalawang bagay - GPURenderPipeline at GPUComputePipeline, na nagbibigay-daan sa iyong pagsamahin ang iba't ibang estado na paunang tinukoy ng developer, na nagpapahintulot sa browser na hindi mag-aksaya ng mga mapagkukunan sa karagdagang trabaho, tulad ng muling pag-compile ng mga shader. Kasama sa mga sinusuportahang estado ang: mga shader, vertex buffer at mga layout ng attribute, mga sticky group na layout, blending, depth at pattern, at post-render na mga format ng output.
  • Isang binding model na katulad ng mga feature ng resource grouping ng Vulkan. Upang pagsama-samahin ang mga mapagkukunan, nagbibigay ang WebGPU ng object na GPUBindGroup, na maaaring iugnay sa iba pang katulad na mga bagay para magamit sa mga shader habang nagsusulat ng mga command. Ang paglikha ng mga naturang grupo ay nagbibigay-daan sa driver na maisagawa ang mga kinakailangang aksyon sa paghahanda nang maaga, at pinapayagan ang browser na baguhin ang mga pag-uugnay sa mapagkukunan sa pagitan ng mga tawag sa draw nang mas mabilis. Ang layout ng mga resource binding ay maaaring paunang tukuyin gamit ang GPUBindGroupLayout object.

Pinagmulan: opennet.ru

Magdagdag ng komento