Os vértices são reprocessados ​​por poli para malhas indexadas?

8

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?

russ
fonte

Respostas:

5

A expressão chave que você pode estar procurando é "Cache pós-transformação" .

Isso geralmente é eficaz devido à reutilização natural do vértice, mas reordenando sua malha, por exemplo, com o método de Hoppe (nota: a página também lista alguns trabalhos mais recentes) ou os de Forsyth podem melhorar ainda mais as coisas.

Simon F
fonte
11
Sim, é esse. Obrigado. :-) Eu tenho feito Marching Cubes indexados em volumes bastante grandes e fiquei curioso sobre como eles estavam sendo renderizados, pois a localização do vértice é muito ruim entre as fatias. Faz sentido armazenar em cache os vértices em algum lugar (acho que apenas no cache L1 / 2 padrão?). Minhas malhas provavelmente estão fora de ordem o suficiente para reprocessar muitos vértices; portanto, analisarei esses algoritmos.
russ
4

Isso depende de quão distantes os vértices são reutilizados.

Por exemplo, o quadrado 0, 1, 2, 2, 1, 3terá um intervalo suficientemente curto para que os vértices 1e 2sejam 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.

catraca arrepiante
fonte