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?
8
Eso depende de qué tan lejos estén reutilizados los vértices.
Por ejemplo, el cuadrado
0, 1, 2, 2, 1, 3
tendrá un intervalo lo suficientemente corto que los vértices1
y2
se 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.
fuente