Я разрабатываю основанное на Embree ray tracer (в настоящее время очень раннее развитие). Если вы не знакомы с Embree, вы можете прочитать больше на своем webpage.Черные линии Artifact на сетке raytraced (с Embree)
Проблема: В настоящее время, если вы запустите средство визуализации, чтобы использовать 1 луч на пиксель и за итерацию (отныне относится к режиму с 1 лучом), он визуализирует просто отлично. Если вы установите трассировку 4 луча в пакете (raypacket4
), он отображает сетку в порядке, если вы отпустите некоторое расстояние от нее, затем появятся черные линии.
Issue Screenshots параметры Снимок экрана камеры (все в луче в режиме пакетной передачи):
- положение 0, 1, 0, вращение 20, 0, 0
- положения 0, 38, 0 вращения 90 , 0, 0
- позиции 9.5, 5, 0 вращения 90, 0, 0
- позиции 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 упакованные лучи идентичны. Почему это исправить?