Condividi tramite


registri ps_3_0

I pixel shader dipendono dai registri per ottenere i dati dei vertici, per restituire i dati dei pixel, per contenere i 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 dal pixel shader versione 3_0.

Nuovi registri

Registro di input

I registri di input (v#) sono ora completamente a virgola mobile e il registro delle coordinate della trama (t#) sono stati consolidati. Il dcl_semantics (sm3 - ps asm) nella parte superiore dello shader viene usato per descrivere ciò che è contenuto in un particolare Input_Register. Per questo modello viene introdotta una semantica per i tipi di pixel (analogamente al lato vertice). Non viene eseguito alcun blocco quando i registri di input vengono definiti come colori (ad esempio le coordinate della trama). La valutazione dei registri definiti come colore è diversa dalle coordinate della trama durante il multicampionamento.

Registro viso

Il registro dei visi (vFace) è una novità 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 bit del segno è impostato negativo), la primitiva è la faccia posteriore (l'area è negativa, antiorario). Pertanto, in ps_3_0 ha senso confrontare questo registro solo con 0 (> 0 o < 0). All'interno del pixel shader, l'applicazione può prendere una decisione sulla 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 linee e le primitive punto, questo registro non è definito. Il registro viso può essere usato solo come condizione con le istruzioni seguenti: setp_comp - ps, if_comp - pso break_comp - ps.

Registro contatore cicli

La Registro contatori cicli ( aL) è una novità per questo modello. Viene incrementato automaticamente in ogni esecuzione del ciclo - ps/endloop - ps blocco. Può essere usato nel blocco per l'indirizzamento relativo, se necessario. Non è valido usare Loop Counter Register all'esterno del ciclo.

Registro posizioni

Il registro posizioni (vPos) è una novità 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.

Tipi di registro di input

Registro Nome Contare R/W # Porte di lettura # Reads/inst Dimensione RelAddr Impostazioni predefinite Richiede DCL
v# registro di input 10 R 1 Illimitato 4 ale Nessuno
r# registro temporaneo 32 R/W 3 Illimitato 4 No Nessuno No
c# registro float costante 224 R 1 Illimitato 4 No 0000 No
io# dei registri interi costanti 16 R 1 1 4 No 0000 No
b# di registro booleano costante 16 R 1 1 1 No FALSO 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 Illimitato 1 No Nessuno
VPos Position_Register 1 R 1 Illimitato 4 No Nessuno
ale Loop_Counter_Register 1 R 1 Illimitato 1 n/a Nessuno No

 

Note:

  • Esistono valori predefiniti per le ricerche del campionatore, ma i valori dipendono dal formato di trama.

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

Tipi di registro di output

Registro Nome Contare R/W Dimensione RelAddr Impostazioni predefinite Richiede DCL
Oc# registro colori di output Vedere trame a più elementi (Direct3D 9) W 4 No Nessuno No
oDepth registrazione profondità output 1 W 1 No Nessuno No

 

registri