在 this Three.js 着色器示例中,使用名为
rand()
的函数(将 vec2
作为参数)用于生成随机数。
但是,该函数并未在着色器代码中定义。相反,它似乎使用
#include <common>
(片段着色器的第一行)包含在内。
我猜
#include
的工作方式有点像C/C++,但是<common>
到底指的是什么?是外部文件吗?它是 Three.js 特有的东西还是一般情况下也适用于 WebGL/GLSL?
这与 Three.js 如何尝试通过“shaderChunks”使着色器模块化有关。
包含的三个.js 着色器的示例可以参见这里。
那个特定部分
#include <common>
指的是这个“shaderChunk”,它似乎包含在大多数 Three.js 着色器中以提供常见的实用程序类型函数和变量。
作为附加信息和文档目的,您可以按照以下结构使用相同的宏在单独的 glsl 文件中导入额外的 glsl 代码:
#include perlin_noise3d.glsl;
假设两个文件都放在同一个文件夹中。