Tsigiro yeWebGPU yakawedzerwa kuFirefox manheru anovaka

Π’ husiku Firefox inogadzirisa akaonekwa tsanangudzo yekutsigira WebGPU, iyo inopa chirongwa chekugadzirisa che 3D graphics processing uye GPU-side computing, conceptually yakafanana neAPI. rinoputika, simbi ΠΈ Direct3D 12. Iyo yakatarwa iri kuvandudzwa neMozilla, Google, Apple, Microsoft uye nhengo dzenharaunda mukati boka rinoshandayakagadzirwa neW3C.

Chinangwa chikuru cheWebGPU ndechekupa yakachengeteka, mushandisi-inoshamwaridzika, inotakurika, uye yepamusoro-inoshanda programming interface yeWebhu papuratifomu kuti ikwidze 3D graphics matekinoroji uye kugona kunopihwa neazvino system graphics APIs, seDirect3D 12 paWindows, Metal. pa macOS, uye Vulkan paLinux. Sezvineiwo, WebGPU inosiyana neWebGL nenzira yakafanana iyo Vulkan inosiyana neOpenGL, uye panguva imwe chete iyo haina kubva pane yakatarwa mifananidzo API, asi inzvimbo yepasirese iyo inowanzo shandisa yakafanana yakaderera-level primitives inowanikwa muVulkan, Metal uye Direct3D.

WebGPU inopa JavaScript zvikumbiro zvine yakaderera-chikamu chekutonga pamusoro pesangano, kugadzirisa, uye kuendesa mirairo kuGPU, kubata zviwanikwa zvakabatana, ndangariro, mabuffers, manyorerwo zvinhu, uye akaunganidzwa emifananidzo shaders. Iyi nzira inobvumidza iwe kuti uwane yepamusoro kuita kwemifananidzo maapplication nekudzikisa mutengo wepamusoro uye nekuwedzera kugona kwekushanda neGPU.

WebGPU inoita kuti zvikwanise kugadzira mapurojekiti akazara-akazara e3D eWebhu asingashande zvakanyanya kupfuura mapurogiramu akazvimirira anowana zvakananga Vulkan, Metal kana Direct3D, asi asina kusungirirwa kumapuratifomu chaiwo. WebGPU inopawo humwe humwe hunyanzvi kana uchitakura zvirongwa zvemifananidzo zvemukati mune fomu inogonesa webhu kuburikidza nekushandisa tekinoroji yeWebAssembly. Pamusoro peiyo 3D giraidhi, WebGPU inovharawo kugona kune hukama nekuburitsa kuverenga kuGPU uye kutsigira shader kusimudzira. Shaders may kugadzirwa muWebGPU Shading Mutauro kana kutsanangurwa mune yepakati SPIR-V fomati, uye yozoshandurirwa mumitauro ine shader inotsigirwa nevatyairi vazvino.

WebGPU inoshandisa yakaparadzana manejimendi ezviwanikwa, basa rekugadzirira, uye kuendesa mirairo kuGPU (muWebGL, chinhu chimwe chaive chekuita nezvese kamwechete). Zvikamu zvitatu zvakasiyana zvinopihwa:
GPUDevice yekugadzira zviwanikwa zvakaita semanyorerwo uye buffers; GPUCommandEncoder yekukodha mirairo yega, kusanganisira kupa uye computation matanho; GPUCommandBuffer ichaiswa mumutsara kuti iitwe paGPU. Mhedzisiro yacho inogona kupihwa munzvimbo yakabatana nechinhu chimwe kana anopfuura canvas, kana kugadziriswa pasina kuburitsa (semuenzaniso, paunenge uchimhanyisa compute mabasa). Kupatsanura nhanho kunoita kuti zvive nyore kuparadzanisa kugadzirwa kwezviwanikwa uye magadzirirwo ekugadzirira kuva vabati vakasiyana vanogona kumhanya pashinda dzakasiyana.

Musiyano wechipiri pakati peWebGPU neWebGL inzira yakasiyana yekubata nyika. WebGPU inopa zvinhu zviviri - GPURenderPipeline uye GPUComputePipeline, iyo inokutendera kuti ubatanidze nyika dzakasiyana-siyana dzakafanotsanangurwa nemugadziri, izvo zvinobvumira bhurawuza kuti isatambise zviwanikwa pane mamwe mabasa, akadai sekudzorera shaders. Matunhu anotsigirwa anosanganisira: shaders, vertex buffer uye hunhu marongero, anonamira emapoka marongero, kusanganisa, kudzika uye mapatani, uye post-render zvinobuda mafomati.

Chinhu chechitatu cheWebGPU chinonzi chinosunga modhi, zvakanyanya
chiyeuchidzo chezvishandiso zvekuunganidza zviwanikwa zviripo muVulkan.
Kuunganidza zviwanikwa pamwechete, WebGPU inopa GPUBindGroup chinhu, chinogona kubatanidzwa nezvimwe zvinhu zvakafanana zvekushandisa mumumvuri uchinyora mirairo. Kugadzira mapoka akadaro kunobvumira mutyairi kuti aite anodiwa ekugadzirira zviito zvisati zvaitika, uye inobvumira bhurawuza kuti ichinje zvisungo zvinosungirwa pakati pekudhirowa mafoni nekukurumidza. Kurongeka kwezvisungo zvinosungirwa zvinogona kufanotsanangurwa uchishandisa GPUBindGroupLayout chinhu.

Tsigiro yeWebGPU yakawedzerwa kuFirefox manheru anovaka

MuFirefox, kugonesa WebGPU mune nezve: config, pane marongero "dom.webgpu.enabled". CanvasContext rendering inodawo kuti compositing igoneswe WebRender ("gfx.webrender.all" mune nezve: config), yakanyorwa muRust uye yekuburitsa peji zvemukati zvinopa mashandiro kuGPU. Kuitwa kweWebGPU kunobva pane kodhi yeprojekiti
wgpu, yakanyorwa neRust uye inokwanisa kumhanya pamusoro peDX12, Vulkan uye Metal APIs paLinux, Android, Windows uye macOS (DX11 uye OpenGL ES 3.0 tsigiro iri mukusimudzira). Mukufanana, Google iri kugadzira kumwe kuita, kunowanikwa mukati Canary bazi Chromium uye inogoneswa uchishandisa "chrome://flags/#enable-unsafe-webgpu" mureza, asi kusvika parizvino inongoshanda paMacOS neWindows.

Source: opennet.ru

Voeg