Pull to refresh

Comments 7

Я так понял, что получается некоторая схема, подобная лайтмапам. Уже давно существует алгоритм, который называется precomputed radiance transfer. Можете описать, в чем преимущество/радикальное отличие данного алгоритма от PRT? Я понимаю, что PRT существует только для world light, но а в других аспектах?
Так он (вроде) статический, а тут динамика. На каждый кадр, конечно, не наобновляешься, но растянув процесс вполне можно. По крайней мере изменения в мире он учитывать может, да и для процедурных уровней тоже удобнее, т.к. не требует препроцессинга.
Не изучал глубоко PRT, но насколько понимаю, здесь отличие в отсутствии precomputed шага, если не считать таковым вокселизацию и построение SVO, которые работают достаточно быстро.
Также алгоритм больше заточен на динамику, перестройку сцены на лету и другие вещи. Думаю, можно придумать подходы, при которых, например, можно было бы в динамике менять свойства материалов в вокселях, и это бы ничего не стоило, т.к. пересчитывая свет мы бы опирались на уже существующее SVO.
Да, пересчёт освещения довольно дорогой, но есть подходы по оптимизации.
С другой стороны, в UE4 использовали и VCT, и лайтмапы, и отдали предпочтение последним.
Спасибо за статью!

Возник вопрос по поводу самоосвещения. Направление полусферы конусов расчитывается исходя из локальной нормали, взятой из g-buffer'а, в которой уже учтены нормал мапы. Отсюда выходит, что при заметном отклонении локальной нормали от нормали к треугольнику меша часть конусов пойдет трассироваться прямиком внутрь меша. Не лучше ли будет фильтровать такие конусы, ведь ничего корректного мы из них все равно не получим?

Попробовал сам сделать это, но разница в результатах получается недостаточно очевидная, плюс я не уверен, что не накосячил с ambient occlusion при правках шейдеров.

Вот вариант без фильтрации
image

А вот с фильтрацией
image
Да, это хорошая идея в целом. Убирает некоторые артефакты.
Вообще, если начинать трассировку с самого нижнего уровня, то кроме самоосвещения может возникнуть проблема самозатенения. Здесь собраны предложения от других разработчиков, как это можно обойти.
Лучшеб рассказали про GI в Скайфордже. На реальных примерах. А то сферических Спонз в вакууме весь интернет. А GI юзают 2.5 студии.
Я рассказал про алгоритм, который исследовал в свободное время.
Про Skyforge, к сожалению, ничего не могу сказать. Возможно, вам будет интересно почитать эту статью и комментарии к ней. Но, например, AW сделан на CryEngine, в котором для GI используется Light Propagation Volumes.
Sign up to leave a comment.