The extension opens a live WebGL preview of GLSL shaders within VSCode by providing a Show glslCanvas
command.
It use glslCanvas a javaScript library from Book of Shaders and glslEditor made by Patricio Gonzalez Vivo.
Run the command to display a fullscreen preview of your fragment shader.
The uniforms provided are u_resolution
, u_time
, u_mouse
and u_trails[10]
. You can define the texture channels (u_texture_0
, u_texture_1
, ...) by modifying the workspace's settings.json
file.
{
"glsl-canvas.textures": {
"0": "./texture.png",
"1": "https://rawgit.com/actarian/plausible-brdf-shader/master/textures/noise/cloud-1.png",
"2": "https://rawgit.com/actarian/plausible-brdf-shader/master/textures/noise/cloud-2.jpg",
}
}
u_trails[10]
is a vec2 array with stored inertia mouse positions for mouse trailing effects.
You can also define custom uniforms by modifying the workspace's settings.json
file.
{
"glsl-canvas.uniforms": {
"u_strength": 1.0
}
}
Types supported are float
, vec2
, vec3
and vec4
. Vectors structures are converted from arrays of floats. Range values goes from 0.0
to 1.0
.
Type | Property |
---|---|
float |
"u_float": 1.0, |
vec2 |
"u_vec2": [1.0, 1.0], |
vec3 |
"u_vec3": [1.0, 1.0, 1.0], |
vec4 |
"u_vec4": [1.0, 1.0, 1.0, 1.0], |
By clicking the option button you can view and modify at runtime uniforms via the dat.gui interface.
An example of fragment shader. You can copy paste this code in an empty .glsl
file:
precision mediump float;
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;
void main() {
vec2 st = gl_FragCoord.xy / u_resolution.xy;
st.x *= u_resolution.x / u_resolution.y;
vec3 color = vec3(0.0);
color = vec3(st.x, st.y, abs(sin(u_time)));
gl_FragColor = vec4(color, 1.0);
}
- Integrated support of error handling with lines hilight.
- Play / pause functionality.
- Recording and exporting to
.webm
video. - Activable stats.js performance monitor.
- Custom uniforms.
- Activable gui for changing custom uniforms at runtime.
- Glsl Snippets.
Snippet | Purpose |
---|---|
glsl.animation |
Staggered animations |
glsl.modifiers.blend |
Blend functions |
glsl.modifiers.boolean |
Boolean functions |
glsl.colors |
Colors palette |
glsl.coords |
Pixel units utility functions |
glsl.drawing |
Signed distance drawing methods |
glsl.ease.back.in |
Ease equation back in |
glsl.ease.bounce.in |
Ease equation bounce in |
glsl.ease.circular.in |
Ease equation circular in |
glsl.ease.cubic.in |
Ease equation cubic in |
glsl.ease.elastic.in |
Ease equation elastic in |
glsl.ease.expo.in |
Ease equation expo in |
glsl.ease.quad.in |
Ease equation quad in |
glsl.ease.quart.in |
Ease equation quart in |
glsl.ease.quint.in |
Ease equation quint in |
glsl.ease.sine.in |
Ease equation sine in |
glsl.main.new |
Main function, uniforms & utils |
glsl.core.object |
Object struct with distance and color |
glsl.shapes.2d.arc |
Shape 2D arc |
glsl.shapes.2d.circle |
Shape 2D circle |
glsl.shapes.2d.grid |
Shape 2D grid |
glsl.shapes.2d.hex |
Shape 2D hexagon |
glsl.shapes.2d.line |
Shape 2D line |
glsl.shapes.2d.pie |
Shape 2D pie |
glsl.shapes.2d.plot |
Shape 2D plot |
glsl.shapes.2d.poly |
Shape 2D poly |
glsl.shapes.2d.rect |
Shape 2D rect |
glsl.shapes.2d.roundrect |
Shape 2D roundrect |
glsl.shapes.2d.segment |
Shape 2D segment |
glsl.shapes.2d.spiral |
Shape 2D spiral |
glsl.shapes.2d.star |
Shape 2D star |
glsl.modifiers.tile |
Tiling function |
glsl.units |
Pixel unit conversion function |
Snippets library documentation and playgrounds here.
- A graphics card supporting WebGL.
- Glsl 3d snippets.
- Mouse orbit control.
- Glsl code formatting.
- WebGL code exporter.
Github Project Page
Visual Studio Marketplace
Thank you so much for taking the time to provide feedback and review. This feedback is appreciated and very helpful.
- Fixed sArc and easeInOut snippets methods.
- Documented snippets library with playgrounds.
- Mouse trail uniforms.
- Texture repeating feature.
- Gui for changing custom uniforms at runtime.
- Fixed dependancy from other extension.
- Play / pause functionality.
- Record button that exports to
.webm
video. - Activable performance monitor.
- Better handling of active
.glsl
editor. - Improved inline error message.
- Fixed resizing issue.
- Minor snippets functionality.
- Initial release of glsl-canvas for vscode.