Zomanga za Firefox usiku zimaphatikizanso thandizo la WebGPU

Π’ usiku Firefox imapangidwa adawonekera chithandizo chatsatanetsatane WebGPU, yomwe imapereka mawonekedwe a mapulogalamu a 3D graphics processing ndi GPU-side computing, yofanana ndi API chamoto, zitsulo ΠΈ Kulunjika3. Mafotokozedwewa akupangidwa ndi Mozilla, Google, Apple, Microsoft ndi anthu ammudzi gulu logwira ntchito, yopangidwa ndi bungwe la W3C.

Cholinga chachikulu cha WebGPU ndikupereka mawonekedwe otetezeka, osavuta kugwiritsa ntchito, osunthika, komanso ochita bwino kwambiri pa nsanja yapaintaneti kuti athandizire ukadaulo wazithunzi za 3D ndi luso loperekedwa ndi ma API amakono azithunzi, monga Direct3D 12 pa Windows, Metal. pa macOS, ndi Vulkan pa Linux. Mwachidziwitso, WebGPU imasiyana ndi WebGL mofanana ndi momwe Vulkan imasiyana ndi OpenGL, ndipo nthawi yomweyo sichichokera pazithunzi za API, koma ndizosanjikiza zapadziko lonse zomwe nthawi zambiri zimagwiritsa ntchito zoyambira zotsika zomwe zimapezeka mu Vulkan, Metal ndi Direct3D.

WebGPU imapereka mapulogalamu a JavaScript omwe ali ndi mphamvu zochepa pa bungwe, kukonza, ndi kutumiza malamulo ku GPU, kuyang'anira zinthu zomwe zimagwirizana, kukumbukira, zosungira, zinthu zamtundu, ndi zojambula zojambula zojambula. Njirayi imakuthandizani kuti mukwaniritse magwiridwe antchito apamwamba pakugwiritsa ntchito zithunzi pochepetsa mtengo wapamwamba komanso kukulitsa luso logwira ntchito ndi GPU.

WebGPU imapangitsa kuti pakhale mapulojekiti amtundu wa 3D a Webusaiti omwe sagwira ntchito moyipa kuposa mapulogalamu odziyimira okha omwe amapeza mwachindunji Vulkan, Metal kapena Direct3D, koma osamangiriridwa pamapulatifomu enieni. WebGPU imaperekanso luso lowonjezera poyika mapulogalamu azithunzi mu mawonekedwe olumikizidwa ndi intaneti pogwiritsa ntchito ukadaulo wa WebAssembly. Kuphatikiza pazithunzi za 3D, WebGPU imaphatikizanso kuthekera kokhudzana ndi kutsitsa kuwerengera ku GPU ndikuthandizira chitukuko cha shader. Shaders mwina kupangidwa mu WebGPU Shading Language kapena kufotokozedwa mumtundu wapakatikati wa SPIR-V, kenako kumasuliridwa m'zilankhulo za shader zothandizidwa ndi madalaivala apano.

WebGPU imagwiritsa ntchito kasamalidwe kosiyana kazinthu, ntchito yokonzekera, ndi kutumiza malamulo ku GPU (mu WebGL, chinthu chimodzi chinali ndi udindo pa chilichonse nthawi imodzi). Magawo atatu osiyana amaperekedwa:
GPUDevice popanga zinthu monga mawonekedwe ndi mabafa; GPUCommandEncoder pakusunga malamulo apawokha, kuphatikiza magawo operekera ndi kuwerengera; GPUCommandBuffer kuti ayimilire pamzere kuti aphedwe pa GPU. Zotsatira zake zitha kuperekedwa m'dera lomwe limalumikizidwa ndi chinthu chimodzi kapena zingapo za canvas, kapena kukonzedwa popanda kutulutsa (mwachitsanzo, mukamagwira ntchito zowerengera). Kulekanitsa masitepe kumapangitsa kuti zikhale zosavuta kulekanitsa ntchito zopangira zida ndikukonzekera kukhala zogwirira ntchito zosiyanasiyana zomwe zimatha kuyenda pazingwe zosiyanasiyana.

Kusiyana kwachiwiri pakati pa WebGPU ndi WebGL ndi njira yosiyana yoyendetsera mayiko. WebGPU imapereka zinthu ziwiri - GPURenderPipeline ndi GPUComputePipeline, zomwe zimakulolani kuti muphatikize mayiko osiyanasiyana omwe atchulidwa kale ndi wopanga mapulogalamu, omwe amalola msakatuli kuti asawononge chuma pa ntchito yowonjezera, monga kubwezera shaders. Maiko othandizidwa ndi awa: shaders, vertex buffer ndi mawonekedwe ake, masanjidwe amagulu omata, kuphatikiza, kuya ndi mapatani, ndi mawonekedwe otulutsa pambuyo popereka.

Gawo lachitatu la WebGPU limatchedwa mtundu womangirira, makamaka
kukumbukira zida zogawira zida zomwe zilipo mu Vulkan.
Kuti muphatikize zinthu pamodzi, WebGPU imapereka chinthu cha GPUBindGroup, chomwe chitha kulumikizidwa ndi zinthu zina zofananira kuti zigwiritsidwe ntchito mumithunzi polemba malamulo. Kupanga magulu oterowo kumalola dalaivala kuchita zofunikira zokonzekera pasadakhale, ndipo amalola msakatuli kuti asinthe zomangira pakati pa ma foni ojambulira mwachangu kwambiri. Mapangidwe a zomangira zothandizira akhoza kufotokozedwatu pogwiritsa ntchito chinthu cha GPUBindGroupLayout.

Zomanga za Firefox usiku zimaphatikizanso thandizo la WebGPU

Mu Firefox, kuti mutsegule WebGPU pafupifupi: config, pali "dom.webgpu.enabled". Kupereka kwa CanvasContext kumafunanso kuyika kuti kuyatsidwa WebRender ("gfx.webrender.all" pafupifupi: config), yolembedwa mu Rust ndi kutulutsa masamba omwe akupereka ntchito ku GPU. Kukhazikitsa kwa WebGPU kumatengera nambala ya polojekiti
wgpu, yolembedwa mu Rust ndipo imatha kuthamanga pamwamba pa DX12, Vulkan ndi Metal APIs pa Linux, Android, Windows ndi macOS (Thandizo la DX11 ndi OpenGL ES 3.0 likukulanso). Mofananamo, Google ikupanga kukhazikitsa kwina, komwe kulipo Nthambi ya Canary Chromium ndipo imayatsidwa pogwiritsa ntchito mbendera ya "chrome://flags/#enable-unsafe-webgpu", koma mpaka pano imangogwira pa macOS ndi Windows.

Source: opennet.ru

Kuwonjezera ndemanga