Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js/WebGL/GLSL-什么是#包括<;普通>&引用;什么意思?_Javascript_Three.js_Glsl - Fatal编程技术网

Javascript Three.js/WebGL/GLSL-什么是#包括<;普通>&引用;什么意思?

Javascript Three.js/WebGL/GLSL-什么是#包括<;普通>&引用;什么意思?,javascript,three.js,glsl,Javascript,Three.js,Glsl,在Three.js着色器示例中,一个名为rand()(将vec2作为参数)的函数用于生成随机数 但是,该函数未在着色器代码中定义。相反,它似乎是使用#include(片段着色器的第一行)包含的 我想#include的工作原理有点像C/C++,但到底指的是什么?它是外部文件吗?这是Three.js特有的功能还是它通常也适用于WebGL/GLSL?这与Three.js如何通过“shaderChunks”使着色器模块化有关。 可以查看包含的三个.js着色器的示例 “包含”是指三个.js着色器中的大多数

在Three.js着色器示例中,一个名为
rand()
(将
vec2
作为参数)的函数用于生成随机数

但是,该函数未在着色器代码中定义。相反,它似乎是使用
#include
(片段着色器的第一行)包含的


我想
#include
的工作原理有点像C/C++,但
到底指的是什么?它是外部文件吗?这是Three.js特有的功能还是它通常也适用于WebGL/GLSL?

这与Three.js如何通过“shaderChunks”使着色器模块化有关。
可以查看包含的三个.js着色器的示例


“包含”是指三个.js着色器中的大多数都包含了该部分,以提供常用的实用程序类型函数和变量。

我认为有着色器预处理器可向着色器添加常用代码。但也许我错了。它们被编译成格式化字符串,并作为字典在
Three
名称空间中提供。然后,在生成有效的GLSL之前,在预处理步骤中对它们进行解析。它们不是在生成过程中编译的,而是在运行时编译的。因此,您可以编写您可以用自己的着色器块替换它们