raytracing

    0热度

    1回答

    我有一个输入为一组体素与他们的中心(x,y,z)给出。我有一套线。我想找出一个线是否与给定的体素集中的任何体素相交。 (是/否问题)。我正在使用的当前算法是遍历整个体素集,直到找到与任何体素的交集。这需要很多时间。有没有办法做得更快? 通过计算体素与线的中心距离并检查它是否小于一些小数量,我发现体素与线的交叉点。

    2热度

    1回答

    我已经使用蒙特卡洛方法实现了全局照明,使用scratch像素教程作为指导。我的最终形象非常嘈杂!下面的例子是在64个样本,我以前使用过高达512,它仍然非常嘈杂。 任何想法可能是什么问题? 编辑: 这里是128个样本和16倍超采样,产生2048个采样的输出。仍然有很多噪音!

    2热度

    1回答

    我认为这些应该是循环的。我认为我的法线有问题,但我没有发现他们有什么问题。再次,为法线找到一个好的测试是困难的。 以下是图像: 下面是每个光我的阴影代码,而忽略了对反射递归部分: lighting = (hit.obj.ambient + hit.obj.emission); const glm::vec3 view_direction = glm::normalize(eye - hi

    1热度

    1回答

    我的光线跟踪生成以下图片: 我检查法线很多次,我完全相信,这些都不是问题。有没有其他人有任何想法?

    0热度

    1回答

    我在写金属着色器。 我想要的只是访问片段的当前颜色。 例如。 在我的片段着色器,结束的时候,我把 回报currentColor + 0.1,例如 结果将屏幕从黑将白了FPS。 这是一个绘制填满屏幕的三角形条的基本程序。最终目标是在着色器内部写一个路径跟踪器,我用opengl + glsl做了这个。 我遇到了缓冲区问题。我认为一个简单的解决方案就是将当前的输出颜色传回给着色器并在那里平均。 这些都是

    2热度

    1回答

    你好我是GLSL的新手,在尝试写下面的递归调用时遇到了这个错误。我已经看到了GLSL中递归光线追踪实现的很多演示,所以我假定GLSL支持递归。 这是不是这种情况? 的OpenGL函数返回一个编译时错误消息: Error: Function trace(vec3, vec3, vec3, int) has static recursion 这是我的函数定义 vec3 trace(vec3 ori

    1热度

    2回答

    我目前正在研究Path Tracer,并且正在寻找优化我的射线三角形交点的方法。我目前使用下面的SSE4实施穆勒 - Trumbore算法: bool Ray::intersectTriangle(const Triangle tri, float& result) const { __m128 q = _mm_cross_ps(m_directionM128, tri.e2);

    0热度

    1回答

    我写我自己的3D游戏引擎(我花了一年),我想创造我的CPU上运行的光线跟踪(而不是GPU!) 就目前而言,射线追踪过程如下简化: 为每个输出像素投射射线。 如果当前射线碰到物体,设置输出像素的颜色为“白色” 否则设置为黑色 为了提高光线跟踪器的速度,我添加了一个球形边界框每个实体。如果当前射线与边界框相交,它将运行与实体的每个三角形的相交测试。 我在射线三角交点和射线点距离上使用了最快的方法,但每

    0热度

    2回答

    我的光线跟踪器目前是多线程的,我基本上将图像划分为与系统一样多的块并且使它们平行。但是,并非所有的块都具有相同的渲染时间,因此大部分时间的一半运行时间仅占CPU使用量的50%。 Code std::shared_ptr<bitmap_image> image = std::make_shared<bitmap_image>(WIDTH, HEIGHT); auto nThreads =

    6热度

    1回答

    对于射线追踪器项目,我一直在研究处理寻找光线和三角形(由三个顶点定义)之间相交的算法。到目前为止,我发现Möller-Trumbore(MT)算法是普遍使用的。 所以我的问题是1)有没有MT的替代品或算法被认为是计算交叉点的最快方法? 2)如果是,MT是否被证明是最优的?或者有人可以想象发明更快的算法? 编辑:我现在看到我的问题是非常相似的Ray-triangle intersection