Avahiyên şevê yên Firefox-ê naha piştgiriya WebGPU-yê vedihewîne

В şev Firefox ava dike xuya kirin piştgiriya taybetmendiyê WebGPU, ku ji bo pêvajoyek grafîkên 3D û hesabkirina aliyê GPU-yê, bi têgînî mîna API-yê navgînek bernamekirinê peyda dike. çîyayê agirî, Hesinî и Direct3D 12. Taybetmendî ji hêla Mozilla, Google, Apple, Microsoft û endamên civakê ve tê pêşve xistin koma xebatêji hêla W3C ve hatî afirandin.

Armanca sereke ya WebGPU ew e ku ji bo platforma Webê navbeynek bernamesaziyek ewledar,-karsaz-heval, portable û performansa bilind peyda bike da ku teknolojiyên grafîkên 3D û kapasîteyên ku ji hêla API-yên grafikên pergalê yên nûjen ve têne peyda kirin, wek Direct3D 12 li ser Windows, Metal bikar bîne. li ser macOS, û Vulkan li ser Linux. Bi têgînî, WebGPU ji WebGL-ê bi heman rengî cûda dibe ku Vulkan ji OpenGL-ê cûda dibe, û di heman demê de ew ne li ser bingeha API-ya grafîkî ya taybetî ye, lê qatek gerdûnî ye ku bi gelemperî heman primitives-asta nizm ên ku di Vulkan de têne dîtin bikar tîne. Metal û Direct3D.

WebGPU serîlêdanên JavaScript-ê li ser organîzasyon, hilberandin, û veguheztina fermanan ji GPU-yê re, rêvebirina çavkaniyên têkildar, bîranîn, tampon, tiştên tevnvîsê, û şaxên grafîkên berhevkirî, kontrolek asta jêrîn peyda dike. Ev nêzîkatî dihêle hûn ji bo serîlêdanên grafîkê performansa bilindtir bi dest bixin bi kêmkirina lêçûnên serdest û zêdekirina kargêriya xebata bi GPU re.

WebGPU gengaz dike ku ji bo Webê projeyên tevlihev ên 3D-ya bêkêmasî biafirînin ku ji bernameyên serbixwe yên ku rasterast digihîjin Vulkan, Metal an Direct3D ne xirabtir dixebitin, lê bi platformên taybetî ve girêdayî ne. WebGPU di heman demê de dema ku bernameyên grafîkî yên xwemalî bi karanîna teknolojiya WebAssembly veguhezîne formek çalakkirî ya webê, kapasîteyên din peyda dike. Digel grafikên 3D, WebGPU di heman demê de kapasîteyên têkildarî barkirina hesabên li GPU-yê û piştgirîkirina pêşveçûna shader jî vedigire. Shaders dibe di WebGPU Shading Language de were afirandin an jî di forma navîn SPIR-V de were destnîşan kirin, û dûv re li zimanên shader ên ku ji hêla ajokarên heyî ve têne piştgirî kirin têne wergerandin.

WebGPU rêveberiya ciyawaz a çavkaniyan, xebata amadekariyê, û veguheztina fermanan ji GPU-yê re bikar tîne (di WebGL de, yek tişt di carekê de ji her tiştî berpirsiyar bû). Sê çarçoveyên cuda têne pêşkêş kirin:
GPUDevice ji bo afirandina çavkaniyên wekî tevnvîs û tampon; GPUCommandEncoder ji bo şîfrekirina fermanên kesane, di nav de qonaxên vegotin û hesabkirinê; GPUCommandBuffer ji bo darvekirinê li ser GPU-ê tê rêz kirin. Encam dikare li deverek ku bi yek an çend hêmanên kanvasê ve girêdayî ye were pêşkêş kirin, an bêyî encam were hilberandin (mînak, dema ku peywirên hesabkirinê dimeşîne). Veqetandina qonaxan veqetandina operasyonên afirandina çavkaniyê û amadekirinê di nav rêkarên cihêreng ên ku dikarin li ser mijarên cihêreng bimeşînin hêsantir dike.

Cûdahiya duyemîn di navbera WebGPU û WebGL de ji bo birêvebirina dewletan nêzîkatiyek cûda ye. WebGPU du tiştan pêşkêşî dike - GPURenderPipeline û GPUComputePipeline, ku dihêlin hûn dewletên cihêreng ên ku ji hêla pêşdebiran ve hatine destnîşan kirin hev bikin, ku rê dide gerokê ku çavkaniyan li ser karên zêde xera neke, wek mînak berhevkirina şakeran. Dewletên piştgirî ev in: shader, tamponên vertex û sêwiranên taybetmendiyê, layoutên komê yên asê, tevlihevkirin, kûrahî û qalibên, û formatên derketinê yên paş-render.

Taybetmendiya sêyemîn a WebGPU bi piranî modela girêdanê tê gotin
Amûrên komkirina çavkaniyê yên ku li Vulkan hene tîne bîra xwe.
Ji bo komkirina çavkaniyan bi hev re, WebGPU hêmanek GPUBindGroup peyda dike, ku dikare bi tiştên din ên wekhev re were girêdan ji bo karanîna di shaderan de dema ku fermanan dinivîse. Afirandina komên weha rê dide ajoker ku pêşî li çalakiyên amadekariyê yên pêwîst pêk bîne, û dihêle gerokker girêdanên çavkaniyê di navbera bangên kişandinê de pir zûtir biguhezîne. Pîvana girêdanên çavkaniyê dikare bi karanîna objekta GPUBindGroupLayout ve were diyar kirin.

Avahiyên şevê yên Firefox-ê naha piştgiriya WebGPU-yê vedihewîne

Di Firefox de, ji bo çalakkirina WebGPU di derbarê:config de, mîhengek "dom.webgpu.enabled" heye. Renderkirina CanvasContext di heman demê de pêdivî ye ku berhevok were çalak kirin WebRender ("gfx.webrender.all" di derbarê:config de), bi Rust hatî nivîsandin û karûbarên danasîna naveroka rûpelê ji GPU re derdixe. Pêkanîna WebGPU li ser koda projeyê ye
wgpu, bi Rust hatî nivîsandin û dikare li ser API-yên DX12, Vulkan û Metal li ser Linux, Android, Windows û macOS-ê bixebite (Piştgiriya DX11 û OpenGL ES 3.0 jî di pêşkeftinê de ye). Di paralel de, Google pêkanînek din pêşve dike, ku tê de heye Şaxa Kanarya Chromium û bi karanîna ala "chrome://flags/#enable-unsafe-webgpu" tê çalak kirin, lê heya nuha tenê li ser macOS û Windows-ê dixebite.

Source: opennet.ru

Add a comment