Вопросы отложенного затенения
У меня просто есть несколько вопросов об отложенном затенении. Я дошел до того, что у меня есть Color, Position,Normal и текстуры из Multiple Render Targets. Мои вопросы относятся к тому, что я делаю дальше. Чтобы убедиться, что я получил правильные данные из текстур, я поместил плоскость на экран и отобразил текстуры на эту плоскость. Чего я не понимаю, так это как манипулировать этими текстурами, чтобы окончательный результат был затенен освещением. Нужно ли визуализировать плоскость или квад, который занимает экран и применить все вычисления к этой плоскости? Если я сделаю это, я немного растерялся, когда смог бы заставить работать несколько источников света, поскольку "плоскость" была бы визуализируемым объектом, поэтому для каждого источника света мне нужно было бы повторно визуализировать плоскость. Я думаю об этом неправильно?
1 ответ
Вы должны визуализировать некоторую геометрию, чтобы представить область, покрытую светом (ами). Термин освещения для каждого пикселя света накапливается в целевом объекте рендеринга. Это дает вам ваш блестящий результат.
Есть разные способы сделать это. Чтобы начать работу, простой / легкий (и чертовски медленный) метод состоит в том, чтобы визуализировать полноэкранный квад для каждого источника света.
В принципе:
- Настройка: рендеринг всех объектов в g-буфер, сохраняя различные свойства объекта (альбедо, зеркальность, нормали, глубина, все, что вам нужно)
- Освещение: для каждого освещения:
- Отобразите некоторую геометрию, чтобы представить область, которую свет собирается покрыть на экране
- Пример g-буфера для данных, необходимых для расчета вклада освещения (вы можете использовать регистр vpos, чтобы найти значение uv)
- Накапливать термин освещения в целевой объект рендеринга (для простых случаев бэкбуфер будет полезен)
Как только вы это заработаете, есть множество способов ускорить его (ножничный прямоугольник, сетки, которые тесно связывают свет, трафаретные тесты, чтобы избежать затенения "плавающих" областей, одновременное рисование нескольких источников света и техники более высокого уровня, такие как мозаика).).
В настоящее время существует много разных слотов по отложенному затенению, но оригинальная техника подробно описана здесь: http://http.download.nvidia.com/developer/presentations/2004/6800_Leagues/6800_Leagues_Deferred_Shading.pdf