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 | Sì |
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 | Sì |
vFace | Face_Register | 1 | R | 1 | Nessuna limitazione | 1 | No | nessuno | Sì |
vPos | Position_Register | 1 | R | 1 | Nessuna limitazione | 4 | No | nessuno | Sì |
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 |
Argomenti correlati