Three.js / WebGL / GLSL - “#include <common>”是什么意思?

lys*_*igk 5 javascript glsl three.js

rand()Three.js 着色器示例中,使用名为(以 avec2作为参数)的函数来生成随机数。

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

我猜它#include的工作原理有点像 C/C++,但它到底<common>指的是什么?是外部文件吗?它是 Three.js 特有的东西还是一般也适用于 WebGL/GLSL?

2ph*_*pha 9

这与 Three.js 如何通过“shaderChunks”使着色器模块化有关。
所包含的 Three.js 着色器的示例可以参见此处

该特定部分#include <common>指的是这个“shaderChunk”,它似乎包含在大多数 Three.js 着色器中,以提供常见的实用程序类型函数和变量。