Condividi tramite


Registro profondità di output

Il registro di profondità dell'output pixel shader (oDepth) è un registro scalare di sola scrittura con l'intervallo [0..1] che restituisce un nuovo valore di profondità per un test di profondità rispetto al buffer di profondità-stencil.

Sintassi

oDepth

 

Dove:

Nome Descrizione
oDepth Nuovo valore di profondità per un test di profondità rispetto al buffer di profondità-stencil

 

È importante tenere presente che la scrittura in oDepth causa la perdita di eventuali algoritmi di ottimizzazione del buffer di profondità specifici dell'hardware (ad esempio la Z gerarchica) che accelerano le prestazioni di test di profondità.

Durante la scrittura in oDepth è necessario replicare l'origine swizzle (.x | .y | .z | .w). Le maschere di scrittura esplicite non sono consentite.

La scrittura nel registro oDepth sostituisce il valore di profondità interpolato e ignora eventuali rendering di bias/pendenza di profondità. Se non è stato creato o collegato alcun buffer di profondità al dispositivo, scrivere in oDepth viene ignorato.

Se si esegue multicampionamento e si scrive in oDepth, poiché lo shader pixel viene eseguito una sola volta per pixel, il valore di profondità viene replicato per tutte le posizioni di esempio secondarie coperte. Il test di profondità viene comunque eseguito per esempio, ma non si dispone di un valore di profondità per campione che entra nel confronto dal pixel shader come se non si scrivesse oDepth.

Se un'applicazione ha un buffer w impostato come buffer di profondità, deve prendere in considerazione tale valore durante la scrittura in oDepth. È potenzialmente necessario inviare informazioni w-range al pixel shader e calcolare l'intervallo w per ridimensionare i valori w scritti in oDepth.

restrizioni ps_2_0 e ps_2_x

  • oDepth può essere scritto solo con l'istruzione mov - ps e può essere eseguita una sola volta.
  • Nessun modificatore di origine è consentito durante la scrittura in oDepth.
  • Nessun modificatore di istruzioni è consentito durante la scrittura in oDepth.
  • Nessuna scrittura in oDepth dall'interno di un costrutto di controllo del flusso o quando si usa predicazione.

restrizioni ps_3_0

  • Per ps_3_0, i registri di output oC# e oD# possono essere scritti in qualsiasi numero di volte. L'output del pixel shader proviene dal contenuto dei registri di output alla fine dell'esecuzione dello shader. Se non si verifica una scrittura in un registro di output, forse a causa del controllo flusso o se lo shader non lo scriveva, la destinazione di rendering corrispondente non viene aggiornata. Se un subset dei canali in un registro di output viene scritto, i valori non definiti verranno scritti nei canali rimanenti.
  • È possibile scrivere in oDepth all'interno del controllo del flusso o predicazione, purché tutti i percorsi possibili vengano scritti nel registro.
  • È possibile non eseguire calcoli sfumature (o operazioni che richiamano in modo implicito calcoli sfumature, ad esempio texld - ps_2_0 e up, texldb - ps, texldp - ps) all'interno delle istruzioni di controllo del flusso le cui condizioni di ramo variano in base a una base primitiva (ad esempio: istruzioni di controllo del flusso dinamico). Il predicamento delle istruzioni non è considerato controllo di flusso dinamico.

Registri