Черные линии артефакта на сетке с трассировкой лучей (с Эмбри)

Я разрабатываю трассировщик лучей на основе Embree (в настоящее время очень рано в разработке). Если вы не знакомы с Embree, вы можете прочитать больше на их страница интернета.

Проблема:
В настоящее время, если вы запускаете рендерер для использования 1 луча на пиксель и на каждую итерацию (теперь это относится к режиму 1 луча), он рендерится просто отлично. Если вы установите его, проследите 4 луча в пакете (raypacket4) он хорошо отрисовывает сетку, если вы отодвинете от нее некоторое расстояние, тогда появятся черные линии.

Выпуск скриншотов
Параметры снимка экрана камеры (все в режиме лучевого пакета):

  1. положение 0, 1, 0, вращение 20, 0, 0
  2. положение 0, 38, 0 вращение 90, 0, 0
  3. положение 9,5, 5, 0 вращение 90, 0, 0
  4. положение 9,5, 38, 0 вращение 90, 0, 0

Расследование показало, что линии появляются только в режиме паккета и при некотором удалении от сетки.
Я размещаю экраны этой проблемы (визуализированные изображения) в нескольких различных положениях камеры.
Вот исходный код проекта (на GitHub) Исходный код

Бьюсь об заклад, что проблема заключается в генерации пакетов (найден на camera.cpp/GetRayPacket4) или в рендеринге (renderer.h/RenderBuffer4, Raytrace4).
Переключение между режимами осуществляется в main.cpp, просто заменив RenderToBuffer4 с RenderToBuffer а также RTC_INTERSECT4 в RTC_INTERSECT1,

Любая помощь или идеи очень ценятся.

Редактировать:

Я прошу прощения за отсутствие конфигурационных файлов или файлов сцен, в настоящее время он находится на очень ранней стадии разработки (потрачено 2 дня), и на данный момент все жестко задано для тестирования.

Изменить 2:

Я обнаружил, что удаление + i в расчете направления луча в GetRayPacket4 устраняет проблему, но затем 4 упакованных луча идентичны. Зачем это исправить?

2

Решение

Решаемые.

Проблема заключалась в том, что __m128 хранит данные в обратном порядке, поэтому необходимо было произвести некоторую замену пикселей.

2

Другие решения