GLSL

Parcel 支持使用 @parcel/transformer-glsl 插件导入 WebGL 着色器。当检测到 .glsl.vert.frag 文件时,它将自动安装到你的项目中。

¥Parcel supports importing WebGL shaders using the @parcel/transformer-glsl plugin. When a .glsl, .vert or .frag file is detected, it will be installed into your project automatically.

用法示例

#

¥Example usage

GLSL 文件作为字符串导入到 JavaScript 中,你可以将其加载到 WebGL 上下文中。

¥GLSL files are imported into JavaScript as a string, which you can load into a WebGL context.

import frag from './shader.frag'

// ...
gl.shaderSource(..., frag);
// ...

依赖

#

¥Dependencies

Parcel 还使用 pragma 支持 GLSL 文件内的依赖,包括来自 node_modules 中的库的依赖。它们被打包到一个着色器中,你可以将其加载到 WebGL 上下文中。

¥Parcel also supports dependencies within GLSL files using a pragma, including from libraries in node_modules. These are bundled together into a single shader that you can load into a WebGL context.

app.js:
import frag from './shader.frag';

// ...
gl.shaderSource(..., frag);
// ...
shader.frag:
// import a function from another file
#pragma glslify: calc_frag_color = require('./lib.glsl')

precision mediump float;
varying vec3 vpos;

void main() {
gl_FragColor = calc_frag_color(vpos);
}
lib.glsl:
// import a function from node_modules
#pragma glslify: noise = require('glsl-noise/simplex/3d')

vec4 calc_frag_color(vec3 pos) {
return vec4(vec3(noise(pos * 25.0)), 1.0);
}

// export a function
#pragma glslify: export(calc_frag_color)
Parcel 中文网 - 粤ICP备13048890号