使用 GLSL 计算着色器的光线追踪中的噪声

问题描述

我正在使用 LWJGL 制作 GLSL 光线追踪器,遵循 Ray Tracing in One Weekend。当我以每像素 100000 个样本进行渲染时,我得到以下图像:some spheres

每当我使用大约 2-3000 个或更多样本进行渲染时,就会出现一些类似线条的噪点,如图所示,并且随着样本数量增加,这种噪点会越来越明显。我怀疑这样做的原因可能是我的 random() 生成光线的函数可能不完全均匀。我用这个:

float random(vec2 co){
    return fract(sin(dot(co.xy,vec2(12.9898,78.233))) * 43758.5453);
}

我就是这样使用它的:random(pixel_coords + random_seed),其中 ivec2 pixel_coords = ivec2(gl_GlobalInvocationID.xy);random_seed一个浮动统一体,为每次调用着色器设置 rand.nextFloat()(所以它对于每个样本都是唯一的,但对于一个样本图像中的所有像素都相同)。

这难道不是随机生成的问题,而是别的问题吗?有没有更完美的方法来产生随机性?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)