Quando desativar a interpolação correta da perspectiva (sem perspectiva)

13

No GLSL, a interpolação correta da perspectiva dos atributos do vértice é a configuração padrão - é possível desativá-la para atributos específicos do vértice usando o qualificador não prospectivo . Além dos shaders de pós-processamento, nunca vi a interpolação correta da perspectiva desativada - existem outros casos de uso? Além disso, isso faz diferença, em termos de desempenho?

gemse
fonte

Respostas:

15

Os casos de uso são limitados apenas pela sua imaginação! noperspectivesignifica que o atributo é interpolado pelo triângulo como se o triângulo estivesse completamente plano na superfície da tela. Você pode fazer uma renderização de wireframe sem serrilhado com isso: imprima uma distância do espaço da tela até a borda mais próxima como uma noperspectivevariação e use-a como cobertura no sombreador de pixels.

Ou, se você estiver fazendo renderizações não fotorrealistas e quiser um padrão no espaço da tela, como meio - tom , poderá ativar os noperspectiveUVs usados ​​para texturizar.

Isso faz diferença no desempenho? Provavelmente, mas você provavelmente não notará (com a possível exceção de hardware gráfico menos potente). A maioria das GPUs é composta por uma série de estágios de pipeline que são executados em paralelo e, em certo sentido, você paga apenas o custo pelo estágio mais caro. Se a rasterização for a parte mais limitadora para você, poderá ver uma diferença em relação às divisões que você está pulando por pixel. Eu acho que isso é mais provável ao renderizar um mapa de sombra ou um pré-percurso de profundidade, mas esses também têm o menor número de atributos para interpolar.

John Calsbeek
fonte