Firefox lan Safari kanggo Njaluk Dhukungan WebGPU

Mozilla wis mutusake kanggo ngaktifake dhukungan kanggo API WebGPU lan WGSL (WebGPU Shading Language) ing Firefox. Kanggo platform Windows, dhukungan WebGPU bakal diaktifake kanthi standar ing Firefox 141, dijadwalake tanggal 22 Juli. Banjur, sajrone sawetara wulan sabanjure, dhukungan WebGPU direncanakake bakal diaktifake ing Linux lan macOS, lan sawetara wektu mengko ing versi Android. Kanggo ngaktifake WebGPU kanthi manual, sampeyan bisa nggunakake parameter "dom.webgpu.enabled" lan "gfx.webrender.all" ing babagan: kaca config.

Ing Chrome, dhukungan WebGPU ditawakake kanthi standar ing versi 113, dirilis ing Mei 2023. Ing Safari, dhukungan WebGPU direncanakake bakal diaktifake kanthi gawan ing musim gugur iki (dhukungan eksperimen wis kasedhiya wiwit November 2021). Ing Firefox, dhukungan WebGPU eksperimen wis ana wiwit 2020, nanging mung diaktifake kanthi gawan ing mbangun Firefox saben wengi. Implementasi WebGPU Firefox adhedhasar kode proyek WGPU, ditulis nganggo Rust lan bisa mlaku ing ndhuwur Direct3D 12, Vulkan, OpenGL, lan API grafis Metal.

WebGPU nyedhiyakake API sing padha karo Vulkan, Metal, lan Direct3D 12 kanggo nindakake operasi ing sisih GPU. Saliyane grafis 3D, WebGPU uga nyakup kapabilitas sing ana gandhengane karo petungan sing dicopot menyang sisih GPU lan nglakokake shader. Secara konseptual, WebGPU beda karo spesifikasi WebGL lawas kanthi cara sing padha karo API grafis Vulkan sing beda karo OpenGL. Ing wektu sing padha, WebGPU ora adhedhasar API grafis tartamtu, nanging minangka lapisan universal sing nggunakake primitif tingkat rendah sing padha sing kasedhiya ing Vulkan, Metal, lan Direct3D.

WebGPU mbisakake aplikasi JavaScript kanggo ngontrol organisasi, pangolahan, lan transmisi printah menyang GPU, lan ngatur sumber daya sing gegandhengan, memori, buffer, obyek tekstur, lan shaders grafis kompilasi. Pendekatan iki mbisakake kinerja aplikasi grafis sing luwih dhuwur kanthi ngurangi overhead lan nambah efisiensi nggarap GPU.

Kanthi WebGPU, sampeyan bisa nggawe platform-agnostik, proyek 3D kompleks sing nindakake uga program mandiri sing langsung nggunakake Vulkan, Metal, utawa Direct3D. WebGPU uga menehi kemampuan tambahan kanggo porting program grafis native menyang wangun sing bisa mbukak ing browser, thanks kanggo kompilasi kanggo WebAssembly.

Fitur utama WebGPU lan bedane saka WebGL:

  • Manajemen kapisah saka sumber daya, karya preparatory lan transmisi printah kanggo GPU (ing WebGL siji obyek tanggung jawab kanggo kabeh bebarengan). Telung konteks kapisah diwenehake: GPUDevice kanggo nggawe sumber daya kayata tekstur lan buffer; GPUCommandEncoder kanggo ngodhe prentah individu, kalebu tahap rendering lan komputasi; GPUCommandBuffer bakal antri kanggo eksekusi ing GPU. Asil bisa ditampilake ing area sing ana gandhengane karo siji utawa luwih unsur kanvas, utawa diproses tanpa output (contone, nalika nindakake tugas komputasi). Misahake tahapan nggawe luwih gampang kanggo misahake nggawe sumber daya lan operasi nyiapake menyang panangan beda sing bisa mbukak ing Utas beda.
  • A pendekatan beda kanggo negara Processing. WebGPU nawakake rong obyek - GPURenderPipeline lan GPUComputePipeline, sing ngidini sampeyan nggabungake macem-macem negara sing wis ditemtokake dening pangembang, sing ngidini browser ora mbuwang sumber daya ing karya tambahan, kayata recompiling shaders. Negara sing didhukung kalebu: shader, buffer vertex lan tata letak atribut, tata letak grup lengket, campuran, ambane lan pola, lan format output post-render.
  • Model pengikat kaya fitur pengelompokan sumber daya Vulkan. Kanggo nglumpukake sumber daya bebarengan, WebGPU nyedhiyakake obyek GPUBindGroup, sing bisa digandhengake karo obyek liyane sing padha kanggo digunakake ing shader nalika nulis printah. Nggawe grup kuwi ngidini driver kanggo nindakake tumindak preparatory perlu ing advance, lan ngidini browser kanggo ngganti bindings sumber antarane tarik telpon luwih cepet. Tata letak ikatan sumber daya bisa ditemtokake kanthi nggunakake obyek GPUBindGroupLayout.

Source: opennet.ru

Add a comment