Wat is er nieuw in WebGPU (Chrome 142)

François Beaufort
François Beaufort

Gepubliceerd: 22 okt. 2025

Uitgebreide ondersteuningsmogelijkheden voor textuurformaten

Met de nieuwe GPU-functie "texture-formats-tier1" kunnen ontwikkelaars bestaande content naar het web porteren zonder deze te hoeven herschrijven voor de beperkte mogelijkheden van WebGPU. De functie ondersteunt de nieuwe textuurformaten "r16unorm" , "r16snorm" "rg16unorm" "rg16unorm", "rg16snorm" , "rgba16unorm" en "rgba16snorm" met renderkoppeling, blendable, multisampling en "read-only" of "write-only" opslagtextuurtoegang. Ook bestaande textuurformaten "r8snorm" , "rg8snorm" en "rgba8snorm" zijn beschikbaar met renderkoppeling, blendable, multisampling en resolvemogelijkheden. Meer textuurformaten kunnen ook worden gebruikt met "read-only" of "write-only" opslagtextuurtoegang.

De nieuwe GPU-functie "texture-formats-tier2" maakt "read-write" -toegang tot opslagtexturen mogelijk voor specifieke formaten, cruciaal voor projecten zoals het porten van Unreal Engine naar het web. Houd er rekening mee dat het inschakelen van "texture-formats-tier2" bij het aanmaken van het apparaat automatisch "texture-formats-tier1" activeert.

Zie het volgende fragment en de chromestatus-invoer .

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 primitieve (bijvoorbeeld een punt, lijn of driehoek) die door een fragmentshader wordt verwerkt, eenduidig ​​identificeert. Deze begint bij 0, wordt met 1 verhoogd na elke verwerking van de primitieve en wordt na elke getekende instantie weer op 0 gezet.

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

Het volgende codefragment toont een fragmentshader die de 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 zie de vermelding chromestatus .

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

Dawn-updates

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

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

Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de volledige lijst met commits .

Wat is er nieuw in WebGPU

Een lijst met alles wat in de serie Wat is er nieuw in WebGPU is behandeld.

Chroom 142

Chroom 141

Chroom 140

Chroom 139

Chroom 138

Chroom 137

Chroom 136

Chroom 135

Chroom 134

Chroom 133

Chroom 132

Chroom 131

Chroom 130

Chroom 129

Chroom 128

Chroom 127

Chroom 126

Chroom 125

Chroom 124

Chroom 123

Chroom 122

Chroom 121

Chroom 120

Chroom 119

Chroom 118

Chroom 117

Chroom 116

Chroom 115

Chroom 114

Chroom 113