从片段着色器调用 javascript 函数 (HTML)
Calling a javascript function from a fragment shader (HTML)
我是 webgl 的新手,我曾尝试在旧问题中找到我的问题的答案,但我一直找不到任何答案。
我的问题是我的片段着色器需要一个函数来生成一个介于 -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);
...
调用这样的函数是不可能的。
GLSL 由完全不同的编译器编译(可能由 GPU 驱动程序提供)并且它完全不知道 JavaScript 环境。
您可能想查看 GLSL 解决方案,例如:Random / noise functions for GLSL。
我是 webgl 的新手,我曾尝试在旧问题中找到我的问题的答案,但我一直找不到任何答案。
我的问题是我的片段着色器需要一个函数来生成一个介于 -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);
...
调用这样的函数是不可能的。
GLSL 由完全不同的编译器编译(可能由 GPU 驱动程序提供)并且它完全不知道 JavaScript 环境。
您可能想查看 GLSL 解决方案,例如:Random / noise functions for GLSL。