Eu tenho trabalhado em um sistema de decalque diferido. Até agora, terminei a parte da projeção, o que significa que posso clicar em algo na cena e ele projetará adequadamente um decalque na superfície do objeto.
Há algumas outras coisas que gostaria de adicionar a este sistema: recorte normal e decalques mapeados normais. O recorte normal é quando descartar fragmentos esticados em um ângulo agudo. Visto aqui . Uma maneira de resolver isso é descartar fragmentos que tenham uma grande diferença entre o normal no G-Buffer e o normal do decalque. Isso exigiria a leitura da textura normal do buffer G.
Para fazer o mapeamento normal do decalque, preciso misturar o normal do decalque (de um mapa normal) com o normal do buffer G. Isso requer a gravação na textura normal do buffer G.
Espero que fique claro que, para oferecer suporte a esses dois recursos, preciso ler e escrever na textura normal na mesma passagem de sombreador. Infelizmente, esse é um comportamento indefinido, por isso estou me perguntando se existe alguma outra maneira de implementar esses recursos.