Russian Qt Forum

Qt => Общие вопросы => Тема начата: Fat-Zer от Январь 07, 2011, 11:42



Название: Помогите разобраться в моих мыслях...
Отправлено: 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 ниток, каждая занимается своим куском и время от времени проверяет флажок "останов" который взводится главным потоком.
это понятно, только запускать не все сразу.... надо или держать запущенными 2-4 потока или запускать все и тормозить на семофоре кроме 2х-4х... С техникой у меня всё в порядке.
Я не могу придумать взаимосвязь модулей, кто за что отвечает. То есть саму логику придумать. И как все эти куски будут взаимодействовать и какие данные между ними передавать...

Кстати об обратной трассировке: просто интересно а как Вы собираетесь находить источник(и) света? Напр. шансы что луч попадет прямиком в точечный источник равны нулю  :)
трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте...
А вообще есть модель уиттеда...  тут расписано (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
Спасибо за помощь, но сейчас больший интерес представляет нервное дописывание курсовой  :(