Russian Qt Forum
Ноябрь 24, 2024, 14:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите разобраться в моих мыслях...  (Прочитано 4076 раз)
Fat-Zer
Гость
« : Январь 07, 2011, 11:42 »

Я не знаю даже как обозвать это всё так что просто попытаюсь выплеснуть свой поток мыслей сюда...
В общем задача с виду кажется довольно простой: управлять отрисовкой изображения(3d сцена) в отдельном(ых) потоке(ах).
Как это должно выглядеть: в главном окне нажимается кнопка, высвечивается вторая форма с прогресс баром и кнопкой отмены, по окончанию отрисовки прогрес бар скрывается, появляется картинка.
В принципе всё это было сделано(в главном окне создавался новый поток который обменивался сигналами с формой) и даже как-то работало. Но было всё это топорно, некрасиво и не давало сделать рендеринг в несколько потоков так что ныне стёрто и похоронено исключительно в моей светлой памяти.
Так вот сейчас думаю сделать так: есть некий контроллер он запускает потоки и управляет окном(вывод процентов и кнопка кенсл). Звучит всё просто, но у меня даже на бумажке не получается нарисовать как всё это будет работать...

Кто-то понял что я написал?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Январь 07, 2011, 12:06 »

Все зависит от того как Вы собираетесь рендерить 2-мя и более нитками - какую задачу(и) получит каждая?
Записан
Fat-Zer
Гость
« Ответ #2 : Январь 07, 2011, 14:30 »

Все зависит от того как Вы собираетесь рендерить 2-мя и более нитками - какую задачу(и) получит каждая?
Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадра
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Январь 07, 2011, 15:13 »

Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадра
Если у каждой свой кусок - организация банальна. Запускаете N ниток, каждая занимается своим куском и время от времени проверяет флажок "останов" который взводится главным потоком.

Кстати об обратной трассировке: просто интересно а как Вы собираетесь находить источник(и) света? Напр. шансы что луч попадет прямиком в точечный источник равны нулю  Улыбающийся
Записан
Fat-Zer
Гость
« Ответ #4 : Январь 07, 2011, 15:36 »

Обратная трассировка лучей для сцены.... каждому потоку подсовываю кусок кадра
Если у каждой свой кусок - организация банальна. Запускаете N ниток, каждая занимается своим куском и время от времени проверяет флажок "останов" который взводится главным потоком.
это понятно, только запускать не все сразу.... надо или держать запущенными 2-4 потока или запускать все и тормозить на семофоре кроме 2х-4х... С техникой у меня всё в порядке.
Я не могу придумать взаимосвязь модулей, кто за что отвечает. То есть саму логику придумать. И как все эти куски будут взаимодействовать и какие данные между ними передавать...

Кстати об обратной трассировке: просто интересно а как Вы собираетесь находить источник(и) света? Напр. шансы что луч попадет прямиком в точечный источник равны нулю  Улыбающийся
трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте...
А вообще есть модель уиттеда... тут расписано
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Январь 07, 2011, 16:43 »

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

трассируем луч до поверхности и смотрим косинус угла падения от источника света*коэффициент диффузного отражения в самом примитивном варианте...
А с распределенным источником что будете делать?

А вообще есть модель уиттеда... тут расписано
Тяжелые проблемы с биасом, да и с фильтрацией тоже. Ладно, то уже др тема/разговор.
Записан
Fat-Zer
Гость
« Ответ #6 : Январь 07, 2011, 17:13 »

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

А вообще есть модель уиттеда... тут расписано
Тяжелые проблемы с биасом, да и с фильтрацией тоже. Ладно, то уже др тема/разговор.
пока только точечные.
ничего серьёзного не делаю.... да и то что делаю толком описать не могу...да и получвется всё через то самое место...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Январь 07, 2011, 17:18 »

... да и то что делаю толком описать не могу...да и получвется всё через то самое место...
Ну для обратной трассировки это нормально (она ведь "обратная"  Улыбающийся)
А вообще если есть интерес к 3D - можем поговорить в личке
Записан
Fat-Zer
Гость
« Ответ #8 : Январь 08, 2011, 02:17 »

Спасибо за помощь, но сейчас больший интерес представляет нервное дописывание курсовой  Грустный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.132 секунд. Запросов: 23.