„Firefox“ naktinės versijos dabar apima „WebGPU“ palaikymą

В naktis „Firefox“ kūrimas pasirodė specifikacijų palaikymas „WebGPU“, kuri suteikia 3D grafikos apdorojimo ir GPU pusės skaičiavimo programavimo sąsają, konceptualiai panašią į API Vulkan, metalas и Tiesioginis3D 12. Specifikaciją kuria „Mozilla“, „Google“, „Apple“, „Microsoft“ ir bendruomenės nariai darbo grupėsukūrė W3C.

Pagrindinis WebGPU tikslas yra sukurti saugią, patogią vartotojui, nešiojamą ir didelio našumo programavimo sąsają žiniatinklio platformai, kad būtų galima panaudoti 3D grafikos technologijas ir galimybes, kurias teikia šiuolaikinės sistemos grafikos API, pvz., Direct3D 12 Windows, Metal. „MacOS“ ir „Vulkan“ sistemoje „Linux“. Konceptualiai „WebGPU“ skiriasi nuo „WebGL“ taip pat, kaip „Vulkan“ skiriasi nuo „OpenGL“, ir tuo pat metu jis nėra pagrįstas konkrečia grafine API, o yra universalus sluoksnis, kuris paprastai naudoja tuos pačius žemo lygio primityvus, esančius „Vulkan“, Metalas ir Direct3D.

„WebGPU“ suteikia „JavaScript“ programoms žemesnio lygio komandų organizavimo, apdorojimo ir perdavimo į GPU valdymą, susijusių išteklių, atminties, buferių, tekstūrų objektų ir sudarytų grafikos šešėlių valdymą. Šis metodas leidžia pasiekti didesnį grafikos programų našumą sumažinant pridėtines išlaidas ir padidinant darbo su GPU efektyvumą.

„WebGPU“ leidžia kurti visaverčius sudėtingus 3D projektus žiniatinkliui, kurie veikia ne prasčiau nei atskiros programos, tiesiogiai pasiekiančios „Vulkan“, „Metal“ ar „Direct3D“, bet nesusietos su konkrečiomis platformomis. „WebGPU“ taip pat suteikia papildomų galimybių, kai vietinės grafikos programos perkeliamos į žiniatinklio įgalintą formą, naudojant „WebAssembly“ technologiją. Be 3D grafikos, WebGPU taip pat apima galimybes, susijusias su skaičiavimų perkėlimu į GPU ir palaikymu šešėlių kūrimu. Shaders galima sukurti WebGPU šešėlių kalba arba nurodyti tarpiniu SPIR-V formatu, o tada išversti į šešėlių kalbas, kurias palaiko dabartinės tvarkyklės.

WebGPU naudoja atskirą resursų valdymą, parengiamuosius darbus ir komandų perdavimą GPU (WebGL už viską iš karto buvo atsakingas vienas objektas). Pateikiami trys atskiri kontekstai:
GPUĮrenginys išteklių, tokių kaip tekstūros ir buferiai, kūrimui; GPUCommandEncoder, skirtas koduoti atskiras komandas, įskaitant atvaizdavimo ir skaičiavimo etapus; GPUCommandBuffer turi būti eilėje, kad būtų galima vykdyti GPU. Rezultatas gali būti pateiktas srityje, susietoje su vienu ar daugiau drobės elementų, arba apdorotas be išvesties (pavyzdžiui, vykdant skaičiavimo užduotis). Atskirdami etapus lengviau atskirti išteklių kūrimo ir paruošimo operacijas į skirtingas tvarkykles, kurios gali veikti skirtingose ​​gijose.

Antrasis skirtumas tarp WebGPU ir WebGL yra skirtingas požiūris į būsenų tvarkymą. WebGPU siūlo du objektus – GPURenderPipeline ir GPUComputePipeline, kurie leidžia derinti įvairias kūrėjo iš anksto nustatytas būsenas, o tai leidžia naršyklei nešvaistyti resursų papildomam darbui, pavyzdžiui, perkompiliuojant šešėlius. Palaikomos būsenos: šešėliai, viršūnių buferio ir atributų išdėstymai, lipnios grupių išdėstymai, maišymas, gylis ir modeliai bei išvesties formatai po pateikimo.

Trečioji WebGPU savybė iš esmės vadinama įrišimo modeliu
primena Vulkan esančius išteklių grupavimo įrankius.
Norėdami grupuoti išteklius, WebGPU pateikia GPUBindGroup objektą, kuris gali būti susietas su kitais panašiais objektais, kad būtų galima naudoti šešėliuose rašant komandas. Sukūrus tokias grupes, vairuotojas gali iš anksto atlikti reikiamus parengiamuosius veiksmus, o naršyklė daug greičiau gali keisti išteklių susiejimą tarp piešimo iškvietimų. Išteklių susiejimo išdėstymas gali būti iš anksto nustatytas naudojant GPUBindGroupLayout objektą.

„Firefox“ naktinės versijos dabar apima „WebGPU“ palaikymą

„Firefox“ norint įjungti „WebGPU“ apie:config, yra nustatymas „dom.webgpu.enabled“. „CanvasContext“ atvaizdavimui taip pat reikia įjungti komponavimą „WebRender“ ("gfx.webrender.all" apie:config), parašyta Rust ir puslapio turinio pateikimo operacijų perkėlimas į GPU. WebGPU diegimas pagrįstas projekto kodu
wgpu, parašyta Rust ir gali veikti su DX12, Vulkan ir Metal API Linux, Android, Windows ir macOS (DX11 ir OpenGL ES 3.0 palaikymas taip pat kuriamas). Tuo pat metu „Google“ kuria kitą diegimą, kuris yra prieinamas Kanarų šaka „Chromium“ ir įgalinta naudojant vėliavėlę „chrome://flags/#enable-unsafe-webgpu“, tačiau kol kas veikia tik „MacOS“ ir „Windows“.

Šaltinis: opennet.ru

Добавить комментарий