Chrome tiks iekļauta atbalsts WebGPU

Google uzņēmums paziņoja, ka no 2. maija Chrome 113 versijā noklusējuma kārtībā tiks iekļauta WebGPU grafiskā API un WGSL (WebGPU Shading Language) atbalsts. WebGPU sniedz līdzīgu programmatūras saskarni kā Vulkan, Metal un Direct3D 12 GPU puses operāciju veikšanai, piemēram, renderēšanai un aprēķiniem, kā arī ļauj izmantot šēderu valodu programmu rakstīšanai, kas darbojas uz GPU. WebGPU implementācija sākotnēji tiks iekļauta tikai ChromeOS, macOS un Windows versijās. Atbalsts Linux un Android būs aktivizēts vēlāk.

Papildus Chrome eksperimentālais WebGPU atbalsts tiek testēts kopš 2020. gada aprīļa Firefox un kopš 2021. gada novembra Safari. Lai aktivizētu WebGPU Firefox, par jāiestata dom.webgpu.enabled un gfx.webgpu.force-enabled iestatījumi sadaļā about:config. Pašlaik nav informācijas par plāniem iekļaut WebGPU noklusējuma režīmā Firefox un Safari. WebGPU realizācijas, kas tiek izstrādātas Firefox un Chrome, ir pieejamas kā atsevišķas bibliotēkas — Dawn (C++) un wgpu (Rust), kuras var izmantot WebGPU atbalsta integrēšanai savās lietotnēs. Tāpat tiek veikts darbs pie WebGPU atbalsta pievienošanas populārām JavaScript bibliotēkām, kas sākotnēji izmanto WebGL. Piemēram, pilnīgs WebGPU atbalsts jau ir paziņots Babylon.js, un daļējs atbalsts Three.js, PlayCanvas un TensorFlow.js.

Konceptuāli WebGPU atšķiras no WebGL aptuveni tāpat kā grafiskā API Vulkan atšķiras no OpenGL. Tomēr WebGPU nav balstīts uz konkrētu grafisko API, bet gan ir vispārīga starpslāņa risinājums, kas izmanto tos pašus zemo līmeņu primitīvus, kas ir pieejami Vulkan, Metal un Direct3D. WebGPU sniedz JavaScript lietotnēm zemas līmeņa kontroli pār organizāciju, apstrādi un komandu nosūtīšanu uz GPU, kā arī pārvaldību saistītajiem resursiem, atmiņai, buferiem, tekstūru objektiem un kompilētiem grafiskajiem šēderiem. Šāds uzņēmums ļauj sasniegt augstāku grafisko lietotņu veiktspēju, samazinot slogu un palielinot efektivitāti darbā ar GPU.

WebGPU nodrošina iespēju izstrādāt sarežģītus 3D projektus tīmeklim, kuri darbojas tikpat labi kā atsevišķas programmas, kas tieši izmanto Vulkan, Metal vai Direct3D, taču nav piesaistītas konkrētām platformām. WebGPU arī sniedz papildu iespējas, portējot tīmekļa tehnoloģiju formātā nativizētas grafiskās programmas, pateicoties kompilācijai uz WebAssembly. Papildus 3D grafikai WebGPU aptver arī iespējas, kas saistītas ar aprēķinu pārvietošanu uz GPU un shaderu izpildi.

Galvenās WebGPU iezīmes:

  • Atsevišķa resursu, sagatavošanas darbu un komandu nodošanas pārvaldība GPU (WebGL vienam objektam bija jāatbild par visu vienlaikus). Tiek nodrošināti trīs atsevišķi konteksti: GPUDevice resursu, piemēram, tekstūru un buferu izveidei; GPUCommandEncoder atsevišķu komandu kodēšanai, tostarp renderēšanas un aprēķinu posmiem; GPUCommandBuffer nodošanai izpildei GPU rindā. Rezultātu var attēlot jomas, kas saistītas ar vienu vai vairākiem vairākām canvasa elementiem, vai apstrādāt bez izvades (piemēram, veicot aprēķinu uzdevumus). Posmu sadalīšana vienkāršo resursu izveides un sagatavošanas operāciju izdalīšanu dažādos apstrādātājos, kas var tikt izpildīti atsevišķos pavedienos.
  • Atšķirīgs piegājiens stāvokļu apstrādē. WebGPU piedāvā divus objektus — GPURenderPipeline un GPUComputePipeline, kas ļauj apvienot dažādus stāvokļus, iepriekš noteiktus izstrādātāja, kas dod iespēju pārlūkprogrammām netērēt resursus papildu darbu veikšanai, piemēram, shaderu pārkompilācijai. Atbalstītie stāvokļi ietver: shadus, virsmas buferu un atribūtu izkārtojumus, pievienoto grupu izkārtojumus, sajaukšanu, dziļumu un formas, kā arī izvades formātus pēc renderēšanas.
  • Modelis, kas ļoti līdzinās Vulkan piedāvātajiem resursu grupēšanas rīkiem. Lai apvienotu resursus grupās WebGPU, ir pieejams objekts GPUBindGroup, kuru komandu ierakstīšanas laikā var saistīt ar citiem tādiem pašiem objektiem, lai tos izmantotu shēderos. Šādu grupu izveide ļauj draiverim iepriekš veikt nepieciešamās sagatavošanas darbības, savukārt pārlūkprogrammai ievērojami ātrāk mainīt resursu piesaistes starp zīmēšanas izsaukumiem. Resursu piesaistes izkārtojumu var iepriekš noteikt, izmantojot GPUBindGroupLayout objektu.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster