Ukwakhiwa kweFirefox ngobusuku ngoku kubandakanya inkxaso yeWebGPU

Π’ busuku Firefox yakha yavela inkxaso yengcaciso IWebGPU, ebonelela ngojongano lwenkqubo ye-3D yokusetyenzwa kwemizobo kunye ne-GPU-side computing, ngokwengqiqo efanayo ne-API. mlilo, isinyithi ΠΈ Ukulawula3D 12. Ubalulo luphuhliswa yiMozilla, Google, Apple, Microsoft kunye namalungu asekuhlaleni iqela elisebenzayo, eyenziwe ngumbutho weW3C.

Eyona njongo iphambili yeWebGPU kukubonelela ngokhuseleko, olusebenziseka lula, oluphathekayo, kunye nojongano lwenkqubo olukumgangatho ophezulu kwiqonga leWebhu ukuze kunyuswe ubuchwephesha bemizobo ye-3D kunye nesakhono esibonelelwa yinkqubo yegraphics APIs yale mihla, njengeDirect3D 12 kwiWindows, Metal. kwi-macOS, kunye neVulkan kwiLinux. Ngokwengqiqo, iWebGPU yahlukile kwiWebGL ngendlela efanayo neVulkan eyahluke ngayo kwi-OpenGL, kwaye kwangaxeshanye ayisekelwanga kwigraphical API ethile, kodwa ngumaleko wendalo iphela osebenzisa ngokubanzi umgangatho ophantsi ofanayo ofunyenwe kwiVulkan, Isinyithi kunye ne-Direct3D.

IWebGPU ibonelela ngezicelo zeJavaScript ezinomgangatho ophantsi wolawulo kumbutho, ukusetyenzwa, kunye nokuhanjiswa kwemiyalelo kwiGPU, ukulawula izixhobo ezihambelanayo, inkumbulo, iibuffers, izinto zokuthungwa, kunye nokudibanisa imizobo yemifanekiso. Le ndlela ikuvumela ukuba ufezekise ukusebenza okuphezulu kwezicelo zegraphic ngokunciphisa iindleko eziphezulu kunye nokwandisa ukusebenza kakuhle kunye neGPU.

IWebGPU yenza kube lula ukwenza iiprojekthi ezipheleleyo ze-3D ezintsonkothileyo zeWebhu ezingasebenzi zimbi kuneenkqubo ezizimeleyo ezifikelela ngokuthe ngqo kwiVulkan, iMetal okanye iDirect3D, kodwa ingabotshelelwanga kumaqonga athile. I-WebGPU ikwabonelela ngezakhono ezongezelelweyo xa uhambisa iinkqubo zemizobo yendalo kwifom eyenziwe ngewebhu ngokusebenzisa itekhnoloji yeWebAssembly. Ukongeza kwimizobo ye-3D, iWebGPU ikwagubungela amandla anxulumene nokukhuphela izibalo kwi-GPU kunye nokuxhasa uphuhliso lwe-shader. Shaders inakho yenziwe kwiWebGPU Shading Language okanye icaciswe kwifomati yeSPIR-V ephakathi, kwaye emva koko iguqulelwe kwiilwimi ze-shader ezixhaswa ngabaqhubi bangoku.

I-WebGPU isebenzisa ulawulo oluhlukeneyo lwezixhobo, umsebenzi wokulungiselela, kunye nokuhanjiswa kwemiyalelo kwi-GPU (kwiWebGL, into enye yayijongene nayo yonke into kanye kanye). Iimeko ezintathu ezahlukeneyo zinikiwe:
GPUDevice ekudaleni izixhobo ezifana textures kunye buffers; IGPUCommandEncoder yofakelo lwekhowudi kwimiyalelo yomntu ngamnye, kuquka unikezelo kunye nezigaba zokubala; IGPUCommandBuffer iza kufolelwa ukuphunyezwa kwiGPU. Isiphumo sinokunikezelwa kwindawo ehambelana nenye okanye ngaphezulu kwezinto zeseyile, okanye zisetyenzwe ngaphandle kwemveliso (umzekelo, xa uqhuba imisebenzi yekhompyutha). Ukwahlula izigaba kwenza kube lula ukwahlula ukudalwa kwezixhobo zokusebenza kunye nemisebenzi yokulungiselela kubaphangi abahlukeneyo abanokuqhuba kwimisonto eyahlukeneyo.

Umahluko wesibini phakathi kweWebGPU kunye neWebGL yindlela eyahlukileyo yokuphatha amazwe. I-WebGPU inikezela ngezinto ezimbini - i-GPURenderPipeline kunye ne-GPUComputePipeline, ekuvumela ukuba udibanise amazwe ahlukeneyo achazwe ngaphambili ngumthuthukisi, ovumela ukuba isiphequluli singachithi izibonelelo kumsebenzi owongezelelweyo, njengokubuyisela i-shaders. Amazwe axhaswayo aquka: iishaders, i-vertex buffer kunye nokwakheka kweempawu, iiplani zeqela ezincangathi, ukudibanisa, ubunzulu kunye neepateni, kunye neefomathi zemveliso ye-post-render.

Inqaku lesithathu leWebGPU libizwa ngokuba yimodeli yokubopha, ubukhulu becala
ikhumbuza izixhobo zokuhlanganisa izixhobo ezikhoyo kwiVulkan.
Ukudibanisa izixhobo kunye, i-WebGPU ibonelela ngento ye-GPUBindGroup, enokuthi idibaniswe nezinye izinto ezifanayo zokusetyenziswa kwi-shaders xa ubhala imiyalelo. Ukudala amaqela anjalo kuvumela umqhubi ukuba enze izenzo eziyimfuneko zokulungiselela kwangaphambili, kwaye ivumela isikhangeli ukuba sitshintshe izibophelelo zemithombo phakathi kweefowuni zokutsalwa ngokukhawuleza. Uyilo lwezibophelelo zemithombo lunokuchazwa kwangaphambili kusetyenziswa into yeGPUBindGroupLayout.

Ukwakhiwa kweFirefox ngobusuku ngoku kubandakanya inkxaso yeWebGPU

KwiFirefox, ukwenza iWebGPU ibe malunga: config, kukho useto "dom.webgpu.enabled". Unikezelo lweCanvasContext lukwafuna ukuqulunqa ukuba kuvulwe IWebRender ("gfx.webrender.all" malunga ne:config), ebhalwe kwi-Rust kunye nokukhutshwa komxholo wephepha onikezela imisebenzi kwi-GPU. Ukuphunyezwa kweWebGPU kusekelwe kwikhowudi yeprojekthi
wgpu, ebhalwe kwi-Rust kwaye ikwazi ukusebenza phezulu kwe-DX12, i-Vulkan kunye ne-Metal APIs kwi-Linux, i-Android, i-Windows kunye ne-macOS (i-DX11 kunye ne-OpenGL ES 3.0 inkxaso nayo iphuhliswa). Ngokunxuseneyo, uGoogle uphuhlisa olunye ufezekiso, olufumaneka kwi Isebe laseCanary I-Chromium kwaye yenziwe yasebenza β€œi-chrome://flags/#enable-unsafe-webgpu” iflegi, kodwa ukuza kuthi ga ngoku isebenza kuphela kwi-macOS kunye neWindows.

umthombo: opennet.ru

Yongeza izimvo