我有一个简单的光线追踪器,我前段时间做过。我现在要做的是改进它并在分布式光线跟踪器中进行转换。我要做的第一件事就是拍摄一束光线,而不是通过每个像素拍摄一条光线。我的一束光线从相对像素的中心稍微抖动。然后将像素的最终颜色确定为这些光线给出的结果的平均值。我想问你的是,我所得到的结果是否正确以及它们是正确的或是否有问题的原因。您可以在下面找到一些照片:
正常RayTracing:
分布式RayTracing,每个像素有10条光线:
分布式RayTracing通过每个像素和10个光线增加:
所以我的问题是:
1)当我从1到10光线切换时,我需要增加光线强度是否正常?
2)第三张图片的结果是合理的吗?
我想这是错误的原因:我有相似的结果如果不使用10条射线我只使用1,但总是从中心抖动。见下图:
提前致谢!
分布式光线跟踪不是关于每像素拍摄多条光线。像素非常小,通过它拍摄10条光线对图像没有显着影响。在分布式光线追踪中,从交叉点拍摄多条光线,用于模拟柔和阴影,运动模糊,光泽反射等。通过像素添加到光线中的抖动实际上应该应用于阴影光线。
1)当我从1到10光线切换时,我需要增加光线强度是否正常?
这取决于你如何组合每条射线的颜色。如果计算每条光线的照度并对其进行平均,则像素不应该太暗。
2)第三张图片的结果是合理的吗?
我认为它比通过拍摄单射线产生的混淆更多。
您用于存储颜色的对象是否具有有限的范围?如果是(例如每个通道8位的颜色),累积10个光线将使其最大化,然后除以10将导致暗色。您可以在添加之前将每条光线除以10,或者使用允许更大范围的颜色类(浮动颜色,不夹紧到1.0等)。