three.js/webGL/GLSL - 利用随机数学

mhe*_*ers 2 javascript glsl webgl three.js

我使用three.js调用片段着色器 - 该着色器为我的素材指定一种颜色,分解为rgb - 我想看看我是否可以将这些颜色乘以随机值.这是我到目前为止使用的代码:

gl_FragColor = vec4( color.r*.5, color.g, color.b, smoothstep( 8000.0, -8000.0, gl_FragCoord.z / gl_FragCoord.w ) ); //MH - creates colors by multiplying color values
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的,如果它是javascript,但显然这在GLSL着色器脚本中不起作用:

gl_FragColor = vec4( color.r*Math.random(), color.g, color.b, smoothstep( 8000.0, -8000.0, gl_FragCoord.z / gl_FragCoord.w ) ); //MH - creates colors by multiplying color values
Run Code Online (Sandbox Code Playgroud)

Toj*_*oji 5

对于着色器中的伪随机值,我强烈推荐Ashima 的WebGL噪声库.它采用ax/y/z值并吐出单纯噪声.这意味着它在帧与帧之间是稳定的.如果需要随机值,则将时间调制值传递给噪声函数.