Артефактные черные линии на сетке с трассировкой лучей (с Embree)

Я разрабатываю трассировщик лучей на основе 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 упакованных луча идентичны. Зачем это исправлять?


person Alexander Mladenov    schedule 15.10.2014    source источник


Ответы (1)


Решено.

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

person Alexander Mladenov    schedule 16.10.2014