7得票1回答
表面积启发式(SAH)kd树三角形-扁平单元。

我已经根据Wald和Havran的论文On building fast kd-Trees for Ray Tracing, and on doing that in O(N log N)实现了基于SAH的kd-tree。请注意,我没有按照他们在最后提出的建议进行剪接和合并,只是使用了SAH部分...

7得票1回答
为什么我的蒙特卡罗光线追踪结果如此嘈杂?

我已经使用蒙特卡罗方法实现了全局光照,并以Scratch a Pixel教程为指南。我的最终图像呈现出很多噪点!下面的示例是64个样本,之前我使用过高达512个样本,但仍然非常嘈杂。 有什么想法可以解决这个问题吗? 编辑: 这是使用128个样本和16倍超级采样的输出结果,共2048个样...

7得票7回答
计算机图形学:光线追踪和编程3D渲染

我注意到一些顶尖大学为计算机科学专业的学生开设了与计算机图形学相关的课程。可惜我的大学没有提供这样的课程,而我真的很想在接下来的几年里学习这方面的知识。 我发现某些大学的一些项目非常棒,但我主要对两件事情感兴趣: 光线追踪: 我希望在未来两年内编写一个光线追踪器。我需要知道什么?我还不...

7得票5回答
光线追踪:何时规范化向量?

我正在重新编写我的光线追踪器,并试图更好地理解其中某些方面。 似乎我已经掌握了关于法向量的问题,以及如何将其乘以变换矩阵的逆转置。 我困惑的是,何时应该对我的方向向量进行归一化? 我遵循某本书,有时它会明确说明需要对矢量进行归一化,而其他情况则不需要,我发现我实际上需要这样做。 归一化...

7得票2回答
高效光线追踪的数据结构/方法

我正在撰写一个3D光线追踪器作为个人学习项目(Enlight),遇到了一个与光线和场景中的物体进行交点测试相关的有趣问题。 情况是这样的: 我有许多光线可以与之相交的基元(球、盒子、平面等)和它们的组合。总体上,我称这些为场景物体。 我想能够将具有任意仿射变换的场景对象的基元包装在Tr...

7得票3回答
给定相机和视平面,求2D点的3D坐标

我希望从相机通过视平面生成光线。为了做到这一点,我需要我的相机位置(“眼睛”),上、右和朝向向量(其中朝向是从相机指向相机所看物体的方向的向量)以及P,视平面上的点。一旦我拥有了这些,生成的射线就是: ray = camera_eye + t*(P-camera_eye); 其中t是沿着...

7得票2回答
在 3D 六边形地图上进行 Raytracing(LoS)

问候, 我正在开发一个游戏项目,使用的是3D六边形地图变体。实际上,这些方块是立方体而不是六边形,但它们的布局方式与六边形相同(因为可以将正方形转换为立方体,从2D到3D进行推导,但没有六边形的3D版本)。这里有一个4x4x4地图的示例: 我已经突出显示了一个任意的瓷砖(绿色)及其相邻...

7得票2回答
通过计算着色器进行光线追踪 vs 通过屏幕四边形进行光线追踪

我最近在寻找关于OpenGL光线追踪的教程。大多数教程都使用计算着色器。我想知道为什么他们不直接渲染到纹理,然后将纹理作为四边形渲染到屏幕上。 使用计算着色器的方法与屏幕四边形相比有什么优缺点?

7得票1回答
了解 C++ constexpr 性能

我最近使用C++17的constexpr函数编写了一个编译时光线追踪器。全部源代码可以在这里查看。与此问题相关的代码如下: constexpr auto image = []() { StaticImage<image_width, image_height> i...

7得票2回答
GLSL中禁止使用递归吗?

我在尝试编写以下递归调用时遇到了这个错误。我看过很多GLSL递归光线追踪实现的演示,所以我认为GLSL支持递归。 这是否不是事实? OpenGL返回一个编译时错误消息: Error: Function trace(vec3, vec3, vec3, int) has static rec...