2016-10-22 17 views
0

私はwebglを初めて使用しています。古い質問で問題を解決しようとしましたが、何も見つかりませんでした。フラグメントシェーダ(JavaScript)からJavaScript関数を呼び出す

私の問題は、フラグメントシェーダで-1と1の間の乱数を生成する関数が必要であるということです。HTMLには乱数ジェネレータがないため、関数を自分で作成する必要があります。 Javascriptはそうです。私は頭の中でこの関数を作っ:

<script = "text/javascript"> 
function random() { 
return Math.random()*2-1; //random number between -1 and 1 
} 
</script> 

私はその後、フラグメントシェーダで関数を呼び出すしようとすると、私は何のオーバーロードされた関数が見つからないことを告げています。しかし、私は実際にどのように関数を宣言して呼び出すと思いますか?

... 
for (float i = 0.0 ; i < no_of_samples ; i ++){ 

     ndc.x = 2.0*((gl_FragCoord.x+half_pixelsize*random())/width-0.5); 

... 
+0

「Math.random()* 2-1」には+1が含まれていてはならないことに注意してください – Oriol

答えて

1

ことが不可能であるように関数を呼び出す:これは私がフラグメントシェーダでそれを呼び出そう方法です。

GLSLは、(おそらくGPUドライバによって提供される)完全に異なるコンパイラによってコンパイルされており、JavaScript環境を完全に認識していません。

GLSLソリューションをご覧ください(例:Random/noise functions for GLSL)。