Wat is er nieuw in WebGPU (Chrome 142)

François Beaufort
François Beaufort

Gepubliceerd: 22 oktober 2025

Uitgebreide ondersteuning voor textuurformaten

De nieuwe GPU-functie "texture-formats-tier1" stelt ontwikkelaars in staat bestaande content naar het web te porteren zonder deze te hoeven herschrijven voor de beperkte mogelijkheden van WebGPU. Het ondersteunt de nieuwe textuurformaten "r16unorm" , "r16snorm" , "rg16unorm" , "rg16snorm" , "rgba16unorm" en "rgba16snorm" met mogelijkheden voor render attachment, blendable, multisampling en "read-only" of "write-only" toegang tot de texturenopslag. Ook de bestaande textuurformaten "r8snorm" , "rg8snorm" en "rgba8snorm" kunnen worden ondersteund met mogelijkheden voor render attachment, blendable, multisampling en resolve. Daarnaast kunnen nog meer textuurformaten worden gebruikt met "read-only" of "write-only" toegang tot de texturenopslag.

De nieuwe GPU-functie "texture-formats-tier2" maakt "read-write" -toegang tot texturen in specifieke formaten mogelijk, wat cruciaal is voor projecten zoals het overzetten van Unreal Engine naar het web. Houd er rekening mee dat het inschakelen van "texture-formats-tier2" tijdens het aanmaken van een apparaat automatisch ook "texture-formats-tier1" inschakelt.

Zie het volgende fragment en de vermelding in chromestatus .

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

const requiredFeatures = [];
if (adapter.features.has("texture-format-tier1")) {
  requiredFeatures.push("texture-format-tier1");
}
if (adapter.features.has("texture-format-tier2")) {
  requiredFeatures.push("texture-format-tier2");
}
const device = await adapter.requestDevice({ requiredFeatures });

// Later on, when dealing with "r8unorm" texture formats for example...
if (device.features.has("texture-format-tier2")) {
  // Use "read-write" storage texture access...
} else if (device.features.has("texture-format-tier1")) {
  // Use "read-only" or "write-only" storage texture access...
} else {
  // Fallback: Use another texture format...
}

Hartelijk dank aan de mensen van Intel voor hun werk!

Primitieve index in WGSL

De primitive_index is een ingebouwde WGSL-waarde die de huidige primitief (bijvoorbeeld een punt, lijn of driehoek) die door een fragmentshader wordt verwerkt, uniek identificeert. De waarde begint bij 0, wordt met 1 verhoogd na elke verwerkte primitief en wordt tussen elke getekende instantie weer op 0 gezet.

Als de "primitive-index" -functie beschikbaar is in een GPUAdapter, vraag dan een GPUDevice aan met deze functie om ondersteuning voor primitieve indexen in WGSL te krijgen en schakel deze extensie expliciet in uw WGSL-code in met enable primitive_index; Zodra deze is ingeschakeld, kunt u de ingebouwde integerwaarde primitive_index in uw fragmentshader gebruiken om toegang te krijgen tot per-primitieve gegevens of om logica uit te voeren die bijvoorbeeld verschilt voor elke afzonderlijke geometrische vorm die wordt weergegeven.

Het volgende codefragment toont een fragmentshader die het tweede primitief in rood weergeeft en alle andere primitieven in blauw.

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("primitive-index")) {
  throw new Error("Primitive index support is not available");
}
// Explicitly request primitive index support.
const device = await adapter.requestDevice({
  requiredFeatures: ["primitive-index"],
});

const fragmentShaderModule = device.createShaderModule({ code: `
  enable primitive_index;

  @fragment
  fn main(@builtin(primitive_index) i : u32) -> @location(0) vec4f {
    if (i == 1) {
      return vec4f(1, 0, 0, 1);
    }
    return vec4f(0, 1, 0, 1);
  }`,
});
// Send the appropriate commands to the GPU...

Ontdek meer door het Primitive Picking-voorbeeld te bekijken en raadpleeg de chromestatus-pagina .

De driehoeken van het 3D-theepotmodel zijn gekleurd op basis van hun primitieve indexwaarden.
Het voorbeeld van Primitive Picking in de modus "primitieve indexen".

Dawn-updates

De CMake-variabele DAWN_BUILD_MONOLITHIC_LIBRARY die wordt gebruikt om het type monolithische bibliotheek te bepalen dat moet worden gebouwd, heeft zijn standaardwaarde gewijzigd van OFF naar STATIC , waardoor standaard de libwebgpu* -bestanden worden gegenereerd.

Dawn verwerkt wgpu::PresentMode::Undefined nu correct bij het configureren van een wgpu::Surface . Zie probleem 441410668 .

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 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