Как когерентность лучей используется для улучшения скорости трассировки лучей при сохранении реалистичности? - PullRequest
2 голосов
/ 09 ноября 2011

Я рассматриваю возможность использования когерентности лучей в моем программном обеспечении для каждого пикселя в реальном времени raycaster.

AFAICT, использующий равномерную сетку, если я назначаю когерентность лучей для фрагментов, скажем, 4x4 пикселей (где в настоящее время у меня есть одинraycast на пиксель), учитывая 16 параллельных лучей с различной начальной (и конечной) точкой, как это работает в согласованной сцене?То, что я предвижу, это:

  1. Существует расстояние, в пределах которого лучевой марш будет точно таким же для соседних / похожих лучей.На этом расстоянии я экономлю на обработке.(Как я узнаю, что это за расстояние?)
  2. Я получу изображение с немного серьезным или неправильным изображением, поскольку некоторые лучи не расходятся в нужное время.

Учитывая, что мои лучи излучаются из одной точки, а не из плоскости, я предполагаю, что мне понадобится какая-то функция расщепления в соответствии с пройденным расстоянием, чтобы набор всех лучей формировал дерево при его движении наружу.Меня беспокоит то, что более мелкие детали будут потеряны при приближении к зрителю.

Полагаю, я просто не понимаю, как это предполагается использовать.

1 Ответ

2 голосов
/ 09 ноября 2011

Если все сделано правильно, когерентность лучей не должна влиять на конечное изображение. Поскольку лучи очень близко друг к другу, есть хорошее изменение, что все они будут идти по одинаковым путям при обходе структуры ускорения (kd-дерево, aabb-дерево и т. Д.). Вы должны идти вниз по каждой ветви, на которую может попасть любой из лучей, но, надеюсь, это не сильно увеличит количество ветвей и сэкономит на доступе к памяти.

Другое преимущество состоит в том, что вы можете использовать SIMD (например, SSE) для ускорения некоторых ваших тестов, как в структуре ускорения, так и в отношении треугольников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...