如何解决使用 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 举报,一经查实,本站将立刻删除。