【发布时间】:2019-09-23 05:41:39
【问题描述】:
我正在使用 three.js 构建一个项目并在外部导入 glsl 文件(使用 glsl-ify-loader)以在 Three ShaderMaterial 中使用。
当使用ShaderMaterial 时,Three 在连接着色器时会将projectionMatrix、modelViewMatrix 等全局变量添加到我的着色器代码预编译中。所以当我编写我的着色器时,我所需要的只是(作为一个简单的例子):
varying vec3 vNormal;
void main () {
vNormal = normal;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
...或类似的。
我的问题是我在我的着色器文件上使用了 glsl 验证器,它随后认为预先声明的三个变量未声明。
在 JS 中,你可以使用 eslint 输入 /* global aGlobalVariableHere */ 来安抚 lint 之神。
有没有用 glsl 验证器来做这件事?我找不到任何可以建议我如何去做的资源。
【问题讨论】:
-
什么是“glsl 验证器”?那是图书馆吗?
-
@gman 我将 vscode 与以下内容一起使用:khronos.org/opengles/sdk/tools/Reference-Compilermarketplace.visualstudio.com/…
-
@gman GLSL Validator 是一些文本编辑器的插件,可以检查您的变量使用情况并从文本编辑器内部报告错误。例如,如果您声明
vec2并尝试访问它的.z属性,它会告诉您这是不允许的。 I've used this one for Sublime Text before
标签: three.js glsl webgl static-analysis glsles