Eu tenho estudado um pouco o que realmente acontece no nível de hardware na GPU e encontrei o Life of a Triangle da NVidia que explica muito bem o pipeline, pelo menos para as caixas verdes. Uma coisa que eu não entendi é o que acontece com malhas indexadas, quando o mesmo vértice é usado para vários triângulos diferentes. Como os dados geralmente não são mantidos por mais tempo do que o necessário em um processador de fluxo, suponho que o vértice seja simplesmente destruído após ser rasterizado, depois buscado e executado pelo shader de vértice novamente sempre que aparecer em um novo triângulo. alguém pode confirmar isso? Além disso, o que acontece nos modos tira de linha ou tira triângulo? A GPU mantém os dados do vértice transformado em algum lugar até que as 2 ou 3 primitivas relevantes tenham sido rasterizadas nesses casos?
8
Isso depende de quão distantes os vértices são reutilizados.
Por exemplo, o quadrado
0, 1, 2, 2, 1, 3
terá um intervalo suficientemente curto para que os vértices1
e2
sejam reutilizados. Mas se houver cem vértices entre as reutilizações, é mais provável que não haja reutilização.Mas quando eles estão muito mais afastados, o vértice cai fora do cache e precisa ser reprocessado pelo sombreador de vértices.
É por isso que alguns softwares 3D têm uma maneira de melhorar a localidade de vértices para malhas indexadas reordenando os vértices.
fonte