我正在开发一种基于Embree的光线追踪器(目前处于开发阶段)。如果您不熟悉Embree,可以在webpage上阅读更多内容。
问题:
目前,如果您启动渲染器每个像素和每次迭代使用1个光线(从现在开始称为1光线模式),它就会很好地渲染渲染器。如果你在一个数据包(raypacket4
)中设置它跟踪4条光线,它会使网格渲染得很好,你可以向它移动一些距离,然后出现一些黑线。
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
)中。
只需将RenderToBuffer4
替换为RenderToBuffer
,将RTC_INTERSECT4
替换为RTC_INTERSECT1
,即可在main.cpp中切换模式。
非常感谢任何帮助或想法。
编辑:
我为缺少配置文件或场景文件而道歉,它目前处于非常早期的开发阶段(花费2天),并且所有内容都是硬编码用于测试。
编辑2:
我发现在GetRayPacket4中的光线方向计算中删除了+ i,删除了问题,但是4个压缩光线是相同的。为什么要修复它?
答案 0 :(得分:2)
解决。
问题是__m128使数据保持相反的顺序,因此必须进行一些像素交换。