Какой принцип в Ray Trasing рендеринге, как работает подробно?
Пара вопросов Почему он застратный по железу, а не наоборот(как мне кажется) Есть ли вершинный геометрический шейдер, отсечение по флуструму z-тесты...(если есть зачем, если автоматически это вычисляется) Что является рабочим набором, скоко потоков запускаются, по какому параметр(по w,h экрана же?)
Как мне видится простая реализация на глазок. Октодерево или BHV дерево еще можно с кривой мортана, что бы максимальный coalescing доступ к памяти был.
Рабочий набор ширина*высота экрана, для каждого пикселя запускается луч, для экрана 1000x1000 всего миллион потоков, которые выполнят поиск в иерархической структуре, примерно за 10-20 итераций проверок пересечений луча. Что воообще наносекунды времени, сам запуск ядер дольше выполнится чем нагрузка(ну почти ладно).
Плюс не надо делать трансформацию вершин(хотя это быстрая стадия), кроме преобразования в мировые, так как сам луч, делает то же самое. И координаты на экране уже известны, так как с этой точки (x,y) луч и идет, а если он что-то пересек, то эта точка и идет на экран.
Отсюда я не понимаю, почему он требователен в производительности. Значит что-то упускаю Единственное что я не рассматриваю отражения, но допустим луч еще 5 раз отрекошетит, это всю-равно на скидку очень быстро
Миллион лучей - это очень мало.
Отражение, преломление, рассеивание - это самая затратная операция как раз, тк многократно увеличивает пролёт луча и рандомно изменяет его путь.
При нехватке лучей - будет очень много шумов либо слишком тёмная картинка.
Основная проблема в том, что рейтрейсинг в том виде, что вы описали, хорошо работает разве что в мире, где все состоит из зеркальных поверхностей. Но в реальном мире практически все поверхности рассеивают свет в случайных направлениях в какой-то степени. Поэтому вам не хватит одного луча на пиксель, придется усреднить много лучей, чем больше лучей усредните, тем меньше будет шумов на картинке. Или использовать какие-нибудь хитрые вероятностные модели (Importance sampling, например).
Без этого всего освещение и поверхности не будут выглядеть реалистичными.
Почему он застратный по железу, а не наоборот(как мне кажется)
Тебя обманывает терминология скорее всего. Мы где-то в хабре уже говорили.
Существует tracing - это когда лучи идут из источника света ко всем предметам сцены.
И back-tracing, когда лучи (мнимые) идут из глаз смотрящего на сцену.
P.S. Когда мы говорим крипта - 100% подразумеваем криптовалюты. А до 2015 года я криптой
называл криптографию :)
Я же говорю. Это в первую очередь - терминологический спор. Тут нужна англоязычная
статья где термин раскрывается и потом уже можно обсуждать недостатки алгоритма.
Это как математика. Мы говорим допустим f(x) такая функция что... ит.д.
Это как бесконечные терминологические игры с потоком и нитью (thread, stream).
Их путают авторы статей. Разработчики и .. преподаватели.