ps_3_0 Registri

I pixel shader dipendono dai registri per ottenere i dati dei vertici, per restituire i dati dei pixel, per contenere risultati temporanei durante i calcoli e per identificare le fasi di campionamento delle trame. Esistono diversi tipi di registri, ognuno con una funzionalità univoca. Questa sezione contiene informazioni di riferimento per i registri di input e output implementati da pixel shader versione 3_0.

Nuovi registri

Registro di input

I registri di input (v#) sono ora completamente a virgola mobile e il registro coordinate trama(t#) è stato consolidato in esso. La dcl_semantics (sm3 - ps asm) nella parte superiore del shader viene usata per descrivere ciò che è contenuto in un determinato Input_Register. Per questo modello viene introdotta una semantica per i tipi di pixel (analogamente al lato vertice). Nessun blocco viene eseguito quando i registri di input sono definiti come colori (ad esempio le coordinate della trama). La valutazione dei registri definiti come colore differisce dalle coordinate della trama durante la multicampionamento.

Registro viso

Il registro viso (vFace) è nuovo per questo modello. Si tratta di un registro scalare a virgola mobile che conterrà infine l'area primitiva. In ps_3_0, tuttavia, solo il segno di questo registro è valido. Di conseguenza, se il valore è minore di zero (il segno bit è negativo) la primitiva è la faccia posteriore (l'area è negativa, antiorario). Pertanto, in ps_3_0 ha senso confrontare questo registro rispetto a 0 (> 0 o < 0). All'interno del pixel shader, l'applicazione può prendere una decisione in base alla tecnica di illuminazione da usare. L'illuminazione a due lati può essere ottenuta in questo modo. Questo registro richiede una dichiarazione, quindi l'utilizzo non dichiarato verrà contrassegnato come errore. Per le primitive di linee e punti, questo registro non è definito. Il registro viso può essere usato solo come condizione con le istruzioni seguenti: setp_comp - ps, if_comp - ps o break_comp - ps.

Registro dei contatori ciclo

Il registro del contatore ciclo (aL) è nuovo per questo modello. Viene incrementato automaticamente in ogni esecuzione del ciclo - ps/endloop - blocco ps . Può essere usato nel blocco per l'indirizzamento relativo, se necessario. Non è valido usare Il registro del contatore ciclo all'esterno del ciclo.

Registrare posizioni

Il registro posizioni (vPos) è nuovo per questo modello. Contiene i pixel correnti (x, y) nei canali corrispondenti. I canali (z, w) non sono definiti. Questo registro richiede una dichiarazione, quindi l'utilizzo non dichiarato verrà contrassegnato come errore. Se dichiarato, questo registro deve avere esattamente una delle maschere seguenti: .x, .y, .xy, .xy.

Tipi di registro di input

Registrazione Nome Conteggio L/S # Porte di lettura # Reads/inst Dimensione RelAddr Valori predefiniti Richiede DCL
Presso # Registro di input 10 R 1 Nessuna limitazione 4 aL Nessuno
R # Registro temporaneo 32 L/S 3 Nessuna limitazione 4 No Nessuno No
c# Registro float costante 224 R 1 Nessuna limitazione 4 No 0000 No
Ho # Registro intero costante 16 R 1 1 4 No 0000 No
B # Registro booleano costante 16 R 1 1 1 No FALSE No
p0 Registro predicato 1 R 1 1 1 No Nessuno No
s # Sampler (Direct3D 9 asm-ps) 16 R 1 1 4 No Vedere la nota 1
vFace Face_Register 1 R 1 Nessuna limitazione 1 No nessuno
vPos Position_Register 1 R 1 Nessuna limitazione 4 No nessuno
aL Loop_Counter_Register 1 R 1 Nessuna limitazione 1 n/d Nessuno No

 

Note:

  • Le impostazioni predefinite per le ricerche di campionatore esistono, ma i valori dipendono dal formato della trama.

Il numero di readport è il numero di registri diversi (per ogni tipo di registro) che possono essere letti in una singola istruzione.

Tipi di registro di output

Registrazione Nome Conteggio L/S Dimensione RelAddr Valori predefiniti Richiede DCL
Oc # Registro colori di output Vedere Texture a più elementi (Direct3D 9) W 4 No Nessuno No
oDepth Registro profondità output 1 W 1 No Nessuno No

 

Registri