2012-05-29 41 views
0

我使用three.js來調用片段着色器 - 該着色器爲我的材質指定了一種顏色,分解爲rgb - 我想看看是否可以將這些顏色相乘顏色隨機值。這是我使用至今代碼:three.js/webGL/GLSL - 利用隨機數學

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 

,這就是我想要做的,如果它是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 
+1

您是否希望每個片段的隨機數都不相同,但不是每個片段都不相同?你是否希望它對於每個片段都是一樣的,但是從一幀到另一幀的變化?或者你是否想要兩者,從而爲觀看者產生閃爍像素的噩夢? –

+0

要麼我想。閃爍像素的噩夢聽起來很有趣=)我正在嘗試這一點。 – mheavers

回答

4

對於着色器中的僞隨機值,我強烈建議使用Ashima's WebGL noise library。它需要x/y/z值並吐出單純的噪音。這意味着它在幀之間是穩定的。如果你需要改變隨機值,將時間調製值傳遞給噪聲函數。

+0

我可以證明他們Perlin噪聲實施的質量,就像我以前用過的那樣。其中一位作者在這個答案中多談了一點:http://stackoverflow.com/a/9823712/19679 –