¿Detalles de lo que realmente hace la GPU cuando se recorta en un espacio homogéneo 4D?

10

Estoy aprendiendo un canal de renderizado programable mediante la implementación de un pequeño procesador de software. Intento implementarlo en un estilo de 'hardware'. Sin embargo, no estoy familiarizado con la tubería de GPU y tuve algunos problemas de recorte homogéneo.

El espacio de recorte homogéneo contiene una variable w que varía en cada vértice. ¿Se encuentra la coordenada homogénea de cada objeto de vértice (entre la matriz de proyección y la división homogénea por w) en su propio espacio de recorte? Si es así, ¿cómo recortar las líneas y triángulos más cerca del Frustum o incluso estirarse detrás de la cámara (es decir, w <= frustum_znear)?

Actualización : este hilo dice que el recorte en el espacio homogéneo es directamente un problema de intersección en el espacio homogéneo 4D. Lo que significa que el punto de intersección es p_vec4 = t * point1_vec4 + (1 - t) * point2_vec4. Digamos que tengo P0(-70, -70, 118, 120)y P1(-32, -99, -13, -11)en un espacio homogéneo 4D, y el punto de intersección con plane w = -z(que en NDC es z = -1) es (-35, -96, -1, 0.9) t = 0.99, ¿cómo obtener el objeto de vértice correspondiente en el espacio NDC?

Y una vez que obtengo el punto de intersección correcto, ¿debo hacer la interpolación entre los objetos de vértice producidos por el sombreador de vértices para obtener un nuevo objeto de vértice?

stanleyerror
fuente
Esto me parece demasiadas preguntas para una sola publicación y probablemente debería dividirse. La regla general es una sola pregunta (o al menos una pregunta clave) por publicación.
Pikalek
@Pikalek Elimino las otras dos preguntas e intento hacer que este hilo sea razonable. Gracias por su consejo.
stanleyerror

Respuestas:

1

El recorte se realiza en el espacio 3D antes de la división 'w', no en el espacio 4D.

La GPU encuentra solo los planos cercanos y lejanos, o los 6 planos 3D de la vista frustum y sujeta el Geo para esto.

Si la división w se realizara antes de que el signo de coordenadas volteara para vértices detrás del ojo / cámara.

Si solo se utilizan planos cercanos y lejanos para el recorte 3D antes de la división w, entonces puede depender únicamente del recorte 2D en la etapa de rasterización para los planos x e y.


W es solo un divisor de proyección directamente relacionado con Z, no una cuarta dimensión. La matriz 4x4 es un "truco" para incluir una división de traducción y proyección en un formato conveniente. Funciona solo porque las posiciones están implícitamente como (x, y, z, 1) y las normales están implícitas como (x, y, z, 0).

Pero en realidad no son 4 dimensiones independientes.

Cualquier otro valor para "W" que no sea 1 o 0 tiene poco sentido para la geometría, es un conveniente interruptor de encendido / apagado para desactivar la traducción.

Stephane Hockenhull
fuente
0

Si está preguntando sobre la conversión de las coordenadas homogéneas de espacio de recorte en coordenadas de coordenadas de dispositivo normalizadas (NDC), el proceso es: <x y z w> → <x/w y/w z/w>

Este GDSE Q / A sobre ¿Por qué el espacio de clip siempre se conoce como "espacio de clip homogéneo"? También puede ser útil para usted.

Pikalek
fuente
1
Gracias por tu respuesta. Sin embargo, mi problema es sobre la interpolación. Digamos que dos puntos e1, e2 bajo la coordenada del ojo 3D se proyectan en el espacio de recorte homogéneo 4D h1, h2. Luego hacemos interpolación en espacio homogéneo 4D, el segmento h1-h2 se recorta en el punto 4D h (t) = t * h1 + (1-t) * h2. Sin pérdida de generalidad, supongamos que tenemos una parte h1-h (t) (que es visible) que se alimenta a la etapa de rasterización. Por lo tanto, debemos generar las propiedades de vértice correspondientes (igual que el formato de salida del sombreador de vértices). Mi pregunta es cómo generar las propiedades de estos nuevos vértices.
stanleyerror
Entiendo que la interpolación no se realiza en HCS, pero podría estar equivocado. Si no obtiene más / mejores respuestas aquí, puede intentar volver a realizar la tarea / migrar a SO.
Pikalek
Okay. ¿Podría migrar directamente este hilo a SO, o necesito volver a abrir una nueva pregunta allí?
stanleyerror
Mi error por sugerirle que vuelva a preguntar; la publicación cruzada generalmente se desaconseja .
Pikalek
Creo que los administradores pueden migrar aunque.
Sidar