Texture a virgola mobile a 32 bit filtrabili
Le texture a rappresentazione in 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 impiegato dai comandi GPU per l'esecuzione. 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 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
- Rimuovi l'utilizzo delle texture di archiviazione di sola lettura bgra8unorm
- Aggiornamenti di Dawn
Chrome 142
- Funzionalità di supporto del formato 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
- Deprecazione dell'utilizzo delle texture di archiviazione di sola lettura bgra8unorm
- Rimuovi l'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"
- Prova dell'origine 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
- Deprecazione dell'attributo isFallbackAdapter di GPUAdapter
- Aggiornamenti di Dawn
Chrome 137
- Utilizza la visualizzazione delle texture per il binding externalTexture
- Copia dei buffer senza specificare offset e dimensioni
- workgroupUniformLoad WGSL che utilizza il puntatore ad atomico
- Attributo powerPreference di GPUAdapterInfo
- Rimuovi l'attributo compatibilityMode di GPURequestAdapterOptions
- Aggiornamenti di Dawn
Chrome 136
- Attributo isFallbackAdapter di GPUAdapterInfo
- Miglioramenti del tempo di compilazione degli shader su D3D12
- Salva e copia le immagini del canvas
- Rimuovi le 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
- Rimuovi il limite maxInterStageShaderComponents
- Aggiornamenti di Dawn
Chrome 134
- Migliora i carichi di lavoro di machine learning con i sottogruppi
- Rimuovi il 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
- Aumento del rendimento WGSL con discard
- Utilizza displaySize di VideoFrame per le texture esterne
- Gestisci le immagini con orientamenti non predefiniti utilizzando copyExternalImageToTexture
- Miglioramento dell'esperienza degli sviluppatori
- Attiva la modalità di compatibilità con featureLevel
- Pulizia delle funzionalità sperimentali dei sottogruppi
- Deprecazione 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 del canvas con un formato non valido genera un errore JavaScript
- Restrizioni del filtro del campionatore sulle texture
- Sperimentazione estesa dei sottogruppi
- Miglioramento dell'esperienza degli sviluppatori
- Supporto sperimentale per i 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 per multi-draw indirect
- Opzione di compilazione del modulo shader strict math
- Rimuovi GPUAdapter requestAdapterInfo()
- Aggiornamenti di Dawn
Chrome 130
- Blending a doppia origine
- Miglioramenti del tempo di compilazione degli shader su Metal
- Deprecazione di GPUAdapter requestAdapterInfo()
- Aggiornamenti di Dawn
Chrome 129
- Supporto HDR con la modalità di mappatura tonale del canvas
- Supporto esteso dei sottogruppi
- Aggiornamenti di Dawn
Chrome 128
- Sperimentazione con i sottogruppi
- Deprecazione dell'impostazione della distorsione di profondità per linee e punti
- Nascondi l'avviso di DevTools relativo agli errori non acquisiti se preventDefault
- Campionamento dell'interpolazione WGSL prima e dopo
- Aggiornamenti di Dawn
Chrome 127
- Supporto sperimentale per OpenGL ES su Android
- Attributo info di GPUAdapter
- Miglioramenti dell'interoperabilità di WebAssembly
- Errori del codificatore di comandi migliorati
- Aggiornamenti di Dawn
Chrome 126
- Aumenta il 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 in una sezione della texture 3D
- Aggiornamenti di Dawn
Chrome 124
- Texture di archiviazione di sola lettura e di 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 dei puntatori 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)
- Aumenta il limite maxVertexAttributes
- Aggiornamenti di Dawn
Chrome 121
- Supporto di WebGPU su Android
- Utilizza 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
- Supporta 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 i 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 per le texture di archiviazione di lettura/scrittura e di sola lettura
- Aggiornamenti di Dawn
Chrome 117
- Annulla l'impostazione del buffer dei vertici
- Annulla l'impostazione del gruppo di binding
- Disattiva gli errori della creazione asincrona della pipeline 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() - Mantieni la riproduzione video fluida se viene chiamato
importExternalTexture() - Conformità alle specifiche
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 115
- Estensioni del linguaggio WGSL supportate
- Supporto sperimentale per Direct3D 11
- Ottieni la GPU discreta per impostazione predefinita quando è collegata all'alimentazione CA
- Miglioramento dell'esperienza degli sviluppatori
- Aggiornamenti di Dawn
Chrome 114
- Ottimizza JavaScript
- getCurrentTexture() su canvas non configurato genera InvalidStateError
- Aggiornamenti di WGSL
- Aggiornamenti di Dawn