Javascript Three.js/WebGL/GLSL-什么是#包括<;普通>&引用;什么意思?
在Three.js着色器示例中,一个名为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着色器中的大多数
rand()
(将vec2
作为参数)的函数用于生成随机数
但是,该函数未在着色器代码中定义。相反,它似乎是使用#include
(片段着色器的第一行)包含的
我想
#include
的工作原理有点像C/C++,但
到底指的是什么?它是外部文件吗?这是Three.js特有的功能还是它通常也适用于WebGL/GLSL?这与Three.js如何通过“shaderChunks”使着色器模块化有关。可以查看包含的三个.js着色器的示例
“包含”是指三个.js着色器中的大多数都包含了该部分,以提供常用的实用程序类型函数和变量。我认为有着色器预处理器可向着色器添加常用代码。但也许我错了。它们被编译成格式化字符串,并作为字典在
Three
名称空间中提供。然后,在生成有效的GLSL之前,在预处理步骤中对它们进行解析。它们不是在生成过程中编译的,而是在运行时编译的。因此,您可以编写您可以用自己的着色器块替换它们