Wat is er nieuw in WebGPU (Chrome 149-150)?

François Beaufort
François Beaufort

Gepubliceerd: 17 juni 2026

Onmiddellijk

Immediates, ook wel push-constanten of root-constanten genoemd, stellen je in staat om kleine hoeveelheden vaak veranderende data rechtstreeks aan shaders door te geven. Dit proces omzeilt de overhead van het aanmaken van GPU-buffers en het beheren van bind-groepen.

Het bijwerken van uniforme bufferbindingen voor gegevens die bij elke tekenoproep veranderen – zoals een unieke object-ID of een 3D-transformatie-matrix voor honderden objecten – zorgt voor extra CPU-belasting. Injecteer onbewerkte waarden rechtstreeks in de pass-encoder om te voorkomen dat gegevens naar het geheugen worden geschreven en dat GPU-zoekopdrachten moeten worden uitgevoerd.

Directe waarden bieden een snelle manier voor kleine, zeer dynamische variabelen. Gebruik uniforme buffers of opslagbuffers voor grote data-arrays, complexe lichtstructuren of enorme matrices.

In je WGSL-shader kun je met de <immediate> -adresruimte directe gegevens definiëren die rechtstreeks aan de pass-encoder kunnen worden doorgegeven. Roep setImmediates() aan in JavaScript vóór een draw-aanroep om deze gegevens te leveren zonder een groep te binden. Om te controleren of de extensie immediate_address_space wordt ondersteund, kun je de WGSL-taalextensie detecteren via navigator.gpu.wgslLanguageFeatures . Zie het volgende voorbeeld en de beoogde release .

if (!navigator.gpu.wgslLanguageFeatures.has('immediate_address_space')) {
   throw new Error(`WGSL immediate address space is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const module = device.createShaderModule({ code: `
  requires immediate_address_space;

  var<immediate> color: vec4f;

  @vertex fn vertexMain(@builtin(vertex_index) i : u32) -> @builtin(position) vec4f {
    const pos = array(vec2f(0, 1), vec2f(-1, -1), vec2f(1, -1));
    return vec4f(pos[i], 0, 1);
  }

  @fragment fn fragmentMain() -> @location(0) vec4f {
    return color;
  }`,
});

// Create render pass encoder (omitted)...

// By using layout: 'auto', WebGPU will automatically infer the `immediateSize`
// required by the pipeline layout from the WGSL module.
const pipeline = device.createRenderPipeline({
  layout: 'auto',
  vertex: { module },
  fragment: { module, targets: [{ format }] },
});
myRenderPassEncoder.setPipeline(pipeline);

// Send immediate data to the GPU, then issue a draw call
myRenderPassEncoder.setImmediates(/*rangeOffset=*/0, new Float32Array([255, 0, 0, 255]));
myRenderPassEncoder.draw(3);
myRenderPassEncoder.end();

Voor een diepere duik in deze functie kunt u WebGPUFundamentals Immediates raadplegen.

Complimenten aan het team van Microsoft voor hun bijdragen!

Strengere validatie voor tijdelijke bevestigingen

WebGPU heeft onlangs de TRANSIENT_ATTACHMENT GPUTextureUsage-vlag geïntroduceerd, waarmee ontwikkelaars tijdelijke render-attachments kunnen creëren, zoals diepte-stencilbuffers of multisampled targets. Deze attachments blijven in het snelle, on-chip tegelgeheugen zonder dat er hoofd-VRAM wordt toegewezen.

Recente updates ( #6248 en #6267 ) verfijnen de validatieregels om misbruik van deze geheugenefficiënte textuurbijlagen te voorkomen:

  • Vanwege platformbeperkingen moet viewFormats een lege array zijn bij het aanmaken van transient textures. Alternatieve weergaveformaten zijn niet nodig, omdat transient textures alleen voor renderingdoeleinden dienen.
  • Het aanmaken van een textuurweergave beperkt de gebruiksvlaggen niet. Wanneer createView() wordt aangeroepen op een tijdelijke textuur, kan de weergave het gebruik ervan niet wijzigen.
  • Tijdelijke bijlagen kunnen niet als resolveTarget binnen een renderpass worden gebruikt.

Dawn-updates

Dit is slechts een greep uit de belangrijkste hoogtepunten. Bekijk de volledige lijst met commits .

Wat is er nieuw in WebGPU?

Een lijst van alles wat in de serie ' Wat is nieuw in WebGPU' aan bod is gekomen.

Chrome 149-150

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113