Gepubliceerd: 26 maart 2025
Sta het maken van een pijplijnindeling met null-bindgroepindeling toe
Voorheen vereiste het maken van een lege bindgroeplay-out het toevoegen van een bindgroep zonder bindingen, wat lastig was. Dit is niet langer nodig omdat null-bindgroeplay-outs nu zijn toegestaan en genegeerd bij het maken van een pijplijnlay-out. Dit zou de ontwikkeling gemakkelijker moeten maken.
U wilt bijvoorbeeld mogelijk een pijplijn maken die alleen de bindingsgroeplay-outs 0 en 2 gebruikt. U kunt bindingsgroepslay-out 1 toewijzen aan fragmentatie van gegevens en bindingsgroepslay-out 2 aan hoekpuntgegevens, en vervolgens renderen zonder een fragmentarcering. Zie uitgave 377836524 .
const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });
// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
bindGroupLayouts: [bgl0, null, bgl2],
});
Sta toe dat zichtvensters voorbij de grenzen van de weergavedoelen reiken
De vereisten voor viewport-validatie zijn versoepeld, zodat viewports de grenzen van het renderdoel kunnen overschrijden. Dit is vooral handig voor het tekenen van 2D-elementen, zoals de gebruikersinterface, die zich buiten het huidige venster kunnen uitstrekken. Zie uitgave 390162929 .
const passEncoder = myCommandEncoder.beginRenderPass({
colorAttachments: [
{
view: myColorTexture.createView(),
loadOp: "clear",
storeOp: "store",
},
],
});
// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
/*x=*/ -8,
/*y=*/ -8,
/*width=*/ myColorTexture.width + 16,
/*height=*/ myColorTexture.height + 16,
/*minDepth=*/ 0,
/*maxDepth=*/ 1,
);
// Draw geometry and complete the render pass as usual.
Gemakkelijkere toegang tot de experimentele compatibiliteitsmodus op Android
Alleen al de vlag chrome://flags/#enable-unsafe-webgpu
maakt nu alle mogelijkheden mogelijk die nodig zijn voor de experimentele WebGPU-compatibiliteitsmodus op Android. Daarmee kunt u een GPUAdapter in compatibiliteitsmodus aanvragen met de optie featureLevel: "compatibility"
en zelfs toegang krijgen tot de OpenGL ES-backend op apparaten die geen ondersteuning voor Vulkan hebben. Zie het volgende voorbeeld en geef Dawn:389876644 op.
// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

