Hoʻohui ʻia ke kākoʻo WebGPU i nā hale kūkulu pō o Firefox

В Ke kūkulu nei ʻo Firefox puka mai kākoʻo kikoʻī WebGPU, e hāʻawi ana i kahi polokalamu hoʻolālā no ka hoʻoponopono kiʻi kiʻi 3D a me ka ʻaoʻao GPU-ʻaoʻao, manaʻo like me ka API. lua pele, Metal и Kuhikuhi3D 12. Ke kūkulu ʻia nei ka kikoʻī e Mozilla, Google, Apple, Microsoft a me nā lālā o ke kaiāulu hui hana, i hana ʻia e ka hui W3C.

ʻO ka pahuhopu nui o WebGPU, ʻo ia ka hāʻawi ʻana i kahi hoʻonohonoho hoʻonohonoho paʻa, hoʻohana ʻoluʻolu, lawe lima, a me ka hana kiʻekiʻe no ka pūnaewele pūnaewele e hoʻohana i nā ʻenehana kiʻi 3D a me nā mana i hāʻawi ʻia e nā API kiʻi ʻōnaehana hou, e like me Direct3D 12 ma Windows, Metal. ma macOS, a me Vulkan ma Linux. ʻO ka manaʻo, ʻokoʻa ka WebGPU mai WebGL ma ke ʻano like me ka ʻokoʻa o Vulkan mai OpenGL, a i ka manawa like ʻaʻole ia i hoʻokumu ʻia ma kahi API kiʻi kikoʻī, akā he papa honua e hoʻohana maʻamau i nā primitives haʻahaʻa haʻahaʻa i loaʻa ma Vulkan, Metal a me Direct3D.

Hāʻawi ʻo WebGPU i nā noi JavaScript me ka mana haʻahaʻa haʻahaʻa ma luna o ka hui, ka hoʻoili ʻana, a me ka hoʻouna ʻana i nā kauoha i ka GPU, ka hoʻokele ʻana i nā kumuwaiwai pili, ka hoʻomanaʻo, nā pale, nā mea kikokikona, a me nā shaders kiʻi i hui ʻia. ʻO kēia ala e hiki ai iā ʻoe ke hoʻokō i ka hana kiʻekiʻe no nā noi kiʻi ma o ka hōʻemi ʻana i nā kumukūʻai overhead a me ka hoʻonui ʻana i ka pono o ka hana me ka GPU.

Hiki i ka WebGPU ke hana i nā papahana 3D paʻakikī piha no ka Pūnaewele i ʻoi aku ka maikaʻi ma mua o nā polokalamu kūʻokoʻa e komo pono iā Vulkan, Metal a i ʻole Direct3D, akā ʻaʻole pili i nā kahua kikoʻī. Hāʻawi pū ʻo WebGPU i nā mana hou i ka wā e lawe ai i nā polokalamu kiʻi ʻōiwi i loko o kahi palapala i hoʻohana ʻia ma o ka hoʻohana ʻana i ka ʻenehana WebAssembly. Ma waho aʻe o nā kiʻi 3D, uhi pū ʻo WebGPU i nā hiki e pili ana i ka hoʻoiho ʻana i nā helu helu i ka GPU a me ke kākoʻo ʻana i ka hoʻomohala ʻana i ka shader. Nā Shaders paha e hana ʻia ma ka WebGPU Shading Language a i ʻōlelo ʻia ma ke ʻano SPIR-V waena, a laila unuhi ʻia i nā ʻōlelo shader i kākoʻo ʻia e nā mea hoʻokele o kēia manawa.

