„Chrome“ bus įjungtas WebGPU palaikymas

„Google“ paskelbė apie numatytąjį WebGPU grafikos API ir „WebGPU Shading Language“ (WGSL) palaikymą „Chrome 113“, kurį planuojama išleisti gegužės 2 d. „WebGPU“ teikia API, panašią į „Vulkan“, „Metal“ ir „Direct3D 12“, skirtą GPU operacijoms, tokioms kaip atvaizdavimas ir skaičiavimas, atlikti, taip pat leidžia naudoti atspalvio kalbą GPU programoms rašyti. „WebGPU“ diegimas iš pradžių bus įgalintas tik „ChromeOS“, „MacOS“ ir „Windows“ versijose. „Linux“ ir „Android“ „WebGPU“ palaikymas bus suaktyvintas vėliau.

Be „Chrome“, eksperimentinis WebGPU palaikymas buvo išbandytas nuo 2020 m. balandžio mėnesio „Firefox“, o nuo 2021 m. lapkričio – „Safari“. Norėdami įgalinti WebGPU naršyklėje Firefox, nustatykite dom.webgpu.enabled ir gfx.webgpu.force-enabled vėliavėles about:config. Kol kas neketinama įjungti WebGPU pagal numatytuosius nustatymus „Firefox“ ir „Safari“. „Firefox“ ir „Chrome“ sukurtus WebGPU diegimus galima naudoti kaip atskiras bibliotekas – Dawn (C++) ir wgpu (Rust), kurias galite naudoti norėdami integruoti WebGPU palaikymą į savo programas. Taip pat dirbama siekiant pridėti WebGPU palaikymą populiariose JavaScript bibliotekose, naudojant WebGL. Pavyzdžiui, apie visišką WebGPU palaikymą jau paskelbta Babylon.js, o dalinį - Three.js, PlayCanvas ir TensorFlow.js.

Konceptualiai „WebGPU“ skiriasi nuo „WebGL“ taip pat, kaip „Vulkan“ grafikos API skiriasi nuo „OpenGL“, tačiau „WebGPU“ nėra pagrįstas konkrečia grafine API, o yra bendros paskirties sluoksnis, kuriame naudojami tie patys žemo lygio primityvai, esantys „Vulkan“, Metalas ir Direct3D. „WebGPU“ suteikia „JavaScript“ programoms žemo lygio valdymą, kaip organizuoti, apdoroti ir perduoti komandas GPU, valdyti susijusius išteklius, atmintį, buferius, tekstūros objektus ir sudarytus grafikos šešėlius. Šis metodas leidžia pasiekti didesnio našumo grafines programas, sumažinant pridėtines išlaidas ir padidinant GPU efektyvumą.

WebGPU leidžia kurti sudėtingus 3D projektus žiniatinkliui, kurie veikia taip pat kaip atskiros programos, kurios tiesiogiai naudoja Vulkan, Metal arba Direct3D, bet nėra susietos su konkrečiomis platformomis. „WebGPU“ taip pat suteikia papildomų galimybių perkelti vietines grafikos programas į žiniatinklio įgalintą formą, kompiliuojant į „WebAssembly“. Be 3D grafikos, WebGPU taip pat apima galimybes, susijusias su skaičiavimų perkėlimu į GPU pusę ir šešėlių vykdymu.

Pagrindinės WebGPU savybės:

  • Atskiras resursų valdymas, parengiamieji darbai ir komandų perdavimas į GPU (WebGL už viską iš karto buvo atsakingas vienas objektas). Pateikiami trys atskiri kontekstai: GPUDevice ištekliams, tokiems kaip tekstūros ir buferiai, kurti; GPUCommandEncoder, skirtas koduoti atskiras komandas, įskaitant atvaizdavimo ir skaičiavimo etapus; GPUCommandBuffer perduoti į GPU paleidimo eilę. Rezultatas gali būti pateiktas srityje, susietoje su vienu ar daugiau drobės elementų, arba be išvesties (pavyzdžiui, vykdant skaičiavimo užduotis). Etapų atskyrimas leidžia lengviau atskirti išteklių kūrimo ir aprūpinimo operacijas į skirtingas tvarkykles, kurios gali veikti skirtingose ​​gijose.
  • Kitoks požiūris į būsenų valdymą. WebGPU pateikia du objektus – GPURenderPipeline ir GPUComputePipeline, kurie leidžia derinti skirtingas kūrėjo iš anksto nustatytas būsenas, o tai leidžia naršyklei nešvaistyti resursų papildomam darbui, pavyzdžiui, perkompiliuoti atspalvius. Palaikomos būsenos: šešėliai, viršūnių buferio ir atributų išdėstymai, lipnių grupių išdėstymai, maišymas, gylis ir modeliai, išvesties formatai po pateikimo.
  • Įpareigojantis modelis, panašus į „Vulkan“ išteklių grupavimo įrankius. Norėdami sugrupuoti išteklius į grupes, WebGPU pateikia GPUBindGroup objektą, kuris komandų rašymo metu gali būti susietas su kitais panašiais objektais naudoti šešėliuose. 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ą.

Šaltinis: opennet.ru

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