Dettagli su cosa fa effettivamente la GPU quando si ritaglia nello spazio omogeneo 4D?


10

Sto imparando una pipeline di rendering programmabile implementando un piccolo software di rendering. Cerco di implementarlo in uno stile "hardware". Tuttavia, non ho familiarità con la pipeline GPU e ho avuto alcuni problemi di clipping omogeneo.

Lo spazio di ritaglio omogeneo contiene una variabile w che varia ad ogni vertice. La coordinata omogenea di ciascun oggetto vertice (tra matrice di proiezione e divisione omogenea per w) è nel suo spazio di ritaglio? In tal caso, come tagliare le linee e i triangoli più vicini del Frustum o addirittura allungare dietro la telecamera (ovvero w <= frustum_znear)?

Aggiornamento : questo thread afferma che il ritaglio nello spazio omogeneo è direttamente un problema di intersezione nello spazio omogeneo 4D. Ciò significa che il punto di intersezione è p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4. Diciamo che ho P0(-70, -70, 118, 120)e P1(-32, -99, -13, -11)nello spazio omogeneo 4D, e il punto di intersezione con plane w = -z(che in NDC è z = -1) è (-35, -96, -1, 0.9) t = 0.99, come ottenere l'oggetto vertice corrispondente nello spazio NDC?

E una volta ottenuto il punto di intersezione corretto, dovrei eseguire l'interpolazione tra gli oggetti vertice prodotti dallo shader di vertici per ottenere un nuovo oggetto vertice?


Questo mi dà troppe domande per un singolo post e probabilmente dovrebbe essere diviso. La regola generale è una singola domanda (o almeno una domanda chiave) per post.
Pikalek,

@Pikalek Rimuovo le altre due domande e provo a rendere ragionevole questa discussione. Grazie per il tuo consiglio.
Stanleyerror,

Risposte:


1

Il ritaglio viene eseguito nello spazio 3D prima della divisione 'w', non nello spazio 4D.

La GPU trova solo i piani vicini e lontani o tutti e 6 i piani 3D del frustum della vista e ritaglia il Geo su questo.

Se la divisione w fosse eseguita prima che il segno delle coordinate si capovolgesse per i vertici dietro l'occhio / la telecamera.

Se per la clip 3D vengono utilizzati solo piani ravvicinati prima della divisione w, è possibile fare affidamento esclusivamente sul ritaglio 2D nella fase di rasterizzazione per i piani x & y.


W è solo un divisore di proiezione direttamente correlato a Z, non in realtà una quarta dimensione. La matrice 4x4 è un "hack" per includere una divisione di traduzione e proiezione in un formato conveniente. Funziona solo perché le posizioni sono implicite in (x, y, z, 1) e le normali sono implicite in essere (x, y, z, 0).

Ma in realtà non sono 4 dimensioni indipendenti.

Qualsiasi altro valore per "W" che non sia 1 o 0 ha poco senso per la geometria, è un comodo interruttore on / off per disattivare la traduzione.


0

Se stai chiedendo di convertire i cordoni omogenei dello spazio di clip in cordoni di coordinate del dispositivo (NDC) normalizzati, il processo è: <x y z w> → <x/w y/w z/w>

Questo GDSE Q / A su Perché lo spazio di clip viene sempre definito "spazio di clip omogeneo"? può anche esserti utile.


1
Grazie per la tua risposta. Tuttavia, il mio problema riguarda l'interpolazione. Dire due punti e1, e2 sotto la coordinata dell'occhio 3D vengono proiettati nello spazio di ritaglio omogeneo 4D h1, h2. Quindi eseguiamo l'interpolazione nello spazio omogeneo 4D, il segmento h1-h2 viene ritagliato nel punto 4D h (t) = t * h1 + (1-t) * h2. Senza perdita di generalità, supponiamo di avere una parte h1-h (t) (che è visibile) che si nutre allo stadio di rasterizzazione. Quindi è necessario generare le proprietà del vertice corrispondenti (lo stesso del formato di output del vertex shader). La mia domanda è: come generare le proprietà di questi nuovi vertici?
Stanleyerror,

La mia comprensione è che l'interpolazione non viene eseguita in HCS, ma potrei sbagliarmi. Se non ottieni più / migliori risposte qui, potresti provare a reasking / migrazione a SO.
Pikalek,

Ok. Potrei migrare direttamente questo thread su SO o devo riaprire una nuova domanda lì.
Stanleyerror,

Il mio errore nel suggerirti di chiedere nuovamente; il cross posting è generalmente scoraggiato .
Pikalek,

Penso che gli amministratori possano migrare comunque.
Sidar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.