Название: Помогите разобраться в моих мыслях... Отправлено: Fat-Zer от Январь 07, 2011, 11:42 Я не знаю даже как обозвать это всё так что просто попытаюсь выплеснуть свой поток мыслей сюда...
В общем задача с виду кажется довольно простой: управлять отрисовкой изображения(3d сцена) в отдельном(ых) потоке(ах). Как это должно выглядеть: в главном окне нажимается кнопка, высвечивается вторая форма с прогресс баром и кнопкой отмены, по окончанию отрисовки прогрес бар скрывается, появляется картинка. В принципе всё это было сделано(в главном окне создавался новый поток который обменивался сигналами с формой) и даже как-то работало. Но было всё это топорно, некрасиво и не давало сделать рендеринг в несколько потоков так что ныне стёрто и похоронено исключительно в моей Так вот сейчас думаю сделать так: есть некий контроллер он запускает потоки и управляет окном(вывод процентов и кнопка кенсл). Звучит всё просто, но у меня даже на бумажке не получается нарисовать как всё это будет работать... Кто-то понял что я написал? Название: Re: Помогите разобраться в моих мыслях... Отправлено: Igors от Январь 07, 2011, 12:06 Все зависит от того как Вы собираетесь рендерить 2-мя и более нитками - какую задачу(и) получит каждая?
Название: Re: Помогите разобраться в моих мыслях... Отправлено: Fat-Zer от Январь 07, 2011, 14:30 Все зависит от того как Вы собираетесь рендерить 2-мя и более нитками - какую задачу(и) получит каждая? Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадраНазвание: Re: Помогите разобраться в моих мыслях... Отправлено: Igors от Январь 07, 2011, 15:13 Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадра Если у каждой свой кусок - организация банальна. Запускаете N ниток, каждая занимается своим куском и время от времени проверяет флажок "останов" который взводится главным потоком. Кстати об обратной трассировке: просто интересно а как Вы собираетесь находить источник(и) света? Напр. шансы что луч попадет прямиком в точечный источник равны нулю :) Название: Re: Помогите разобраться в моих мыслях... Отправлено: Fat-Zer от Январь 07, 2011, 15:36 Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадра Если у каждой свой кусок - организация банальна. Запускаете N ниток, каждая занимается своим куском и время от времени проверяет флажок "останов" который взводится главным потоком. Я не могу придумать взаимосвязь модулей, кто за что отвечает. То есть саму логику придумать. И как все эти куски будут взаимодействовать и какие данные между ними передавать... Кстати об обратной трассировке: просто интересно а как Вы собираетесь находить источник(и) света? Напр. шансы что луч попадет прямиком в точечный источник равны нулю :) трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте...А вообще есть модель уиттеда... тут расписано (http://shackmaster.narod.ru/raytrace.htm) Название: Re: Помогите разобраться в моих мыслях... Отправлено: Igors от Январь 07, 2011, 16:43 это понятно, только запускать не все сразу.... надо или держать запущенными 2-4 потока или запускать все и тормозить на семофоре кроме 2х-4х... С техникой у меня всё в порядке. Если задачи/куски определены - какой смысл кому-то ждать на семафоре? Просто толкаете всех и ждете пока все завершатся. Другое дело подразумевается что Ваш raytracer должен быть thread-safe, как и вычисление освещенности, шейдинг и многое другое. Если у Вас не так - планирование ниток никак не поможет.Я не могу придумать взаимосвязь модулей, кто за что отвечает. То есть саму логику придумать. И как все эти куски будут взаимодействовать и какие данные между ними передавать... трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте... А с распределенным источником что будете делать?А вообще есть модель уиттеда... тут расписано Тяжелые проблемы с биасом, да и с фильтрацией тоже. Ладно, то уже др тема/разговор.Название: Re: Помогите разобраться в моих мыслях... Отправлено: Fat-Zer от Январь 07, 2011, 17:13 Если задачи/куски определены - какой смысл кому-то ждать на семафоре? Просто толкаете всех и ждете пока все завершатся. Другое дело подразумевается что Ваш raytracer должен быть thread-safe, как и вычисление освещенности, шейдинг и многое другое. Если у Вас не так - планирование ниток никак не поможет. Да... перемудрил...трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте... А с распределенным источником что будете делать?А вообще есть модель уиттеда... тут расписано Тяжелые проблемы с биасом, да и с фильтрацией тоже. Ладно, то уже др тема/разговор.ничего серьёзного не делаю.... да и то что делаю толком описать не могу...да и получвется всё через то самое место... Название: Re: Помогите разобраться в моих мыслях... Отправлено: Igors от Январь 07, 2011, 17:18 ... да и то что делаю толком описать не могу...да и получвется всё через то самое место... Ну для обратной трассировки это нормально (она ведь "обратная" :))А вообще если есть интерес к 3D - можем поговорить в личке Название: Re: Помогите разобраться в моих мыслях... Отправлено: Fat-Zer от Январь 08, 2011, 02:17 Спасибо за помощь, но сейчас больший интерес представляет нервное дописывание курсовой :(
|