¿Se vuelven a procesar los vértices por poli para mallas indexadas?

8

He estado cavando un poco en lo que realmente sucede a nivel de hardware en la GPU, y encontré la Vida de un triángulo de NVidia que explica la tubería bastante bien, al menos para cajas verdes. Una cosa que no tenía claro es qué sucede con las mallas indexadas, cuando se usa el mismo vértice para un montón de triángulos diferentes. Dado que los datos generalmente no se conservan durante más tiempo del necesario en un procesador de flujo, supongo que el vértice simplemente se destruye después de ser rasterizado, luego se recupera y se ejecuta a través del sombreador de vértices cada vez que aparece en un nuevo triángulo. ¿Alguien puede confirmar esto? Además, ¿qué sucede en los modos de franja de línea o franja de triángulo? ¿La GPU persiste los datos de vértices transformados en algún lugar hasta que las 2 o 3 primitivas relevantes se han rasterizado en estos casos?

russ
fuente

Respuestas:

5

La expresión clave que puede estar buscando es "Publicar caché de transformación" .

Esto generalmente es efectivo debido a la reutilización natural de vértices, pero reordenando su malla, por ejemplo, con el método de Hoppe (nota: la página también enumera algunos trabajos más recientes) o Forsyth puede mejorar aún más las cosas.

Simon F
fuente
1
Sí, ese es el uno. Gracias. :-) He estado haciendo Cubos de marcha indexados en volúmenes bastante grandes y tenía curiosidad sobre cómo se representaban, ya que la localidad de vértices es bastante mala entre las rebanadas. Tiene sentido almacenar en caché los vértices en algún lugar (¿supongo que solo en el caché L1 / 2 estándar?). Probablemente mis mallas estén lo suficientemente desordenadas como para volver a procesar muchos vértices, así que analizaré esos algoritmos.
russ
4

Eso depende de qué tan lejos estén reutilizados los vértices.

Por ejemplo, el cuadrado 0, 1, 2, 2, 1, 3tendrá un intervalo lo suficientemente corto que los vértices 1y 2se reutilizarán. Pero si hay cien vértices entre las reutilizaciones, entonces es más probable que no haya reutilización.

Pero cuando están mucho más separados, el vértice se caerá del caché y el vértice sombreador deberá volver a procesarlo.

Esta es la razón por la cual algunos softwares 3D tienen una forma de mejorar la localidad de vértices para mallas indexadas reordenando los vértices.

monstruo de trinquete
fuente