A minimal desktop shader editor for writing and running WebGL2 fragment shaders.
Shady is built around a quiet Monaco editor, a fullscreen preview, and Shadertoy-style uniforms/channels. It supports shader buffers, image and audio inputs, and live microphone audio-reactive textures.
- Frameless Electron app with a minimal dark interface
- Monaco editor with GLSL syntax highlighting
- WebGL2 fragment shader preview
- Multi-pass shader buffers
- Image, audio file, and microphone input channels
- Project save/load support
- Tokyo Night-inspired editor theme with a violet accent
- Global channels/buffers (main difference with shadertoy)
- Node.js
- npm
npm install
npm run devnpm run buildTo create a packaged app:
npm run packagePlatform-specific packages:
npm run package:mac
npm run package:win
npm run package:linuxRelease artifacts are written to dist/.
- macOS: DMG
- Windows: ZIP, x64
- Linux: tar.gz, x64
Cmd+Enter/Ctrl+Enter: run the shader previewSpace: pause/resume the shader previewEsc: return to the editorCmd+Shift+F/Ctrl+Shift+F: toggle statsCmd+0/Ctrl+0: projectCmd+1-5/Ctrl+1-5: switch shader tabs
Shaders are WebGL2 fragment shaders and should start with:
#version 300 esCommon uniforms include:
uniform vec2 iResolution;
uniform float iTime;
uniform float iTimeDelta;
uniform int iFrame;
uniform vec4 iMouse;
uniform vec4 iDate;
uniform sampler2D iChannel0;
uniform sampler2D iChannel1;
uniform sampler2D iChannel2;
uniform sampler2D iChannel3;Audio and microphone inputs use a 512 x 2 texture:
- row
0: frequency data - row
1: waveform data
npm run typecheck
npm run buildMIT