Hoʻohana ʻo WebGPU i ka hoʻokele kaʻawale o nā kumuwaiwai, hana hoʻomākaukau, a me ka hoʻouna ʻana i nā kauoha i ka GPU (ma WebGL, hoʻokahi mea i kuleana no nā mea āpau i ka manawa hoʻokahi). Hāʻawi ʻia ʻekolu pōʻaiapili ʻokoʻa:
GPUDevice no ka hoʻokumu ʻana i nā kumuwaiwai e like me nā ʻano a me nā pale; GPUCommandEncoder no ka hoʻopaʻa ʻana i nā kauoha pākahi, me nā pae hoʻolilo a me ka helu ʻana; E hoʻopaʻa ʻia ʻo GPUCommandBuffer no ka hoʻokō ʻana ma ka GPU. Hiki ke hāʻawi ʻia ka hopena ma kahi e pili ana i hoʻokahi a ʻoi aku paha nā mea canvas, a i ʻole hana ʻia me ka ʻole o ka hoʻopuka (no ka laʻana, ke holo nei i nā hana helu). ʻO ka hoʻokaʻawale ʻana i nā ʻanuʻu e maʻalahi ka hoʻokaʻawale ʻana i ka hana ʻana i nā kumuwaiwai a me nā hana hoʻomākaukau i nā mea lawelawe like ʻole e hiki ke holo ma nā pae like ʻole.

ʻO ka lua o ka ʻokoʻa ma waena o WebGPU a me WebGL he ala ʻokoʻa i ka lawelawe ʻana i nā mokuʻāina. Hāʻawi ʻo WebGPU i ʻelua mau mea - GPURenderPipeline a me GPUComputePipeline, e ʻae iā ʻoe e hoʻohui i nā mokuʻāina like ʻole i wehewehe mua ʻia e ka mea hoʻomohala, e hiki ai i ka polokalamu ke hoʻopau i nā kumuwaiwai ma nā hana hou, e like me ka hoʻopili hou ʻana i nā shaders. Aia nā mokuʻāina i kākoʻo ʻia: shaders, vertex buffer a me nā hoʻonohonoho ʻano, nā hoʻonohonoho pūʻulu paʻa, ka hui ʻana, ka hohonu a me nā ʻano, a me nā ʻano hoʻopuka puka hope.

ʻO ke kolu o ka hiʻohiʻona o WebGPU i kapa ʻia ʻo ka hoʻohālike paʻa, ka hapa nui
e hoʻomanaʻo ana i nā mea hana pūʻulu waiwai i loaʻa ma Vulkan.
No ka hui pū ʻana i nā kumuwaiwai, hāʻawi ʻo WebGPU i kahi mea GPUBindGroup, hiki ke hoʻopili ʻia me nā mea like ʻē aʻe no ka hoʻohana ʻana i nā shaders i ke kākau ʻana i nā kauoha. ʻO ka hana ʻana i ia mau pūʻulu e hiki ai i ka mea hoʻokele ke hana i nā hana hoʻomākaukau e pono ai ma mua, a hiki i ka polokalamu kele ke hoʻololi i nā pilina waiwai ma waena o nā kelepona huki ʻoi aku ka wikiwiki. Hiki ke koho mua ʻia ka hoʻolālā o nā mea hoʻopaʻa waiwai me ka hoʻohana ʻana i ka mea GPUBindGroupLayout.

Hoʻohui ʻia ke kākoʻo WebGPU i nā hale kūkulu pō o Firefox

Ma Firefox, e hiki ai iā WebGPU ma kahi: config, aia kahi hoʻonohonoho "dom.webgpu.enabled". Pono ka hana ʻana o CanvasContext i ka haku mele ʻana Pūnaewele Pūnaewele (“gfx.webrender.all” ma kahi o:config), i kākau ʻia ma ka Rust a me ka hoʻopuka ʻana i ka ʻaoʻao ʻaoʻao i nā hana i ka GPU. Hoʻokumu ʻia ka hoʻokō WebGPU ma ke code papahana
wgpu, kākau ʻia ma Rust a hiki ke holo ma luna o ka DX12, Vulkan a me Metal API ma Linux, Android, Windows a me macOS (DX11 a me OpenGL ES 3.0 kākoʻo pū kekahi i ka hoʻomohala ʻana). Ma ka like, ke kūkulu nei ʻo Google i kahi hoʻokō ʻē aʻe, i loaʻa i loko Lala Canary Chromium a hiki ke hoʻohana i ka hae "chrome://flags/#enable-unsafe-webgpu", akā i kēia manawa ke hana wale nei ma macOS a me Windows.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka