Konstriksyon Firefox chak swa yo genyen kounye a sipò WebGPU

В lannwit Firefox bati parèt sipò spesifikasyon WebGPU, ki bay yon koòdone pwogramasyon pou pwosesis grafik 3D ak enfòmatik bò GPU, konseptyèlman menm jan ak API a. vòlkan, Estati и Direct3D 12. Espesifikasyon an ap devlope pa Mozilla, Google, Apple, Microsoft ak manm kominote a gwoup travaykreye pa W3C la.

Objektif kle WebGPU se bay yon koòdone pwogramasyon ki an sekirite, fasil pou itilize, pòtab ak pèfòmans segondè pou platfòm entènèt la pou pwofite teknoloji grafik 3D ak kapasite API grafik sistèm modèn yo bay, tankou Direct3D 12 sou Windows, Metal. sou macOS, ak Vulkan sou Linux. Konseptyèlman, WebGPU diferan de WebGL nan anpil menm jan ak Vulkan diferan de OpenGL, epi an menm tan an li pa baze sou yon API grafik espesifik, men se yon kouch inivèsèl ki jeneralman itilize menm primitif ba nivo yo te jwenn nan Vulkan. Metal ak Direct3D.

WebGPU bay aplikasyon JavaScript ak kontwòl nivo pi ba sou òganizasyon, pwosesis, ak transmisyon kòmandman nan GPU a, jere resous ki asosye, memwa, tanpon, objè teksti, ak konpile grafik shaders. Apwòch sa a pèmèt ou reyalize pi wo pèfòmans pou aplikasyon grafik lè w diminye depans anlè yo epi ogmante efikasite nan travay ak GPU la.

WebGPU fè li posib pou kreye pwojè 3D konplè pou entènèt ki pa travay pi mal pase pwogram otonòm ki gen aksè dirèkteman nan Vulkan, Metal oswa Direct3D, men ki pa mare nan platfòm espesifik. WebGPU bay kapasite adisyonèl tou lè yo pote pwogram grafik natif natal yo nan yon fòm ki pèmèt entènèt atravè itilizasyon teknoloji WebAssembly. Anplis grafik 3D, WebGPU kouvri tou kapasite ki gen rapò ak dechaje kalkil nan GPU a ak sipòte devlopman shader. Shaders kapab dwe kreye nan lang WebGPU Shading oswa espesifye nan fòma entèmedyè SPIR-V, ak Lè sa a, tradui nan lang shader sipòte pa chofè aktyèl yo.

WebGPU sèvi ak jesyon separe nan resous, travay preparasyon, ak transmisyon nan kòmandman nan GPU a (nan WebGL, yon objè te responsab pou tout bagay nan yon fwa). Yo bay twa kontèks separe:
GPUDevice pou kreye resous tankou tèkstur ak tanpon; GPUCommandEncoder pou kode kòmandman endividyèl, ki gen ladan etap rann ak kalkil; GPUCommandBuffer yo dwe mete ann kriye pou ekzekisyon sou GPU la. Rezilta a ka rann nan yon zòn ki asosye ak youn oswa plis eleman twal, oswa trete san pwodiksyon (pa egzanp, lè w ap fè travay kalkile). Separe etap yo fè li pi fasil yo separe kreyasyon resous ak operasyon preparasyon nan moun kap okipe diferan ki ka kouri sou fil diferan.

Dezyèm diferans ki genyen ant WebGPU ak WebGL se yon apwòch diferan nan manyen eta yo. WebGPU ofri de objè - GPURenderPipeline ak GPUComputePipeline, ki pèmèt ou konbine plizyè eta pre-defini pa pwomotè a, ki pèmèt navigatè a pa gaspiye resous sou travay adisyonèl, tankou recompiling shaders. Eta ki sipòte yo enkli: shaders, tanpon somè ak layout atribi, fòm gwoup kolan, melanje, pwofondè ak modèl, ak fòma pwodiksyon apre rann.

Twazyèm karakteristik WebGPU yo rele modèl obligatwa, lajman
okoumansman de zouti gwoupman resous ki prezan nan Vulkan.
Pou gwoupe resous yo ansanm, WebGPU bay yon objè GPUBindGroup, ki ka asosye ak lòt objè ki sanble pou itilize nan shaders pandan y ap ekri kòmandman yo. Kreye gwoup sa yo pèmèt chofè a fè aksyon preparasyon ki nesesè yo davans, epi li pèmèt navigatè a chanje koneksyon resous ant apèl trase pi vit. Ka Layout nan lyezon resous yo ka predefini lè l sèvi avèk objè a GPUBindGroupLayout.

Konstriksyon Firefox chak swa yo genyen kounye a sipò WebGPU

Nan Firefox, pou pèmèt WebGPU nan about:config, gen yon paramèt "dom.webgpu.enabled". Rann CanvasContext mande tou pou konpozisyon yo aktive WebRender ("gfx.webrender.all" nan about:config), ekri nan Rust ak externalisation kontni paj rann operasyon yo nan GPU la. Aplikasyon WebGPU baze sou kòd pwojè a
wgpu, ekri nan Rust ak kapab kouri sou tèt DX12, Vulkan ak Metal APIs sou Linux, Android, Windows ak macOS (DX11 ak OpenGL ES 3.0 sipò tou nan devlopman). An paralèl, Google ap devlope yon lòt aplikasyon, ki disponib nan Branch Canary Chromium ak pèmèt lè l sèvi avèk drapo "chrome://flags/#enable-unsafe-webgpu", men jiskaprezan sèlman travay sou macOS ak Windows.

Sous: opennet.ru

Add nouvo kòmantè