это понятно, только запускать не все сразу.... надо или держать запущенными 2-4 потока или запускать все и тормозить на семофоре кроме 2х-4х... С техникой у меня всё в порядке.
Я не могу придумать взаимосвязь модулей, кто за что отвечает. То есть саму логику придумать. И как все эти куски будут взаимодействовать и какие данные между ними передавать...
Если задачи/куски определены - какой смысл кому-то ждать на семафоре? Просто толкаете всех и ждете пока все завершатся. Другое дело подразумевается что Ваш raytracer должен быть thread-safe, как и вычисление освещенности, шейдинг и многое другое. Если у Вас не так - планирование ниток никак не поможет.
трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте...
А с распределенным источником что будете делать?
А вообще есть модель уиттеда... тут расписано
Тяжелые проблемы с биасом, да и с фильтрацией тоже. Ладно, то уже др тема/разговор.