и потом по очереди считать свет для каждого типа это нормально или хреново?
Например
Uniform PointLights
Uniform DirectionalLights
Uniform SpotLights
For light in PointLights
Lightning += calcLight(light)
For light in DirectionalLights
Lightning += calcLight(light)
For light in SpotLights
Lightning += calcLight(light)
Базовое решение, но пару минусов: 1. Обычно мы пытаемся для ряда пикселкй (внутри тайла/вокселя) предрассчитать какие источники света на них могут повлиять. Таким образом уходит нужда проходиться по всем источникам света для каждого пикселя. 2. Даже если у тебя не будет ни одного spotlight в сцене, у тебя все равно будут выделены регистры и прочее для расчётов по этой ветке...
Зависит. Если ты просто на весь экран передаешь, то не оптимально
У меня на стороне проца определяется какие будут рендериться, а какие нет. Типо все которые на скринспейсе будут
Обычно просто в скринпрейсе недостаточно. Можешь поделить экран на сетку, и в каждом блоке ссылаться на индексы источников, имеющий наибольшее влияние в этом блоке
Если у тебя деферред* Если форвард, можно попробовать делить на блоки в 3д с учётом удаления от камеры
Да, deferred + pbr + ibl
в каких ситуациях может оказаться больше одного directional light?
Он один, не правильно просто пример написал
у тебя какой-то ебанутый мир с двумя солнцами
Обсуждают сегодня