W3C ûntbleatet konsept WebGPU-standert

De W3C hat de earste ûntwerpen fan 'e WebGPU en WebGPU Shading Language (WGSL) spesifikaasjes frijlitten, dy't API's definiearje foar it útfieren fan GPU-operaasjes lykas rendering en komputer, lykas ek in shader-taal foar it skriuwen fan programma's dy't rinne op 'e GPU. konseptueel fergelykber mei de Vulkan, Metal en Direct3D 12 APIs. De spesifikaasjes waarden taret troch in wurkgroep dy't opnommen yngenieurs út Mozilla, Google, Apple en Microsoft.

Konseptueel ferskilt WebGPU fan WebGL op in protte deselde manier as de Vulkan graphics API ferskilt fan OpenGL, mar it is net basearre op in spesifike graphics API, mar is in universele laach dy't deselde primitiven op leech nivo brûkt dy't fûn binne yn Vulkan, Metal en Direkte 3D. 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 hegere prestaasjes berikke foar grafyske applikaasjes troch it ferminderjen fan overheadkosten en it fergrutsjen fan de effisjinsje fan wurkjen mei de GPU.

WebGPU makket it mooglik om komplekse 3D-projekten foar it web te meitsjen dy't net slimmer wurkje as standalone programma's dy't direkt tagong krije ta Vulkan, Metal of Direct3D, mar binne net bûn oan spesifike platfoarms. WebGPU biedt ek ekstra mooglikheden foar it portearjen fan lânseigen grafyske programma's yn in web-ynskeakele foarm fia kompilaasje yn WebAssembly. Neist 3D-grafiken omfettet WebGPU ek mooglikheden yn ferbân mei it ôfladen fan berekkeningen nei de GPU 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