Texture a virgola mobile a 32 bit filtrabili
Le texture a virgola mobile a 32 bit vengono utilizzate per archiviare dati ad alta precisione, come immagini HDR e mappe di profondità. Sono particolarmente importanti per le GPU utilizzate in applicazioni di gioco e professionali di fascia alta.
Il supporto delle texture a rappresentazione in virgola mobile a 32 bit filtrabili descrive la capacità di una GPU di filtrare le texture a rappresentazione in virgola mobile a 32 bit. Ciò significa che la GPU può smussare i bordi delle texture con rappresentazione in virgola mobile, rendendole meno frastagliate. È simile all'estensione "OES_texture_float_linear" in WebGL.
Non tutte le GPU supportano le texture a virgola mobile a 32 bit filtrabili. Quando la funzionalità "float32-filterable" è disponibile in un GPUAdapter, ora puoi richiedere un GPUDevice con questa funzionalità e filtrare le texture con i formati "r32float", "rg32float" e "rgba32float". Vedi l'esempio seguente e il problema 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....
Formato dei vertici unorm10-10-10-2
È stato aggiunto un nuovo formato dei vertici denominato "unorm10-10-10-2", noto anche come "rgb10a2", alla specifica WebGPU. È costituito da un valore compresso a 32 bit con quattro valori interi senza segno normalizzati, disposti come 10 bit, 10 bit, 10 bit e 2 bit. Vedi l'esempio seguente e il problema 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.
Formato delle texture rgb10a2uint
È stato aggiunto un nuovo formato delle texture denominato "rgb10a2uint" alla specifica WebGPU. È costituito da un formato pixel compresso a 32 bit con quattro componenti interi senza segno: rosso a 10 bit, verde a 10 bit, blu a 10 bit e alfa a 2 bit. Vedi l'esempio seguente e il problema 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....
Aggiornamenti di Dawn
Le query sui timestamp consentono alle applicazioni WebGPU di misurare con precisione (fino al nanosecondo) il tempo di esecuzione dei comandi GPU. La forma dell'API per acquisire le query sui timestamp all'inizio e alla fine dei passaggi è stata aggiornata in modo che corrisponda alla specifica WebGPU. Vedi l'esempio seguente e il problema 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);
Questo articolo tratta solo alcuni dei punti salienti principali. Consulta l'elenco esaustivo dei commit.
Novità di WebGPU
Un elenco di tutti gli argomenti trattati nella serie Novità di WebGPU.
Chrome 151-152
- Controllo delle dimensioni del sottogruppo
- OperationError per gli errori di convalida di setImmediates
- Aggiornamenti di Dawn
Chrome 149-150
Chrome 147-148
Chrome 146
- Supporto della modalità di compatibilità WebGPU su OpenGL ES 3.1
- Allegati temporanei
- Estensione texture_and_sampler_let WGSL
- Aggiornamenti di Dawn
Chrome 145
- Estensione subgroup_uniformity WGSL
- Mapping dei buffer sincrono sperimentale nei worker
- Aggiornamenti di Dawn
Chrome 144
- Estensione subgroup_id WGSL
- Estensione uniform_buffer_standard_layout WGSL
- WebGPU su Linux
- writeBuffer e writeTexture più veloci
- Aggiornamenti di Dawn
Chrome 143
- Swizzle dei componenti delle texture
- Rimozione dell'utilizzo delle texture di archiviazione di sola lettura bgra8unorm
- Aggiornamenti di Dawn
Chrome 142
- Funzionalità di supporto dei formati delle texture estese
- Indice primitivo in WGSL
- Aggiornamenti di Dawn
Chrome 141
- Tint IR completato
- Analisi dell'intervallo di numeri interi nel compilatore WGSL
- Aggiornamento SPIR-V 1.4 per il backend Vulkan
- Aggiornamenti di Dawn
Chrome 140
- Le richieste di dispositivi utilizzano l'adattatore
- Abbreviazione per l'utilizzo delle texture quando viene utilizzata la visualizzazione delle texture
- textureSampleLevel WGSL supporta le texture 1D
- Ritiro dell'utilizzo delle texture di archiviazione di sola lettura bgra8unorm
- Rimozione dell'attributo isFallbackAdapter di GPUAdapter
- Aggiornamenti di Dawn
Chrome 139
- Supporto delle texture 3D per i formati compressi BC e ASTC
- Nuova funzionalità "core-features-and-limits"
- Origin trial per la modalità di compatibilità WebGPU
- Aggiornamenti di Dawn
Chrome 138
- Abbreviazione per l'utilizzo del buffer come risorsa di binding
- Modifiche ai requisiti di dimensione per i buffer mappati al momento della creazione
- Report sull'architettura per le GPU recenti
- Ritiro dell'attributo isFallbackAdapter di GPUAdapter
- Aggiornamenti di Dawn
Chrome 137
- Utilizzo della visualizzazione delle texture per il binding externalTexture
- Copia dei buffer senza specificare offset e dimensioni
- workgroupUniformLoad WGSL che utilizza il puntatore ad atomic
- Attributo powerPreference di GPUAdapterInfo
- Rimozione dell'attributo compatibilityMode di GPURequestAdapterOptions
- Aggiornamenti di Dawn
Chrome 136
- Attributo isFallbackAdapter di GPUAdapterInfo
- Miglioramenti del tempo di compilazione degli shader su D3D12
- Salvataggio e copia delle immagini canvas
- Rimozione delle limitazioni della modalità di compatibilità
- Aggiornamenti di Dawn
Chrome 135
- Consenti la creazione del layout della pipeline con il layout del gruppo di binding null
- Consenti alle finestre di visualizzazione di estendersi oltre i limiti delle destinazioni di rendering
- Accesso più facile alla modalità di compatibilità sperimentale su Android
- Rimozione del limite maxInterStageShaderComponents
- Aggiornamenti di Dawn
Chrome 134
- Miglioramento dei carichi di lavoro di machine learning con i sottogruppi
- Rimozione del supporto dei tipi di texture filtrabili a virgola mobile come combinabili
- Aggiornamenti di Dawn
Chrome 133
- Formati dei vertici unorm8x4-bgra e a 1 componente aggiuntivi
- Consenti di richiedere limiti sconosciuti con il valore undefined
- Modifiche alle regole di allineamento WGSL
- Miglioramenti delle prestazioni WGSL con discard
- Utilizzo di displaySize di VideoFrame per le texture esterne
- Gestione delle immagini con orientamenti non predefiniti utilizzando copyExternalImageToTexture
- Miglioramento dell'esperienza degli sviluppatori
- Abilitazione della modalità di compatibilità con featureLevel
- Pulizia delle funzionalità sperimentali dei sottogruppi
- Ritiro del limite maxInterStageShaderComponents
- Aggiornamenti di Dawn
Chrome 132
- Utilizzo della visualizzazione delle texture
- Blending delle texture a virgola mobile a 32 bit
- Attributo adapterInfo di GPUDevice
- La configurazione del contesto canvas con un formato non valido genera un errore JavaScript
- Restrizioni del campionatore di filtri sulle texture
- Sperimentazione estesa dei sottogruppi
- Miglioramento dell'esperienza degli sviluppatori
- Supporto sperimentale dei formati delle texture normalizzate a 16 bit
- Aggiornamenti di Dawn
Chrome 131
- Distanze di ritaglio in WGSL
- GPUCanvasContext getConfiguration()
- Le primitive di punti e linee non devono avere una distorsione di profondità
- Funzioni integrate di scansione inclusiva per i sottogruppi
- Supporto sperimentale di multi-draw indirect
- Opzione di compilazione del modulo shader strict math
- Rimozione di GPUAdapter requestAdapterInfo()
- Aggiornamenti di Dawn
Chrome 130
- Blending a doppia origine
- Miglioramenti del tempo di compilazione degli shader su Metal
- Ritiro di GPUAdapter requestAdapterInfo()
- Aggiornamenti di Dawn
Chrome 129
- Supporto HDR con la modalità di mappatura tonale canvas
- Supporto esteso dei sottogruppi
- Aggiornamenti di Dawn
Chrome 128
- Sperimentazione con i sottogruppi
- Ritiro dell'impostazione della distorsione di profondità per linee e punti
- Nascondi l'avviso di errore non acquisito di DevTools se preventDefault
- Campionamento dell'interpolazione WGSL prima e dopo
- Aggiornamenti di Dawn
Chrome 127
- Supporto sperimentale di OpenGL ES su Android
- Attributo info di GPUAdapter
- Miglioramenti dell'interoperabilità di WebAssembly
- Errori del codificatore di comandi migliorati
- Aggiornamenti di Dawn
Chrome 126
- Aumento del limite maxTextureArrayLayers
- Ottimizzazione del caricamento dei buffer per il backend Vulkan
- Miglioramenti del tempo di compilazione degli shader
- I buffer dei comandi inviati devono essere univoci
- Aggiornamenti di Dawn
Chrome 125
- Sottogruppi (funzionalità in fase di sviluppo)
- Rendering sulla sezione della texture 3D
- Aggiornamenti di Dawn
Chrome 124
- Texture di archiviazione di sola lettura e lettura/scrittura
- Supporto di service worker e worker condivisi
- Nuovi attributi delle informazioni sull'adattatore
- Correzioni di bug
- Aggiornamenti di Dawn
Chrome 123
- Supporto delle funzioni integrate DP4a in WGSL
- Parametri del puntatore senza restrizioni in WGSL
- Zucchero sintattico per la dereferenziazione dei compositi in WGSL
- Stato di sola lettura separato per gli aspetti stencil e di profondità
- Aggiornamenti di Dawn
Chrome 122
- Espandi la copertura con la modalità di compatibilità (funzionalità in fase di sviluppo)
- Aumento del limite maxVertexAttributes
- Aggiornamenti di Dawn
Chrome 121
- Supporto di WebGPU su Android
- Utilizzo di DXC anziché FXC per la compilazione degli shader su Windows
- Query sui timestamp nei passaggi di calcolo e rendering
- Punti di ingresso predefiniti per i moduli shader
- Supporto di display-p3 come spazio colore GPUExternalTexture
- Informazioni sugli heap di memoria
- Aggiornamenti di Dawn
Chrome 120
- Supporto dei valori a rappresentazione in virgola mobile a 16 bit in WGSL
- Spingiti oltre ai tuoi limiti
- Modifiche allo stato di profondità-stencil
- Aggiornamenti delle informazioni sull'adattatore
- Quantizzazione delle query sui timestamp
- Funzionalità di pulizia di primavera
Chrome 119
- Texture a virgola mobile a 32 bit filtrabili
- Formato dei vertici unorm10-10-10-2
- Formato delle texture rgb10a2uint
- Aggiornamenti di Dawn
Chrome 118
- Supporto di HTMLImageElement e ImageData in
copyExternalImageToTexture() - Supporto sperimentale delle texture di archiviazione di lettura/scrittura e di sola lettura
- Aggiornamenti di Dawn
Chrome 117
- Annullamento dell'impostazione del buffer dei vertici
- Annullamento dell'impostazione del gruppo di binding
- Silenzia gli errori della creazione della pipeline asincrona quando il dispositivo viene perso
- Aggiornamenti della creazione del modulo shader SPIR-V
- Miglioramento dell'esperienza degli sviluppatori
- Memorizzazione nella cache delle pipeline con layout generato automaticamente
- Aggiornamenti di Dawn
Chrome 116
- Integrazione di WebCodecs
- Dispositivo perso restituito da GPUAdapter
requestDevice() - Mantenimento della fluidità della riproduzione video se viene chiamato
importExternalTexture() - Conformità alle specifiche
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 115
- Estensioni del linguaggio WGSL supportate
- Supporto sperimentale di Direct3D 11
- Ottieni la GPU discreta per impostazione predefinita quando è collegata all'alimentazione CA
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 114
- Ottimizzazione di JavaScript
- getCurrentTexture() su canvas non configurato genera InvalidStateError
- Aggiornamenti di WGSL
- Aggiornamenti di Dawn