Ang suporta sa WebGPU ay naidagdag sa Firefox gabi-gabi na mga build

Π’ gabi Bumubuo ang Firefox lumitaw suporta sa pagtutukoy WebGPU, na nagbibigay ng programming interface para sa 3D graphics processing at GPU-side computing, na may konseptong katulad ng API Vulkan, Metal ΠΈ Direkta3D 12. Ang detalye ay binuo ng Mozilla, Google, Apple, Microsoft at mga miyembro ng komunidad sa Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅nilikha ng W3C.

Ang pangunahing layunin ng WebGPU ay magbigay ng secure, user-friendly, portable, at high-performance programming interface para sa Web platform para magamit ang mga 3D graphics na teknolohiya at kakayahan na ibinigay ng mga modernong system graphics API, gaya ng Direct3D 12 sa Windows, Metal. sa macOS, at Vulkan sa Linux. Sa konsepto, ang WebGPU ay naiiba sa WebGL sa parehong paraan kung saan naiiba ang Vulkan sa OpenGL, at sa parehong oras ay hindi ito nakabatay sa isang partikular na graphics API, ngunit ito ay isang unibersal na layer na karaniwang gumagamit ng parehong mababang antas ng mga primitive na matatagpuan sa Vulkan, Metal at Direct3D.

Nagbibigay ang WebGPU ng mga JavaScript application na may mas mababang antas ng kontrol sa organisasyon, pagproseso, at pagpapadala ng mga command sa GPU, pamamahala ng mga nauugnay na mapagkukunan, memorya, buffer, texture object, at pinagsama-samang graphics shader. Binibigyang-daan ka ng diskarteng ito na makamit ang mas mataas na pagganap para sa mga graphics application sa pamamagitan ng pagbabawas ng mga gastos sa overhead at pagtaas ng kahusayan ng pagtatrabaho sa GPU.

Ginagawang posible ng WebGPU na lumikha ng mga ganap na kumplikadong 3D na proyekto para sa Web na gumagana nang hindi mas masahol kaysa sa mga standalone na programa na direktang nag-a-access sa Vulkan, Metal o Direct3D, ngunit hindi nakatali sa mga partikular na platform. Nagbibigay din ang WebGPU ng mga karagdagang kakayahan kapag nag-port ng mga native na graphics program sa isang web-enabled na form sa pamamagitan ng paggamit ng teknolohiya ng WebAssembly. Bilang karagdagan sa 3D graphics, saklaw din ng WebGPU ang mga kakayahan na nauugnay sa pag-offload ng mga kalkulasyon sa GPU at pagsuporta sa pagbuo ng shader. Mga shaders maaari gagawin sa WebGPU Shading Language o tinukoy sa intermediate SPIR-V na format, at pagkatapos ay isalin sa mga shader na wika na sinusuportahan ng kasalukuyang mga driver.

Gumagamit ang WebGPU ng hiwalay na pamamahala ng mga mapagkukunan, gawaing paghahanda, at pagpapadala ng mga command sa GPU (sa WebGL, isang bagay ang responsable para sa lahat nang sabay-sabay). Tatlong magkakahiwalay na konteksto ang ibinigay:
GPUDevice para sa paglikha ng mga mapagkukunan tulad ng mga texture at buffer; GPUCommandEncoder para sa pag-encode ng mga indibidwal na command, kabilang ang mga yugto ng pag-render at pag-compute; GPUCommandBuffer na i-queued para sa execution sa GPU. Ang resulta ay maaaring i-render sa isang lugar na nauugnay sa isa o higit pang mga elemento ng canvas, o iproseso nang walang output (halimbawa, kapag nagpapatakbo ng mga gawain sa pag-compute). Ang paghihiwalay sa mga yugto ay nagpapadali sa paghiwalay ng mga operasyon sa paggawa at paghahanda ng mapagkukunan sa iba't ibang mga tagapangasiwa na maaaring tumakbo sa iba't ibang mga thread.

Ang pangalawang pagkakaiba sa pagitan ng WebGPU at WebGL ay ibang diskarte sa paghawak ng mga estado. Nag-aalok ang WebGPU ng dalawang bagay - GPURenderPipeline at GPUComputePipeline, na nagbibigay-daan sa iyong pagsamahin ang iba't ibang estado na paunang tinukoy ng developer, na nagpapahintulot sa browser na hindi mag-aksaya ng mga mapagkukunan sa karagdagang trabaho, tulad ng muling pag-compile ng mga shader. Kasama sa mga sinusuportahang estado ang: mga shader, vertex buffer at mga layout ng attribute, mga sticky group na layout, blending, depth at pattern, at post-render na mga format ng output.

Ang ikatlong tampok ng WebGPU ay tinatawag na binding model, higit sa lahat
Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² Vulkan срСдства Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ рСсурсов.
Upang pagsama-samahin ang mga mapagkukunan, nagbibigay ang WebGPU ng object na GPUBindGroup, na maaaring iugnay sa iba pang katulad na mga bagay para magamit sa mga shader habang nagsusulat ng mga command. Ang paglikha ng mga naturang grupo ay nagbibigay-daan sa driver na maisagawa ang mga kinakailangang aksyong paghahanda nang maaga, at pinapayagan ang browser na baguhin ang mga pag-uugnay ng mapagkukunan sa pagitan ng mga tawag sa pagguhit nang mas mabilis. Ang layout ng mga resource binding ay maaaring paunang tukuyin gamit ang GPUBindGroupLayout object.

Ang suporta sa WebGPU ay naidagdag sa Firefox gabi-gabi na mga build

Sa Firefox, para paganahin ang WebGPU sa about:config, mayroong setting na "dom.webgpu.enabled". Ang pag-render ng CanvasContext ay nangangailangan din ng pag-composite upang paganahin WebRender (β€œgfx.webrender.all” sa about:config), na nakasulat sa Rust at outsourcing page na pag-render ng content sa GPU. Ang pagpapatupad ng WebGPU ay batay sa code ng proyekto
wgpu, nakasulat sa Rust at may kakayahang tumakbo sa tuktok ng DX12, Vulkan at Metal API sa Linux, Android, Windows at macOS (DX11 at OpenGL ES 3.0 support ay nasa pagbuo din). Kasabay nito, ang Google ay gumagawa ng isa pang pagpapatupad, na magagamit sa sangay ng canary Chromium ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° Β«chrome://flags/#enable-unsafe-webgpuΒ», Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² macOS ΠΈ Windows.

Pinagmulan: opennet.ru

Magdagdag ng komento