patriciogonzalezvivo / glslCanvas

Simple tool to load GLSL shaders on HTML Canvas using WebGL
http://patriciogonzalezvivo.github.io/glslCanvas/
MIT License
1.97k stars 183 forks source link

Fragment Shader Include Support #46

Open willstall opened 5 years ago

willstall commented 5 years ago

I've added basic include support for fragment shaders. You'll notice a new class Includes.js which handles a bulk of the include support. I used Regex to write out include statements and inject them after load after precision definition. Commented includes are ignored. Since webgl will throw a fit if we push the code with undefined, I load a default black shader for all the hooks and then load a shader once it's dependent include files have been loaded and injected.

I've tested this with both attribute and load() configurations. I have also created a cancellation method for include dependency promises so load() can be called with a fragment file attribute and happily recreated the shader.

willstall commented 5 years ago

Just pinging this. If it's accepted, it can get rolled into the live-coding VS-Code plugin which uses GLSLCanvas as it's renderer