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

问题描述 投票:0回答:2

this Three.js 着色器示例中,使用名为

rand()
的函数(将
vec2
作为参数)用于生成随机数。

但是,该函数并未在着色器代码中定义。相反,它似乎使用

#include <common>
(片段着色器的第一行)包含在内。

我猜

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

javascript three.js glsl
2个回答
9
投票

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

那个特定部分

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


0
投票

作为附加信息和文档目的,您可以按照以下结构使用相同的宏在单独的 glsl 文件中导入额外的 glsl 代码:

#include perlin_noise3d.glsl;

假设两个文件都放在同一个文件夹中。

© www.soinside.com 2019 - 2024. All rights reserved.