WebGPU-stipe sil yn Chrome ynskeakele wurde

Google kundige de standertstipe oan foar de WebGPU graphics API en WebGPU Shading Language (WGSL) yn Chrome 113, dy't pland is foar frijlitting op maaie 2. WebGPU leveret in API fergelykber mei Vulkan, Metal en Direct3D 12 foar it útfieren fan GPU-side operaasjes lykas rendering en berekkening, en lit jo ek in shader-taal brûke om GPU-sideprogramma's te skriuwen. De WebGPU-ymplemintaasje sil yn earste ynstânsje allinich ynskeakele wurde yn builds foar ChromeOS, macOS en Windows. Foar Linux en Android sil WebGPU-stipe op in lettere datum aktivearre wurde.

Neist Chrome is eksperimintele WebGPU-stipe sûnt april 2020 hifke yn Firefox en sûnt novimber 2021 yn Safari. Om WebGPU yn Firefox yn te skeakeljen, set de dom.webgpu.enabled en gfx.webgpu.force-enabled flaggen yn about:config. D'r binne noch gjin plannen om WebGPU standert yn Firefox en Safari yn te skeakeljen. WebGPU-ymplemintaasjes ûntwikkele foar Firefox en Chrome binne beskikber yn 'e foarm fan aparte biblioteken - Dawn (C++) en wgpu (Rust), dy't jo kinne brûke om WebGPU-stipe yn jo applikaasjes te yntegrearjen. Der wurdt ek wurke om WebGPU-stipe ta te foegjen oan populêre JavaScript-biblioteken dy't natuerlik WebGL brûke. Bygelyks, folsleine stipe foar WebGPU is al oankundige yn Babylon.js, en foar in part stipe yn Three.js, PlayCanvas en TensorFlow.js.

Konseptueel ferskilt WebGPU fan WebGL op in protte deselde manier as de Vulkan graphics API ferskilt fan OpenGL, mar WebGPU is net basearre op in spesifike grafyske API, mar is in algemiene laach dy't deselde primitiven op leech nivo brûkt dy't fûn binne yn Vulkan, Metal, en Direct3D. WebGPU leveret JavaSkript-applikaasjes mei kontrôle op leech nivo oer de organisaasje, ferwurking en oerdracht fan kommando's nei de GPU, behear fan assosjearre boarnen, ûnthâld, buffers, tekstuerobjekten en kompilearre grafyske shaders. Dizze oanpak lit jo grafyske applikaasjes mei hegere prestaasjes berikke troch overhead te ferminderjen en de effisjinsje fan 'e GPU te fergrutsjen.

WebGPU makket it mooglik om komplekse 3D-projekten foar it web te meitsjen dy't wurkje lykas standalone programma's dy't direkt Vulkan, Metal of Direct3D brûke, mar net bûn binne oan spesifike platfoarms. De WebGPU biedt ek ekstra opsjes foar it portearjen fan lânseigen grafyske programma's nei in web-ynskeakele foarm troch kompilearjen nei WebAssembly. Neist 3D-grafiken beslacht WebGPU ek de mooglikheden dy't ferbûn binne mei it ôfladen fan berekkeningen nei de GPU-kant en it útfieren fan shaders.

Wichtige funksjes fan WebGPU:

  • Separate behear fan boarnen, tariedend wurk en oerdracht fan kommando's nei de GPU (yn WebGL wie ien objekt tagelyk ferantwurdlik foar alles). Trije aparte konteksten wurde foarsjoen: GPUDevice foar it meitsjen fan boarnen lykas tekstueren en buffers; GPUCommandEncoder foar kodearring fan yndividuele kommando's, ynklusyf de rendering- en berekkeningsstadia; GPUCommandBuffer om troch te gean nei de GPU-runwachtrige. It resultaat kin werjûn wurde yn in gebiet dat is assosjearre mei ien of mear canvas-eleminten, of rendered sûnder útfier (bygelyks by it útfieren fan berekkeningstaken). De skieding fan stadia makket it makliker om operaasjes foar oanmeitsjen fan boarnen en foarsjenningen te skieden yn ferskate handlers dy't kinne rinne op ferskate triedden.
  • In oare oanpak foar it behanneljen fan steaten. WebGPU leveret twa objekten - GPURenderPipeline en GPUComputePipeline, wêrtroch jo ferskate steaten kinne kombinearje dy't foarôf definieare binne troch de ûntwikkelder, wat it mooglik makket foar de browser om gjin boarnen te fergrieme op ekstra wurk, lykas it opnij kompilearjen fan shaders. Stipe steaten omfetsje: shaders, vertexbuffer en attribútlayouts, kleverige groeplayouts, blending, djipte en patroanen, post-render útfierformaten.
  • In binend model, in protte lykas Vulkan's ark foar boarnegroepearring. Om boarnen yn groepen te groepearjen, leveret de WebGPU in GPUBindGroup-objekt, dat, op it stuit fan it skriuwen fan kommando's, kin wurde assosjearre mei oare ferlykbere objekten foar gebrûk yn shaders. It oanmeitsjen fan sokke groepen lit de bestjoerder de nedige tariedende aksjes fan tefoaren útfiere, en lit de blêder de boarnebindingen feroarje tusken tekenoproppen folle flugger. De yndieling fan boarnebindingen kin foarôf definieare wurde mei it GPUBindGroupLayout-objekt.

Boarne: opennet.ru

Add a comment