2014-10-15 1 views
2

Я разрабатываю основанное на Embree ray tracer (в настоящее время очень раннее развитие). Если вы не знакомы с Embree, вы можете прочитать больше на своем webpage.Черные линии Artifact на сетке raytraced (с Embree)

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

Issue Screenshots параметры Снимок экрана камеры (все в луче в режиме пакетной передачи):

  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

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

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

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

Edit:

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

Edit 2:

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

ответ

2

Решено.

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

 Смежные вопросы

  • Нет связанных вопросов^_^