Firefox wengi ngawangun ayeuna kalebet dukungan WebGPU

В peuting Firefox ngawangun mucunghul rojongan spésifikasi WebGPU, nu nyadiakeun antarbeungeut program pikeun ngolah grafik 3D jeung komputasi GPU-sisi, konseptual sarupa jeung API. gunung nu ngebul, logam и Langsung3D 12. Spésifikasina dikembangkeun ku Mozilla, Google, Apple, Microsoft sareng anggota komunitas di grup digawé, dijieun ku organisasi W3C.

Tujuan utama WebGPU nyaéta pikeun nyayogikeun antarbeungeut program anu aman, ramah-pamaké, dibabawa, sareng berkinerja tinggi pikeun platform Wéb pikeun ngungkit téknologi grafik 3D sareng kamampuan anu disayogikeun ku API grafik sistem modern, sapertos Direct3D 12 dina Windows, Metal. dina macOS, sareng Vulkan dina Linux. Sacara konsép, WebGPU bénten sareng WebGL dina cara anu sami sareng Vulkan bénten sareng OpenGL, sareng dina waktos anu sami henteu dumasar kana API grafik khusus, tapi mangrupikeun lapisan universal anu umumna ngagunakeun primitif tingkat rendah anu sami anu aya dina Vulkan. Metal jeung Direct3D.

WebGPU nyayogikeun aplikasi JavaScript kalayan kontrol tingkat handap kana organisasi, pamrosésan, sareng pangiriman paréntah ka GPU, ngatur sumber daya, mémori, panyangga, objék tékstur, sareng shaders grafik anu disusun. Pendekatan ieu ngamungkinkeun anjeun pikeun ngahontal prestasi anu langkung luhur pikeun aplikasi grafik ku cara ngirangan biaya overhead sareng ningkatkeun efisiensi gawé bareng GPU.

WebGPU ngamungkinkeun pikeun nyieun proyék 3D kompléks full-fledged pikeun Web nu gawéna teu leuwih goreng ti program mandiri nu langsung ngakses Vulkan, Metal atanapi Direct3D, tapi teu dihijikeun ka platform husus. WebGPU ogé nyadiakeun kamampuhan tambahan nalika porting program grafik asli kana formulir web-diaktipkeun ngaliwatan pamakéan téknologi WebAssembly. Salian grafik 3D, WebGPU ogé nyertakeun kamampuhan nu patali jeung offloading itungan ka GPU tur ngarojong ngembangkeun shader. Shaders bisa dijieun dina WebGPU Shading Language atawa ditangtukeun dina format SPIR-V panengah, lajeng ditarjamahkeun kana basa shader dirojong ku supir ayeuna.

WebGPU nganggo manajemén sumberdaya anu misah, padamelan persiapan, sareng pangiriman paréntah ka GPU (dina WebGL, hiji obyék nanggung jawab sadayana sakaligus). Tilu konteks misah disadiakeun:
GPUDevice pikeun nyiptakeun sumber sapertos tékstur sareng panyangga; GPUCommandEncoder pikeun ngodekeun paréntah individu, kalebet tahapan rendering sareng komputasi; GPUCommandBuffer bakal antrian pikeun palaksanaan on GPU. Hasilna tiasa dipasihan di daérah anu aya hubunganana sareng hiji atanapi langkung elemen kanvas, atanapi diolah tanpa kaluaran (contona, nalika ngajalankeun tugas ngitung). Misahkeun tahapan ngagampangkeun pikeun misahkeun produksi sumber daya sareng operasi persiapan kana panangan anu béda anu tiasa dijalankeun dina benang anu béda.

Beda kadua antara WebGPU sareng WebGL nyaéta pendekatan anu béda pikeun nanganan nagara. WebGPU nawiskeun dua obyék - GPURenderPipeline sareng GPUComputePipeline, anu ngamungkinkeun anjeun ngagabungkeun sababaraha nagara anu tos ditetepkeun ku pamekar, anu ngamungkinkeun browser henteu miceunan sumber pikeun padamelan tambahan, sapertos nyusun ulang shaders. Kaayaan anu dirojong kalebet: shaders, buffer vertex sareng perenah atribut, perenah grup caket, blending, jero sareng pola, sareng format kaluaran post-render.

Fitur katilu WebGPU disebut model mengikat, lolobana
ngingetkeun alat pengelompokeun sumberdaya anu aya dina Vulkan.
Pikeun ngahijikeun sumberdaya, WebGPU nyayogikeun obyék GPUBindGroup, anu tiasa dikaitkeun sareng objék anu sami pikeun dianggo dina shaders nalika nyerat paréntah. Nyiptakeun grup sapertos kitu ngamungkinkeun supir ngalaksanakeun tindakan persiapan anu dipikabutuh sateuacanna, sareng ngamungkinkeun browser pikeun ngarobih beungkeutan sumber daya antara telepon tarik langkung gancang. Tata perenah beungkeutan sumberdaya tiasa didefinisikeun nganggo obyék GPUBindGroupLayout.

Firefox wengi ngawangun ayeuna kalebet dukungan WebGPU

Dina Firefox, pikeun ngaktipkeun WebGPU ngeunaan: config, aya setelan "dom.webgpu.enabled". CanvasContext rendering ogé merlukeun compositing diaktipkeun WebRender ("gfx.webrender.all" dina ngeunaan: config), ditulis dina Rust na outsourcing eusi operasi rendering eusi ka GPU. palaksanaan WebGPU dumasar kana kode proyék
wgpu, ditulis dina Rust sarta sanggup ngajalankeun on luhureun DX12, Vulkan jeung Metal API on Linux Ubuntu, Android, Windows jeung macOS (DX11 na OpenGL ES 3.0 rojongan oge dina ngembangkeun). Dina paralel, Google ngembangkeun palaksanaan sejen, nu sadia dina Cabang kanaria Chromium sareng diaktipkeun nganggo bendera "chrome://flags/#enable-unsafe-webgpu", tapi sajauh ieu ngan ukur tiasa dianggo dina macOS sareng Windows.

sumber: opennet.ru

Tambahkeun komentar