Light Propagation
Вложений: 2
Есть такой алгоритм вычисления Global Illumination: Light Propagation Volumes.
Хочу понять как он работает. Для этого делаю 2д версию алгоритма. Вместо сферических гармоник использую просто массив лучей света во все 360 направлений. Текущий алгоритм https://bitbucket.org/dddenisss/lp/s...r.cs?at=master Функция RadiateLight распространяет свет по осевым направлениям. Причем при переносе света в каждое направление, свет разделяется 3 потока света. Центральный световой поток идет прямо по оси, на соседнюю клетку. А 1й и 3й световой поток идет по диагонали. В общем на картинке все показано. Но получается что свет идет просто в 8 направлениях и не рассеивается. А вот как его правильно рассеивать я что-то не пойму. Есть люди понимающие в этом алгоритме? Репозиторий: https://bitbucket.org/dddenisss/lp/overview |
Ответ: Light Propagation
каждая итерация должна распространять свет с прошлой, тогда такой фигни не будет.
расширил один раз квадратик - стало 8 новых квадратиков. теперь каждый из этих 8 расширяешь во все стороны, получается аля блюр. |
Ответ: Light Propagation
Цитата:
Цитата:
Цитата:
|
Ответ: Light Propagation
Цитата:
т.е. если у тебя лучи смотрят в основном направо, то при "блюре" налево, dot(налево, любой луч) будет < 0, ничего не перейдёт. |
Ответ: Light Propagation
Вложений: 2
Продолжаю экспериментировать.
Теперь растягиваю потоки света до 90 градусов. В итоге, при сильном затухании света получается что-то похожее на правду. Но если уменьшить затухание света, то получается полный бред. Может при переносе света, поток надо не равномерно растягивать, а с помощью dot уменьшать по краям. Алгоритм: https://bitbucket.org/dddenisss/lp/s...r.cs?at=master |
Часовой пояс GMT +4, время: 02:20. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot