Più destinazioni di rendering (Direct3D 9)

Multiple Render Targets (MRT) fa riferimento alla possibilità di eseguire il rendering in più superfici (vedere IDirect3D9Surface) con una singola chiamata di disegno. Queste superfici possono essere create indipendentemente l'una dall'altra. Le destinazioni di rendering possono essere impostate usando IDirect3DDevice9::SetRenderTarget.

Per più destinazioni di rendering sono previste le restrizioni seguenti:

  • Tutte le superfici di destinazione di rendering usate insieme devono avere la stessa profondità di bit, ma possono essere di formati diversi, a meno che non sia impostato il limite di D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS.

  • Tutte le superfici di una destinazione di rendering multipla devono avere la stessa larghezza e altezza.

  • Alcune implementazioni non possono eseguire operazioni post-pixel shader su più destinazioni di rendering, tra cui: nessun dithering, test alfa, nessun fogging, nessuna fusione o mascheramento, ad eccezione del test z e dello stencil. I dispositivi che possono supportare operazioni post-pixel shader impostano il bit limite su D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING.

    Quando viene impostato il limite di D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING, devi prima consultare IDirect3D9::CheckDeviceFormat con il risultato USAGE_QUERY_POSTPIXELSHADER_BLENDING per il formato di superficie specifico. Se false, non saranno disponibili operazioni di fusione post-pixel shader per tale formato di superficie specifico. Se true, il dispositivo deve applicare lo stesso stato a tutte le destinazioni di rendering simultanee come indicato di seguito:

    • Fusione alfa: il valore del colore in oCi viene combinato con la destinazione di rendering ith.
    • Test alfa: il confronto avviene con oC0. Se il confronto ha esito negativo, il test pixel viene terminato per tutte le destinazioni di rendering.
    • Nebbia: il target di rendering 0 verrà nebbiato. Altre destinazioni di rendering non sono definite. Le implementazioni possono scegliere di offuscarle tutte usando lo stesso stato.
    • Dithering: non definito.
  • Non è supportato alcun antialiasing.

  • Alcune implementazioni non applicano la maschera di scrittura di output (D3DRS_COLORWRITEENABLE). Quelli che possono avere maschere di scrittura di colore indipendenti. Questo valore viene espresso usando un nuovo bit di funzionalità. Il numero di maschere di scrittura di colori indipendenti disponibili sarà uguale al numero massimo di elementi di cui è in grado il dispositivo.

Nuovi limiti hardware:

D3DCAPS9.NumSimultaneousRTs         
// The value is 1 for all hardware except those that  
//   can support this feature. It is never 0.
D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS - True if the hardware can support it
D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING - True if the hardware can support it

Pixel Pipeline