Condividi tramite


Visualizzazioni ordine rasterizzatore

Le visualizzazioni ordinate del rasterizzatore consentono al codice pixel shader di contrassegnare le associazioni UAV con una dichiarazione che modifica i requisiti normali per l'ordine dei risultati della pipeline grafica per le UAV. Ciò consente il funzionamento degli algoritmi OIT (Order Independent Transparency), che offrono risultati di rendering molto migliori quando più oggetti trasparenti sono allineati tra loro in una visualizzazione.

Panoramica

Le pipeline grafiche standard potrebbero avere problemi durante la composizione corretta di più trame contenenti trasparenza. Oggetti come recinzioni di filo, fumo, fuoco, vegetazione e vetro colorato utilizzano la trasparenza per ottenere l'effetto desiderato. I problemi si verificano quando più trame che contengono trasparenza sono in linea tra loro (fumo davanti a una recinzione davanti a un edificio in vetro contenente vegetazione, ad esempio). Le visualizzazioni ordinate del rasterizzatore consentono agli algoritmi OIT sottostanti di usare le funzionalità dell'hardware per tentare di risolvere correttamente l'ordine di trasparenza. La trasparenza viene gestita dal pixel shader.

Le visualizzazioni ordinate del rasterizzatore consentono al codice pixel shader di contrassegnare le associazioni UAV con una dichiarazione che modifica i requisiti normali per l'ordine dei risultati della pipeline grafica per le UAV.

Le ROV garantiscono l'ordine degli accessi UAV per qualsiasi coppia di chiamate di pixel shader sovrapposte. In questo caso la "sovrapposizione" indica che le chiamate vengono generate dalle stesse chiamate di disegno e condividono la stessa coordinata pixel in modalità di esecuzione in frequenza di pixel e lo stesso pixel e la stessa coordinata campione in modalità frequenza di campionamento.

L'ordine in cui vengono eseguiti gli accessi ROV sovrapposti delle chiamate al pixel shader è identico all'ordine in cui viene inviata la geometria. Ciò significa che, per le chiamate di pixel shader sovrapposte, le scritture ROV eseguite da una chiamata di pixel shader devono essere disponibili per essere lette da una chiamata successiva e non devono influire sulle letture da una chiamata precedente. Le letture ROV eseguite da una chiamata di pixel shader devono riflettere le scritture da una chiamata precedente e non devono riflettere le scritture da una chiamata successiva. Questo aspetto è importante per le UAV perché vengono omessi in modo esplicito dalle garanzie di invarianza di output normalmente impostate dall'ordine fisso dei risultati della pipeline grafica.

Dettagli di implementazione

Le visualizzazioni ordinate rasterizzatori (ROV) vengono dichiarate con i nuovi oggetti HLSL (High Level Shader Language) seguenti e sono disponibili solo per il pixel shader:

  • RasterizerOrderedBuffer
  • RasterizerOrderedByteAddressBuffer
  • RasterizerOrderedStructuredBuffer
  • RasterizerOrderedTexture1D
  • RasterizerOrderedTexture1DArray
  • RasterizerOrderedTexture2D
  • RasterizerOrderedTexture2DArray
  • RasterizerOrderedTexture3D

Usare questi oggetti nello stesso modo di altri oggetti UAV, ad esempio RWBuffer e così via.

Riepilogo API

Le unità ROV sono un costrutto solo HLSL che applica semantica di comportamento diversi alle UAV. Tutte le API rilevanti per le UAV sono rilevanti anche per le ROV. Si noti che il metodo, le strutture e la classe helper seguenti fanno riferimento al rasterizzatore:

funzionalità di Direct3D 11.3

modello shader 5.1