我需要在GLSL版本120片段着色器中生成正态分布的伪随机数。
他们甚至不必特别好伪随机数。但它们确实需要正常分配。
我想如果我想编写自己的随机数生成器,我知道在哪里查看,但我想看看是否已经发明了这样的东西。我还要感谢GLSL 120中统一分布的随机数生成器的任何链接。
作为一个说明,我已经看到了GLSL的random noise generation问题。不幸的是,它看起来像单纯形和Perlin噪声有某种多模式分布。我想我可以使用mod函数,但我想知道是否有更合适的方法。
答案 0 :(得分:-2)
试试这段代码:
highp float rand(float n){
return fract(sin(mod(dot(n ,12.9898),3.14))*43758.5453);
}
你可以测试它:
highp float rand(float n){
return fract(sin(mod(dot(n ,12.9898),3.14))*43758.5453);
}
void main(out vec4 fragColor, in vec2 p){
p /= Resolution.xy;
float e=rand(Time);
if(p.x>e-0.01&&p.x<e+0.01){
fragColor=vec4(1.,1.,1.,1.);
}
}
然后将“Time”更改为“3. * Time”或“pow(Time,3。)”,检查它是否继续运行,没有任何差异