Відкладена відмінна нормальна проблема


11

Я працюю над системою відкладеної відмітки. Поки я закінчив проекційну частину, тобто я можу щось натиснути на сцені, і вона належним чином спроектує відмітку на поверхню об'єкта.

Є ще кілька речей, які я хочу додати до цієї системи: нормальне відсікання та звичайні нанесені напис відмітки. Звичайна обрізка - це коли я відкидаю фрагменти, розтягнуті під гострим кутом. Бачив тут . Спосіб вирішити це - відкинути фрагменти, які мають велику різницю між нормальним в G-буфері та нормальним для відмітки. Це вимагає зчитування нормальної текстури буфера G.

Для того, щоб зробити відмітнення нормального відображення, мені потрібно змішати нормальну табличку (із звичайної карти) з нормальною для G-буфера. Запис вимагає нормальної текстури буфера G.

Я сподіваюсь, що зрозуміло, що для підтримки цих двох функцій мені потрібно прочитати та записати нормальну текстуру в одному шейдері. На жаль, це невизначена поведінка, тому мені цікаво, чи є ще якийсь спосіб реалізувати ці функції.

Відповіді:


1

Яку систему візуалізації ви використовуєте? Наступна інформація повинна бути дійсною для всіх систем візуалізації, але у версіях DX11 або пізніших OpenGL може бути кращим рішенням з використанням БПЛА.

-

Вам доведеться скопіювати звичайний буфер перед кожним проходом. Поки ви знаєте, що відмітні знаки не змінюють однакові фрагменти екранного простору, вам не доведеться оновлювати копію.

Ви також можете передати всі відмітки у окремі буфери і лише одна суміш перейти у ваш звичайний буфер, використовуючи одну звичайну буферну копію. Це було б набагато краще, якщо ви маєте кількість ярликів.

Поки ви не пишете звичайний буфер, наприклад, виконайте лише звичайне відсікання, як ви його називаєте, ви можете просто взяти вибірку оригінального нормального буфера, але ви не можете прив’язати його як ціль візуалізації.

У DX9 я виявив, що читання та запис з тією ж текстурою призводить до очікуваного виходу, якщо ви використовуєте лише найближчу точку фільтрації та ніколи не читаєте інший піксель, ніж той, який ви зараз пишете, АЛЕ! Оскільки це невизначена поведінка, можуть бути драйвери та графічні картки, які не так поводяться. DX10 не дозволить вам це робити, розв’язуючи текстури, які в даний час пов'язані як цілі візуалізації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.