【问题标题】:Artifact black lines on raytraced mesh (with Embree)光线追踪网格上的伪影黑线(使用 Embree)
【发布时间】:2016-02-08 21:11:05
【问题描述】:

我正在开发基于 Embree 的光线追踪器(目前处于开发初期)。如果您不熟悉 Embree,可以通过他们的webpage 了解更多信息。

问题: 目前,如果您启动渲染器以使每个像素和每次迭代使用 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 替换为 RenderToBufferRTC_INTERSECT4RTC_INTERSECT1

非常感谢任何帮助或想法。

编辑:

对于缺少配置文件或场景文件,我深表歉意,它目前处于非常早期的开发阶段(花费了 2 天),目前所有内容都经过硬编码以供测试。

编辑 2:

我发现在 GetRayPacket4 中移除光线方向计算中的 + i 后,问题就解决了,但是 4 条打包光线是相同的。为什么会修复它?

【问题讨论】:

    标签: c++ mesh raytracing artifacts embree


    【解决方案1】:

    解决了。

    问题在于 __m128 以相反的顺序保存数据,因此必须进行一些像素交换。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      相关资源
      最近更新 更多