Filterbare 32-bits float-texturen
32-bits floating-point texturen worden gebruikt om zeer nauwkeurige gegevens op te slaan, zoals HDR-afbeeldingen en dieptekaarten. Ze zijn vooral belangrijk voor GPU's die worden gebruikt in geavanceerde games en professionele toepassingen.
De ondersteuning voor filterbare 32-bits float-texturen beschrijft het vermogen van een GPU om 32-bits floating-point-texturen te filteren. Dit betekent dat de GPU de randen van floating-point-texturen kan gladmaken, waardoor ze minder gekarteld lijken. Het is vergelijkbaar met de "OES_texture_float_linear"-extensie in WebGL.
Niet alle GPU's ondersteunen filterbare 32-bits float-texturen. Wanneer de functie "float32-filterable" beschikbaar is in een GPUAdapter , kunt u nu een GPUDevice met deze functie aanvragen en texturen filteren met de formaten "r32float", "rg32float" en "rgba32float". Zie het volgende voorbeeld en issue dawn:1664 .
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-filterable")) {
throw new Error("Filterable 32-bit float textures support is not available");
}
// Explicitly request filterable 32-bit float textures support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-filterable"],
});
// Create a sampler with linear filtering.
const sampler = device.createSampler({
magFilter: "linear",
});
// Create a texture with rgba32float format.
const texture = device.createTexture({
size: [100, 100],
format: "rgba32float",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with sampler and texture and
// send the appropriate commands to the GPU....
unorm10-10-10-2 vertex-formaat
Een nieuw vertexformaat genaamd "unorm10-10-10-2", ook wel bekend als "rgb10a2", is toegevoegd aan de WebGPU-specificatie . Het bestaat uit één gecomprimeerde 32-bits waarde met vier genormaliseerde niet-negatieve gehele getallen, gerangschikt als 10 bits, 10 bits, 10 bits en 2 bits. Zie het volgende voorbeeld en issue dawn:2044 .
// Define the layout of vertex attribute data with unorm10-10-10-2 format.
const buffers = [
{
arrayStride: 0,
attributes: [
{ format: "unorm10-10-10-2", offset: 0, shaderLocation: 0 },
],
},
];
// Describe the vertex shader entry point and its input buffer layouts.
const vertex = {
module: myVertexShaderModule,
entryPoint: "main",
buffers,
};
// Pass vertex to device.createRenderPipeline() and
// use vec4<f32> type in WGSL shader code to manipulate data.
rgb10a2uint textuurformaat
Een nieuw textuurformaat genaamd "rgb10a2uint" is toegevoegd aan de WebGPU-specificatie . Het bestaat uit een 32-bits gecomprimeerd pixelformaat met vier niet-negatieve gehele getallen: 10-bits rood, 10-bits groen, 10-bits blauw en 2-bits alfa. Zie het volgende voorbeeld en issue dawn:1936 .
// Create a texture with rgb10a2uint format.
const texture = device.createTexture({
size: [100, 100],
format: "rgb10a2uint",
usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.TEXTURE_BINDING,
});
// Write data to texture, create a bindgroup with texture and
// send the appropriate commands to the GPU....
Dawn-updates
Met behulp van tijdstempelquery's kunnen WebGPU-applicaties nauwkeurig (tot op de nanoseconde) meten hoeveel tijd hun GPU-opdrachten nodig hebben om te worden uitgevoerd. De API-structuur voor het vastleggen van tijdstempelquery's aan het begin en einde van passes is bijgewerkt om te voldoen aan de WebGPU-specificatie. Zie het volgende voorbeeld en issue dawn:1800 .
// Create a timestamp query set that will store the timestamp values.
wgpu::QuerySetDescriptor querySetDescriptor = {
.count = 2,
.type = wgpu::QueryType::Timestamp};
wgpu::QuerySet querySet = device.CreateQuerySet(&querySetDescriptor);
wgpu::RenderPassTimestampWrites timestampWrites = {
.querySet = querySet,
.beginningOfPassWriteIndex = 0,
.endOfPassWriteIndex = 1};
wgpu::ComputePassDescriptor pass{.timestampWrites = ×tampWrites};
// Write the queue timestamp into beginningOfPassWriteIndex and
// endOfPassWriteIndex of myQuerySet respectively before and after the pass
// commands execute.
myEncoder.BeginComputePass(&pass);
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
- WGSL subgroup_id-extensie
- WGSL uniform_buffer_standard_layout-extensie
- WebGPU op Linux
- Snellere writeBuffer en writeTexture
- Dawn-updates
Chrome 143
- Textuurcomponent swizzel
- Verwijder het gebruik van de alleen-lezen opslagtextuur bgra8unorm
- Dawn-updates
Chrome 142
Chrome 141
- Tint IR voltooid
- Analyse van gehele getallenbereiken in de WGSL-compiler
- SPIR-V 1.4-update voor Vulkan-backend
- Dawn-updates
Chrome 140
- Apparaatverzoeken verbruiken de adapter.
- Verkorte notatie voor het gebruik van texturen waar de textuurweergave wordt gebruikt.
- WGSL textureSampleLevel ondersteunt 1D-texturen.
- Het gebruik van de alleen-lezen opslagtextuur bgra8unorm wordt afgekeurd.
- Verwijder het isFallbackAdapter-attribuut van GPUAdapter.
- Dawn-updates
Chrome 139
- Ondersteuning voor 3D-texturen in de gecomprimeerde formaten BC en ASTC.
- Nieuwe functie voor "kernfuncties en -beperkingen".
- Origin-proefversie voor WebGPU-compatibiliteitsmodus
- Dawn-updates
Chrome 138
- Verkorte notatie voor het gebruik van buffer als bindingsbron.
- De vereiste grootte voor buffers die bij de aanmaak worden toegewezen, verandert.
- Architectuurrapport voor recente GPU's
- Het attribuut `isFallbackAdapter` van GPUAdapter wordt afgeschaft.
- Dawn-updates
Chrome 137
- Gebruik de textuurweergave voor het binden van externe texturen.
- Buffers kopiëren zonder specificatie van offsets en grootte.
- WGSL workgroupUniformLoad gebruikt een pointer naar een atomisch object.
- GPUAdapterInfo PowerPreference-attribuut
- Verwijder het compatibilityMode-attribuut van GPURequestAdapterOptions
- Dawn-updates
Chrome 136
- GPUAdapterInfo isFallbackAdapter-attribuut
- Verbeteringen in de compilatietijd van shaders in D3D12
- Canvasafbeeldingen opslaan en kopiëren
- Compatibiliteitsmodusbeperkingen opheffen
- Dawn-updates
Chrome 135
- Maakt het mogelijk om een pipeline-layout te creëren met een null-bindgroep-layout.
- Sta toe dat viewports buiten de grenzen van de render targets uitsteken.
- Gemakkelijkere toegang tot de experimentele compatibiliteitsmodus op Android.
- Verwijder de maxInterStageShaderComponents-limiet
- Dawn-updates
Chrome 134
- Optimaliseer machine learning-workloads met subgroepen.
- Verwijder de ondersteuning voor filterbare textuurtypen met zwevende deeltjes als mengbaar.
- Dawn-updates
Chrome 133
- Aanvullende unorm8x4-bgra- en 1-component-vertexformaten
- Sta toe dat onbekende limieten worden aangevraagd met een ongedefinieerde waarde.
- Wijzigingen in de WGSL-uitlijningsregels
- WGSL-prestatieverbeteringen met discard-effect
- 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.
- Opschoning van experimentele subgroepfuncties
- De limiet maxInterStageShaderComponents wordt afgeschaft.
- Dawn-updates
Chrome 132
- Gebruik van textuurweergave
- 32-bits float-texturen mengen
- GPUDevice adapterInfo-attribuut
- Het configureren van de canvascontext met een ongeldig formaat veroorzaakt een JavaScript-fout.
- Beperkingen van de sampler op texturen filteren
- Uitgebreide subgroepsexperimenten
- Verbetering van de ontwikkelaarservaring
- Experimentele ondersteuning voor 16-bits genormaliseerde textuurformaten
- Dawn-updates
Chrome 131
- Clipafstanden in WGSL
- GPUCanvasContext getConfiguration()
- Punt- en lijnprimitieven mogen geen dieptevoorkeur hebben.
- Inclusieve scan met ingebouwde functies voor subgroepen
- Experimentele ondersteuning voor indirecte meervoudige trekking
- Shadermodule-compilatieoptie strikte wiskunde
- Verwijder GPUAdapter requestAdapterInfo()
- Dawn-updates
Chrome 130
- Mengen met twee bronnen
- Verbeteringen in de compilatietijd van shaders op Metal
- De functie GPUAdapter requestAdapterInfo() wordt afgeschaft.
- Dawn-updates
Chrome 129
Chrome 128
- Experimenteren met subgroepen
- Het instellen van dieptevoorkeur voor lijnen en punten wordt afgeraden.
- Verberg niet-vastgelegde DevTools-foutwaarschuwing als preventDefault is ingeschakeld.
- WGSL interpoleert eerst de bemonstering en of
- Dawn-updates
Chrome 127
- Experimentele ondersteuning voor OpenGL ES op Android
- GPUAdapter-info-attribuut
- Verbeteringen in de interoperabiliteit met WebAssembly
- Verbeterde fouten in de commando-encoder
- Dawn-updates
Chrome 126
- Verhoog de maxTextureArrayLayers-limiet
- Buffer-uploadoptimalisatie voor Vulkan-backend
- Verbeteringen in de compilatietijd van shaders
- De ingediende commandobuffers moeten uniek zijn.
- Dawn-updates
Chrome 125
Chrome 124
- Alleen-lezen en lees-schrijf opslagtexturen
- Ondersteuning voor servicepersoneel en deeltijdwerkers
- Nieuwe adapterinformatie-attributen
- Bugfixes
- Dawn-updates
Chrome 123
- Ondersteuning voor ingebouwde DP4a-functies in WGSL.
- Onbeperkte pointerparameters in WGSL
- Syntactische suiker voor het dereferentiëren van samengestelde typen in WGSL
- Aparte alleen-lezen-status voor stencil- en diepteaspecten
- Dawn-updates
Chrome 122
- Vergroot uw bereik met de compatibiliteitsmodus (functie in ontwikkeling).
- Verhoog de maxVertexAttributes-limiet
- Dawn-updates
Chrome 121
- WebGPU-ondersteuning op Android
- Gebruik DXC in plaats van FXC voor shadercompilatie op Windows.
- Tijdstempelquery's in de reken- en weergavefasen
- Standaard toegangspunten tot shadermodules
- Ondersteuning voor display-p3 als GPUExternalTexture-kleurruimte
- Informatie over geheugenhops
- Dawn-updates
Chrome 120
- Ondersteuning voor 16-bits drijvende-kommawaarden in WGSL
- Verleg de grenzen
- Wijzigingen in de diepte-sjabloonstatus
- Updates van adapterinformatie
- Tijdstempelquery's kwantisering
- Kenmerken van de voorjaarsschoonmaak
Chrome 119
- Filterbare 32-bits float-texturen
- unorm10-10-10-2 vertex-formaat
- rgb10a2uint textuurformaat
- Dawn-updates
Chrome 118
- Ondersteuning voor HTMLImageElement en ImageData in
copyExternalImageToTexture() - Experimentele ondersteuning voor lees-schrijf- en alleen-lezen-opslagtexturen
- Dawn-updates
Chrome 117
- Vertexbuffer niet ingesteld
- Bindingsgroep niet instellen
- Onderdruk fouten bij het aanmaken van asynchrone pipelines wanneer het apparaat verloren gaat.
- Updates over het maken van SPIR-V shader-modules
- Verbetering van de ontwikkelaarservaring
- Caching-pipelines met automatisch gegenereerde lay-out
- Dawn-updates
Chrome 116
- WebCodecs-integratie
- Verloren apparaat geretourneerd door GPUAdapter
requestDevice() - Zorg ervoor dat de videoweergave soepel blijft als
importExternalTexture()wordt aangeroepen. - conformiteit met specificaties
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chrome 115
- Ondersteunde WGSL-taalextensies
- Experimentele ondersteuning voor Direct3D 11
- De aparte grafische kaart wordt standaard ingeschakeld bij gebruik van netstroom.
- Verbetering van de ontwikkelaarservaring
- Dawn-updates
Chrome 114
- Optimaliseer JavaScript
- getCurrentTexture() op een niet-geconfigureerd canvas geeft een InvalidStateError.
- WGSL-updates
- Dawn-updates