Я работал над системой отложенных наклеек. Пока что я закончил проекционную часть, то есть я могу щелкнуть что-нибудь в сцене, и он будет правильно проецировать декаль на поверхность объекта.
Есть еще несколько вещей, которые я хотел бы добавить в эту систему: нормальное вырезание и нормальные сопоставленные надписи. Обычное отсечение - это когда я отбрасываю фрагменты, которые растянуты под острым углом. Видел здесь . Чтобы решить эту проблему, нужно отбросить фрагменты, которые имеют большую разницу между нормалью в G-буфере и нормалью декаля. Это потребует чтения нормальной текстуры G-буфера.
Чтобы сделать отображение нормалей на декале, мне нужно смешать нормаль декаля (из карты нормалей) с нормалью G-буфера. Требует записи в обычную текстуру G-буфера.
Надеюсь, понятно, что для поддержки этих двух функций мне нужно читать и записывать обычную текстуру за один проход шейдера. К сожалению, это неопределенное поведение, поэтому мне интересно, есть ли какой-то другой способ реализовать эти функции.