Ang Firefox matag gabii nga pagtukod karon naglakip sa suporta sa WebGPU

Π’ gabii Nagtukod ang Firefox nagpakita suporta sa espesipikasyon WebGPU, nga naghatag ug programming interface para sa 3D graphics processing ug GPU-side computing, conceptually susama sa API Vulkan, metal ΠΈ Direkta3D 12. Ang espesipikasyon gihimo sa Mozilla, Google, Apple, Microsoft ug mga miyembro sa komunidad sa working group, gihimo sa W3C nga organisasyon.

Ang yawe nga tumong sa WebGPU mao ang paghatag og luwas, user-friendly, madaladala, ug high-performance programming interface alang sa Web platform aron magamit ang 3D graphics nga mga teknolohiya ug mga kapabilidad nga gihatag sa modernong system graphics APIs, sama sa Direct3D 12 sa Windows, Metal. sa macOS, ug Vulkan sa Linux. Sa konsepto, ang WebGPU lahi sa WebGL sa parehas nga paagi nga ang Vulkan lahi sa OpenGL, ug sa samang higayon wala kini gibase sa usa ka piho nga graphics API, apan usa ka unibersal nga layer nga kasagaran naggamit sa parehas nga ubos nga lebel nga mga primitibo nga makita sa Vulkan, Metal ug Direct3D.

Ang WebGPU naghatag sa mga aplikasyon sa JavaScript nga adunay ubos nga lebel nga kontrol sa organisasyon, pagproseso, ug pagpasa sa mga sugo ngadto sa GPU, pagdumala sa kaubang mga kapanguhaan, memorya, mga buffer, mga butang sa texture, ug gihugpong nga mga shaders sa graphics. Kini nga pamaagi nagtugot kanimo nga makab-ot ang mas taas nga pasundayag alang sa mga aplikasyon sa graphic pinaagi sa pagkunhod sa mga gasto sa overhead ug pagdugang sa kahusayan sa pagtrabaho kauban ang GPU.

Gipaposible sa WebGPU ang paghimo og bug-os nga komplikadong mga proyekto sa 3D alang sa Web nga nagtrabaho nga dili mas grabe kay sa mga standalone nga mga programa nga direktang nag-access sa Vulkan, Metal o Direct3D, apan wala gihigot sa piho nga mga plataporma. Naghatag usab ang WebGPU og dugang nga mga kapabilidad sa pag-port sa mga lumad nga mga programa sa graphic sa usa ka porma nga magamit sa web pinaagi sa paggamit sa teknolohiya sa WebAssembly. Dugang sa 3D graphics, ang WebGPU naglangkob usab sa mga kapabilidad nga may kalabutan sa pag-offload sa mga kalkulasyon ngadto sa GPU ug pagsuporta sa pagpalambo sa shader. Mga shaders mahimo himoon sa WebGPU Shading Language o gipiho sa intermediate SPIR-V format, ug dayon hubaron ngadto sa shader nga mga pinulongan nga gisuportahan sa kasamtangang mga drayber.

Ang WebGPU naggamit ug bulag nga pagdumala sa mga kahinguhaan, buluhaton sa pagpangandam, ug pagpasa sa mga sugo ngadto sa GPU (sa WebGL, usa ka butang ang responsable sa tanan sa makausa). Tulo ka bulag nga konteksto ang gihatag:
GPUDevice alang sa paghimo og mga kapanguhaan sama sa mga texture ug buffer; GPUCommandEncoder para sa pag-encode sa tagsa-tagsa nga mga sugo, lakip na ang paghubad ug mga yugto sa pagkuwenta; Ang GPUCommandBuffer i-queue para ipatuman sa GPU. Ang resulta mahimong ma-render sa usa ka lugar nga may kalabotan sa usa o daghang mga elemento sa canvas, o maproseso nga wala’y output (pananglitan, kung nagdagan sa mga buluhaton sa pagkalkula). Ang pagbulag sa mga yugto makapasayon ​​sa pagbulag sa mga operasyon sa paghimo ug pag-andam sa kahinguhaan ngadto sa lain-laing mga tigdumala nga mahimong modagan sa lain-laing mga hilo.

Ang ikaduha nga kalainan tali sa WebGPU ug WebGL usa ka lahi nga pamaagi sa pagdumala sa mga estado. Nagtanyag ang WebGPU og duha ka butang - GPURenderPipeline ug GPUComputePipeline, nga nagtugot kanimo sa paghiusa sa lainlaing mga estado nga gitakda nang daan sa developer, nga nagtugot sa browser nga dili mag-usik sa mga kapanguhaan sa dugang nga trabaho, sama sa pag-recompile sa mga shaders. Ang gisuportahan nga mga estado naglakip sa: shaders, vertex buffer ug attribute layouts, sticky group layouts, blending, depth ug patterns, ug post-render output formats.

Ang ikatulo nga bahin sa WebGPU gitawag nga nagbugkos nga modelo, kadaghanan
nagpahinumdom sa mga kahimanan sa paggrupo sa kahinguhaan nga anaa sa Vulkan.
Sa paggrupo sa mga kahinguhaan, ang WebGPU naghatag ug GPUBindGroup nga butang, nga mahimong i-uban sa ubang susama nga mga butang para gamiton sa mga shader samtang nagsulat og mga sugo. Ang paghimo sa ingon nga mga grupo nagtugot sa drayber sa paghimo sa gikinahanglan nga mga aksyon sa pag-andam daan, ug gitugotan ang browser nga usbon ang mga pagbugkos sa kapanguhaan tali sa mga tawag sa draw nga labi ka paspas. Ang layout sa resource bindings mahimong ma-predefine gamit ang GPUBindGroupLayout object.

Ang Firefox matag gabii nga pagtukod karon naglakip sa suporta sa WebGPU

Sa Firefox, aron mahimo ang WebGPU sa about:config, adunay setting nga "dom.webgpu.enabled". Ang paghubad sa CanvasContext nanginahanglan usab sa pag-composite aron mahimo WebRender (β€œgfx.webrender.all” sa about:config), nga gisulat sa Rust ug outsourcing nga panid sa content rendering operations ngadto sa GPU. Ang pagpatuman sa WebGPU gibase sa code sa proyekto
wgpu, gisulat sa Rust ug makahimo sa pagdagan sa ibabaw sa DX12, Vulkan ug Metal API sa Linux, Android, Windows ug macOS (DX11 ug OpenGL ES 3.0 nga suporta anaa usab sa pagpalambo). Sa susama, ang Google nagpalambo og laing pagpatuman, nga anaa sa Sanga sa canary Chromium ug gi-enable gamit ang flag nga "chrome://flags/#enable-unsafe-webgpu", apan hangtod karon magamit ra sa macOS ug Windows.

Source: opennet.ru

Idugang sa usa ka comment