Verwijder de maxInterStageShaderComponents-limiet
Zoals eerder aangekondigd , wordt de maxInterStageShaderComponents-limiet verwijderd vanwege een combinatie van factoren:
- Redundantie met
maxInterStageShaderVariables
: deze limiet dient al een soortgelijk doel, namelijk het regelen van de hoeveelheid gegevens die tussen shader-fasen wordt doorgegeven. - Kleine verschillen: Hoewel er kleine verschillen zijn in de manier waarop de twee limieten worden berekend, zijn deze verschillen klein en kunnen ze effectief worden beheerd binnen de
maxInterStageShaderVariables
-limiet. - Vereenvoudiging: het verwijderen van
maxInterStageShaderComponents
stroomlijnt de shader-interface en vermindert de complexiteit voor ontwikkelaars. In plaats van twee afzonderlijke limieten met subtiele verschillen te beheren, kunnen ze zich concentreren op de beter benoemde en uitgebreideremaxInterStageShaderVariables
.
Zie het voornemen om 364338810 te verwijderen en uit te geven .
Dawn-updates
Het is niet langer mogelijk om een filterende sampler te gebruiken om een dieptetextuur te bemonsteren. Ter herinnering: een dieptetextuur kan alleen worden gebruikt met een niet-filterende of vergelijkende sampler. Zie uitgave 379788112 .
De structuren WGPURequiredLimits
en WGPUSupportedLimits
zijn afgevlakt tot WGPULimits
. Zie uitgave 374263404 .
De volgende structuren zijn hernoemd. Zie uitgave 42240793 .
-
WGPUImageCopyBuffer
is nuWGPUTexelCopyBufferInfo
-
WGPUImageCopyTexture
is nuWGPUTexelCopyTextureInfo
-
WGPUTextureDataLayout
is nuWGPUTexelCopyBufferLayout
De leden subgroupMinSize
en subgroupMaxSize
zijn toegevoegd aan de WGPUAdapterInfo
structuur. Zie webgpu-headers PR .
Het traceren van het Dawn API-gebruik in Metal is nu mogelijk wanneer u uw programma uitvoert met de omgevingsvariabele DAWN_TRACE_FILE_BASE
, die een .gputrace-bestand opslaat dat later in XCode's Metal Debugger kan worden geladen. Zie de Debugging Dawn -documentatie.
Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de uitgebreide lijst met commits .
Wat is er nieuw in WebGPU
Een lijst met alles wat aan bod komt in de What's New in WebGPU -serie.
Chroom 135
- Sta het maken van een pijplijnindeling met null-bindgroepindeling toe
- Sta toe dat zichtvensters voorbij de grenzen van de weergavedoelen reiken
- Gemakkelijkere toegang tot de experimentele compatibiliteitsmodus op Android
- Verwijder de maxInterStageShaderComponents-limiet
- Dawn-updates
Chroom 134
- Verbeter machine learning-workloads met subgroepen
- Verwijder de float-filterbare textuurtypes als mengbaar
- Dawn-updates
Chroom 133
- Extra unorm8x4-bgra en 1-component hoekpuntformaten
- Sta toe dat onbekende limieten worden aangevraagd met een ongedefinieerde waarde
- WGSL-uitlijningsregels veranderen
- WGSL-prestaties verbeteren met weggooien
- Gebruik VideoFrame displaySize voor externe texturen
- Verwerk afbeeldingen met een niet-standaardoriëntatie met behulp van copyExternalImageToTexture
- Verbetering van de ontwikkelaarservaring
- Schakel de compatibiliteitsmodus in met featureLevel
- Experimentele subgroep biedt opschoning
- Beëindig de maxInterStageShaderComponents-limiet
- Dawn-updates
Chroom 132
- Gebruik van textuurweergave
- 32-bits zwevende texturen mengen
- GPUDevice adapterInfo-kenmerk
- Het configureren van canvascontext met een ongeldig formaat levert een JavaScript-fout op
- Filteren van samplerbeperkingen op texturen
- Uitgebreide experimenten met subgroepen
- Verbetering van de ontwikkelaarservaring
- Experimentele ondersteuning voor 16-bits genormaliseerde textuurformaten
- Dawn-updates
Chroom 131
- Clipafstanden in WGSL
- GPUCanvasContext getConfiguration()
- Punt- en lijnprimitieven mogen geen diepteafwijking hebben
- Inclusief ingebouwde scanfuncties voor subgroepen
- Experimentele ondersteuning voor indirecte meertrekking
- Compilatieoptie Shader-module strikte wiskunde
- GPUAdapter requestAdapterInfo() verwijderen
- Dawn-updates
Chroom 130
- Mengen met dubbele bron
- Verbeteringen in de compilatietijd van Shader op Metal
- Beëindiging van GPUAdapter requestAdapterInfo()
- Dawn-updates
Chroom 129
- HDR-ondersteuning met canvas-tone mapping-modus
- Uitgebreide ondersteuning voor subgroepen
- Dawn-updates
Chroom 128
- Experimenteren met subgroepen
- Beëindig het instellen van diepteafwijking voor lijnen en punten
- Niet-opgevangen fout verbergen DevTools-waarschuwing als preventieDefault
- WGSL interpoleert eerst de bemonstering en een van beide
- Dawn-updates
Chroom 127
- Experimentele ondersteuning voor OpenGL ES op Android
- GPUAdapter info-kenmerk
- Verbeteringen in de interoperabiliteit van WebAssembly
- Verbeterde opdracht-encoderfouten
- Dawn-updates
Chroom 126
- Verhoog de maxTextureArrayLayers-limiet
- Bufferuploadoptimalisatie voor Vulkan-backend
- Verbeteringen in de compilatietijd van Shader
- Ingezonden opdrachtbuffers moeten uniek zijn
- Dawn-updates
Chroom 125
Chroom 124
- Alleen-lezen en lezen-schrijven opslagtexturen
- Ondersteuning van servicemedewerkers en gedeelde medewerkers
- Nieuwe attributen voor adapterinformatie
- Bugfixes
- Dawn-updates
Chroom 123
- DP4a ingebouwde functies ondersteunen in WGSL
- Onbeperkte pointerparameters in WGSL
- Syntaxissuiker voor het derefereren van composieten in WGSL
- Afzonderlijke alleen-lezen-status voor stencil- en diepteaspecten
- Dawn-updates
Chroom 122
- Vergroot het bereik met de compatibiliteitsmodus (functie in ontwikkeling)
- Verhoog de maxVertexAttributes-limiet
- Dawn-updates
Chroom 121
- Ondersteuning WebGPU op Android
- Gebruik DXC in plaats van FXC voor shader-compilatie op Windows
- Tijdstempelquery's in reken- en renderpassen
- Standaardingangspunten voor shadermodules
- Ondersteuning display-p3 als GPUExternalTexture-kleurruimte
- Informatie over geheugenheaps
- Dawn-updates
Chroom 120
- Ondersteuning voor 16-bit drijvende-kommawaarden in WGSL
- Verleg de grenzen
- Veranderingen in de staat van de diepte-stencil
- Updates van adapterinformatie
- Kwantisering van tijdstempelquery's
- Lenteschoonmaakfuncties
Chroom 119
- Filterbare 32-bit float-texturen
- unorm10-10-10-2 hoekpuntformaat
- rgb10a2uint textuurformaat
- Dawn-updates
Chroom 118
- HTMLImageElement- en ImageData-ondersteuning in
copyExternalImageToTexture()
- Experimentele ondersteuning voor lees-schrijf- en alleen-lezen opslagtextuur
- Dawn-updates
Chroom 117
- Schakel hoekpuntbuffer uit
- Schakel de bindingsgroep uit
- Stil fouten bij het maken van asynchrone pijplijnen wanneer het apparaat verloren gaat
- Updates voor het maken van SPIR-V-shadermodules
- Verbetering van de ontwikkelaarservaring
- Caching van pijplijnen met automatisch gegenereerde lay-out
- Dawn-updates
Chroom 116
- WebCodecs-integratie
- Verloren apparaat geretourneerd door GPUAdapter
requestDevice()
- Houd het afspelen van video soepel als
importExternalTexture()
wordt aangeroepen - Spec-conformiteit
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 115
- Ondersteunde WGSL-taalextensies
- Experimentele ondersteuning voor Direct3D 11
- Krijg standaard een discrete GPU op wisselstroom
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chroom 114
- Optimaliseer JavaScript
- getCurrentTexture() op een niet-geconfigureerd canvas genereert InvalidStateError
- WGSL-updates
- Dawn-updates