shaderity-loader
shaderity-loader is a static GLSL shader loader for Webpack.
Features
Static features
With this shaderity-loader
, you can do the following things:
- Provide
#include
like statement for GLSL shader files. (similar syntax to glslify) - Embed GLSL shader files into TypeScript/JavaScript as a WebPack Loader.
- Can be used in conjunction with glslify.
Runtime features
With shaderity, you can do the following things:
- Variables fill-in to GLSL code in runtime.
- Transpile between GLSL ES 1.0 and GLSL ES 3.0 .
How to use
Write webpack.config.js like this.
// webpack.config.js
const path = require('path');
module.exports = {
entry: './test/fixture_loaders/index.js',
mode: 'development',
module: {
rules: [
{
test: /\.(glsl|vs|fs|vert|frag)$/i,
exclude: /node_modules/,
use: [{
loader: path.resolve('index.js')
}]
}
]
},
resolve: {
extensions: [
'.ts'
]
},
output: {
path: path.resolve(__dirname, './fixture_loader_dist'),
filename: 'index.js',
},
optimization: {
namedChunks: true
}
};
These are shader codes for importing to TypeScript/JavaScript code.
// output.frag
#ifdef GLSL_ES_1
gl_FragColor = rt0;
#endif
// output_test.frag
precision mediump float;
in vec4 vColor;
in vec4 vTexcoord;
void main() {
rt0 = vColor;
#pragma shaderity: require(./output.frag)
}
You can import them like this.
import shaderObj from '../fixtures/output_test.frag';
console.out(convertedObj.shaderStage);
// 'fragment'
console.out(convertedObj.isFragmentShader);
// 'true'
console.out(convertedObj.code);
/*
precision mediump float;
in vec4 vColor;
in vec4 vTexcoord;
void main() {
rt0 = vColor;
#ifdef GLSL_ES_1
gl_FragColor = rt0;
#endif
*/
Build this JavaScript code using Webpack.
$ webpack
For developers
When developing this library, please make sure to merge it into the develop branch. In order to be able to work closely with shaderity-node, the develop branch is also a submodule of shaderity-node and is included in the dependencies.
The only difference between the master branch and the develop branch is whether 'shaderity-node' is included as a submodule or not.
When you publish this library, merge the code from the develop branch into the master branch. Make sure that the master branch does not have shaderity-node as a submodule, and that the version of the shaderity-node package in package.json is the version you intend.
LICENSE
MIT License