W3C ir prezentējis WebGPU standarta darba versiju.

W3C konsorsijs ir prezentējis pirmos WebGPU un WebGPU Shading Language (WGSL) specifikāciju melnrakstus, kas nosaka API GPU operāciju veikšanai, piemēram, attēlu renderēšanai un aprēķiniem, kā arī šēderu valodu programmu rakstīšanai, kas darbojas uz GPU. Tas ir konceptuāli līdzīgs Vulkan, Metal un Direct3D 12 API. Specifikācijas sagatavotas darba grupā, kurā piedalījās inženieri no Mozilla, Google, Apple un Microsoft.

Konceptuāli WebGPU atšķiras no WebGL apmēram tāpat kā grafiskais API Vulkan atšķiras no OpenGL, taču tas nesniedzas uz konkrētu grafisko API un līdz ar to ir universāla slāņa risinājums, kas izmanto tādus pašus zema līmeņa primitīvus kā Vulkan, Metal un Direct3D. WebGPU aplikācijām JavaScript sniedz iespējas zema līmeņa kontrolei par komandu organizāciju, apstrādi un nosūtīšanu uz GPU, kā arī saistīto resursu, atmiņas, buferu, tekstūru objektu un kompilēto grafisko šēderu pārvaldību. Šāds piegājiens ļauj sasniegt augstāku grafisko aplikāciju veiktspēju, samazinot sloga izmaksas un palielinot efektivitāti darbā ar GPU.

WebGPU piedāvā iespēju veidot sarežģītus 3D projektus tīmeklī, kas darbojas ne sliktāk kā patstāvīgas programmas, kas tieši mijiedarbojas ar Vulkan, Metal vai Direct3D, taču nav saistītas ar konkrētām platformām. WebGPU arī piedāvā papildu iespējas, pārnesot vietējās grafiskās programmas formātā, kas spēj darboties uz tīmekļa tehnoloģiju pamata, pateicoties kompilācijai WebAssembly. Papildus 3D grafikai WebGPU aptver arī iespējas, kas saistītas ar aprēķinu izsniegšanu uz GPU un šēderu 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