我有一个简单的光线追踪器,我前段时间做的。我现在正在尝试做的是改进它,并将其转换为分布式光线跟踪器。我要做的第一件事是发射一束光线,而不是通过每个像素的单一光线。我的束中的每一条光线都从相对像素的中心略微抖动。然后,像素的最终颜色被确定为这些光线给出的结果的平均值。我想问你的是,我得到的结果是否正确,为什么它们是正确的,或者是否有什么地方错了。下面你可以找到一些图片:
正常RayTracing:
分布式RayTracing,每个像素有10条光线:
分布式RayTracing,每个像素有10条光线,光线增加:
所以我的问题是:
1)当我从1光线切换到10光线时,我需要增加光线的强度,这正常吗?
2)第三张图片中的结果是否合理?
我猜这是错误的,原因是:我有类似的结果,而不是使用10光线,我只使用1,但总是从中心抖动。如下图所示:
提前感谢!
发布于 2015-07-23 05:46:05
分布式光线跟踪不是针对每个像素拍摄多条光线。像素非常小,通过它发射10条射线对图像没有显著影响。在分布式光线跟踪中,从交叉点拍摄多条光线,以模拟软阴影、运动模糊、光泽反射等。通过像素添加到光线的抖动实际上应应用于阴影光线。
1)当我从1光线切换到10光线时,我需要增加光线的强度,这正常吗?
这取决于您如何组合来自每条光线的颜色。如果计算每条光线的照度并对其进行平均,则像素应该不会太暗。
2)第三张图片中的结果是合理的吗?
我认为它比拍摄单条光线产生的锯齿更多。
发布于 2015-09-29 02:41:32
你用来存储颜色的物体有一个有限的范围吗?如果是这样(例如每通道8位的颜色),累积10条光线将使其最大化,然后除以10将得到较暗的颜色。您可以在添加光线之前将每条光线除以10,或者使用允许更大范围的颜色类别(浮动颜色,没有钳制到1.0,等等)。
https://stackoverflow.com/questions/31566012
复制