Qual é a diferença entre o mapeamento de tesselação e deslocamento / bump?

2

Como pode ser lido aqui, o mapeamento de deslocamento é, em alguns casos, um "substituto melhor" para o mapeamento de relevo, O mosaico é baseado no mapeamento de deslocamento. Então qual é a principal diferença entre esses 3? A tesselação de alguma forma requer menos uso de memória ou núcleo da GPU, tem modelos de aparência mais suaves? Qual deles realmente afeta a geometria do objeto?

    
por NightKn8 12.11.2013 / 11:36

1 resposta

5

O mosaico em termos gerais é apenas subdividir uma determinada geometria em vários blocos (geralmente triângulos)

O que você faz referência é o estágio de sombreamento de tesselação introduzido no Direct X11 e no OpenGL 4.

A unidade de sombreamento de tesselação obtém como entrada uma malha arbitrária (como um quad, triângulo, linha, ..) e pode subdividi-la dinamicamente em várias primitivas. Por exemplo, com base no fato de até que ponto uma quadra de uma malha está longe da câmera e se ela pode ser vista pelo espectador, pode-se dizer descartar completamente a quadra, apenas lidar com ela como 2 triângulos ou até mesmo com 8192 triângulos.

No mapeamento Bump, você renderiza um quad e fornece uma textura com mais informações, você ainda renderiza como um quad único, mas parece que ele seria mais detalhado. Por exemplo. calculando a iluminação do objeto "real" a partir de uma textura adicional e aplique-o ao quad. O gráfico em seu artigo mencionado demonstra isso muito bem:

link

Você vê, o objeto de mapeamento de relevo ainda é uma esfera, mesmo que pareça que tem lombadas devido a sombras corretas aplicadas.

Por outro lado, o mapeamento de deslocamento realmente transforma os vértices de malha com base em uma textura, não apenas agindo como teria sido transformado e fazendo outras computações como a iluminação com essa informação. Isto vem ao alto custo de maneira mais primitiva (vértices) a ser renderizada. Para pegar a afirmação anterior, para ver sua malha em resolução total, você teria que renderizar 8192 triângulos ao invés de apenas um quad para todos os quads em sua malha, então você precisaria renderizar tudo na mais alta resolução e fazer a renderização para 4000 vezes mais lento.

Neste ponto, o estágio de sombreamento de tesselação entra no jogo. Você diz dinamicamente quais partes da malha serão subdivididas, por exemplo, com base no ponto de vista atual e, em seguida, use um mapa de deslocamento para tornar o objeto mais realista. Assim, partes da malha serão resolutamente altas e terão muitos detalhes devido ao mapa de deslocamento e outras serão apenas renderizadas em resolução muito baixa e, portanto, muito rápidas. Então essa já é a história.

    
por 12.11.2013 / 12:31