Ang suporta sa WebGPU ay paganahin sa Chrome

Inihayag ng Google ang pagsasama ng default na suporta para sa WebGPU graphics API at WGSL (WebGPU Shading Language) sa Chrome 113, na naka-iskedyul na ilabas sa Mayo 2. Nagbibigay ang WebGPU ng programming interface na katulad ng Vulkan, Metal, at Direct3D 12 para sa pagsasagawa ng mga operasyon sa gilid ng GPU gaya ng pag-render at pag-compute, at pinapayagan din ang paggamit ng isang shader na wika upang magsulat ng mga program na tumatakbo sa gilid ng GPU. Ang pagpapatupad ng WebGPU ay ie-enable lang sa simula sa ChromeOS, macOS, at Windows build. Para sa Linux at Android, ang suporta sa WebGPU ay ia-activate sa ibang araw.

Bilang karagdagan sa Chrome, sinubukan ang pang-eksperimentong suporta para sa WebGPU mula Abril 2020 sa Firefox at mula noong Nobyembre 2021 sa Safari. Upang paganahin ang WebGPU sa Firefox, dapat mong itakda ang dom.webgpu.enabled at gfx.webgpu.force-enabled na mga flag sa about:config. Wala pang planong paganahin ang WebGPU bilang default sa Firefox at Safari. Available ang mga pagpapatupad ng WebGPU para sa Firefox at Chrome sa anyo ng magkahiwalay na mga aklatan - Dawn (C++) at wgpu (Rust), na magagamit mo upang isama ang suporta sa WebGPU sa iyong mga application. Nagpapatuloy din ang trabaho upang magdagdag ng suporta sa WebGPU sa mga sikat na library ng JavaScript na katutubong gumagamit ng WebGL. Halimbawa, ang buong suporta para sa WebGPU ay inihayag na sa Babylon.js, at bahagyang suporta sa Three.js, PlayCanvas at TensorFlow.js.

Sa konsepto, ang WebGPU ay naiiba sa WebGL sa parehong paraan na ang Vulkan graphics API ay naiiba sa OpenGL, ngunit ang WebGPU ay hindi nakabatay 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 gumaganap nang hindi mas masahol kaysa sa mga standalone na programa na direktang gumagamit ng 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