Так же с помощью буфера трафарета. Шейдер источника света будет брать пиксель из буфера цвета и добавлять к нему свой цвет. Или типо нельзя одновременно рендерить и читать из текстуры?
Никак не пойму, почему нельзя обойтись двумя отрисовками всех объектов: 1) глубина, нормали 2) цвет. Ну а затем ренедерим шары источников света в буфер цвета, используя буферы из 1. В итоге есть готовая текстура — ее мы показываем полноэкранным квадом.
Мне стало страшнее жить, когда я начал узнавать как это все работает на уровне аппаратуры. До какого-то момента в чем, а в этом уровне был уверен и, так сказать, не лез туда. Оказалось там не все так строго, как я представлял. Потом уже я узнал, что процессор может в какой-то момент выкинуть исключение Macine Check и сказать «гудбай». Кэш память, прогнозирование переходов, спекулятивное исполнение — все это, казалось бы, обходные пути, однако это все работает на большинстве процессоров.
Еще забавен тот факт, что сложение двух чисел на C++ в некоторых случаях undifined behaviour (чисто теоретически может отформатировать жесткий диск):D
В википедии как раз указана сумма:
Ambient мы сохраняем в текстуру и потом постепенно добавляем диффузные и бликовые составляющие для каждого источника. Что-то тут не то.
Еще забавен тот факт, что сложение двух чисел на C++ в некоторых случаях undifined behaviour (чисто теоретически может отформатировать жесткий диск):D