He estado trabajando en un sistema de calcomanías diferidas. Hasta ahora he terminado la parte de proyección, lo que significa que puedo hacer clic en algo en la escena y proyectará correctamente una calcomanía en la superficie del objeto.
Hay un par de otras cosas que deseo agregar a este sistema: recorte normal y calcomanías mapeadas normales. El recorte normal es cuando descarto fragmentos que se estiran en un ángulo agudo. Visto aquí . Una forma de resolver esto es descartar fragmentos que tienen una gran diferencia entre lo normal en el G-Buffer y lo normal de la calcomanía. Esto requeriría leer la textura normal del G-buffer.
Para hacer un mapeo normal de calcomanías, necesito mezclar la calcomanía normal (de un mapa normal) con la normal del G-buffer. El requiere escribir en la textura normal del G-buffer.
Espero que esté claro que para admitir estas dos características, necesito leer y escribir en la textura normal en el mismo paso de sombreado. Lamentablemente, este es un comportamiento indefinido, por lo que me pregunto si hay alguna otra forma de implementar estas características.