CSS ScrollβDriven Animations Playground - Online Demo
Create animations that progress with scroll position. Experiment with animationβtimeline and viewβtimeline. Cuttingβedge CSS.
UD5 Toolkit
A GLSL fragment shader (also called a pixel shader) is a program that runs on the GPU and determines the color of each pixel on the screen. It's written in GLSL (OpenGL Shading Language) and executes in parallel for every pixel, making it incredibly fast for creating real-time visual effects, generative art, and procedural textures.
Three uniforms are automatically provided: uniform float u_time (elapsed time in seconds), uniform vec2 u_resolution (canvas resolution in pixels), and uniform vec2 u_mouse (normalized mouse position, 0-1 range). Declare these at the top of your shader to use them.
Start with the Gradient preset and experiment by changing numbers and colors. The basic pattern is: get the UV coordinates with gl_FragCoord.xy / u_resolution, then use mathematical functions like sin(), cos(), and length() to create patterns. Try the Wave, Plasma, and Kaleidoscope presets to see different techniques in action.
Our playground uses a similar paradigm but with simpler uniforms. Shadertoy's iTime corresponds to our u_time, iResolution to u_resolution, and iMouse to u_mouse. To port a Shadertoy shader, rename the uniforms and replace mainImage(out vec4 fragColor, in vec2 fragCoord) with void main() using gl_FragColor and gl_FragCoord.
All modern browsers support WebGL, including Chrome (version 9+), Firefox (version 4+), Safari (version 8+), and Edge (version 12+). Mobile browsers on iOS and Android also support WebGL. If you see a WebGL not supported message, try updating your browser or enabling hardware acceleration in your browser settings.
Compilation errors appear in the red error panel below the editor. The error message includes the line number where the issue was detected. Common errors include missing semicolons, undeclared variables, and type mismatches. Remember that GLSL is case-sensitive and requires strict typing. Use Ctrl+Enter (or Cmd+Enter on Mac) to manually trigger compilation.
This playground is designed for pure procedural shaders without external textures. However, you can create texture-like effects using noise functions, gradients, and mathematical patterns. For advanced use with textures, consider tools like Shadertoy or desktop applications like Bonzomatic or KodeLife.
You can copy your shader code using the Copy button in the toolbar, then paste it into a text file or share it with others. You can also download a PNG screenshot of the current render using the Camera button. To resume work later, simply paste your saved code back into the editor.
Always declare precision highp float; at the top of your fragment shader for the best visual quality on all devices.
Use u_time with sin() and cos() to create looping animations. Multiply by different frequencies for varied motion speeds.
gl_FragCoord.xy / u_resolution gives normalized coordinates (0-1). Subtract 0.5 to center the origin for rotation effects.
u_mouse provides normalized coordinates. Use length(uv - u_mouse) to create effects that follow the cursor.
Create animations that progress with scroll position. Experiment with animationβtimeline and viewβtimeline. Cuttingβedge CSS.
See every touch point with coordinates, radius, and force on your mobile device. Debug gestures with live overlay.
Browse a curated set of button hover animations. See each effect live and copy the CSS. Minimalist collection.
Hover over tiles to see every CSS cursor value in action. Quick visual reference for choosing the right UI feedback.
Click to get a randomly generated unique abstract icon (geometric pattern). Download as SVG. For placeholder avatars and designs.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Click to get a random element and a short story about its discovery and uses. Fascinating science.
Generate a random 4βpanel comic sketch with simple stick figures and funny dialogue. Just for laughs. Canvas.
Hover over tiles to see every CSS cursor value in action. Quick visual reference for choosing the right UI feedback.
Browse a beautifully designed periodic table with electron shell visualization and key facts. Click any element to learn more. Offline ready.
Play the classic Snake game inside your browser. Arrow keys to move, eat the apple, grow longer. High score tracked locally.
Spin a wheel or randomize to get a chemical element with fascinating facts and description. Great for kids.
Experiment with scrollβstate container queries to style elements when they are stuck, snapped, or overflowed. Experimental.
Flip a virtual coin to make a decision or settle a dispute. Realistic animation and fair random outcome. Simple, fast, and always available.
Generate a realisticβsounding dinosaur name and see a fun description. Perfect for kids and writers.
Get a random quote from Shakespeare's works with play and character attribution. Copy in beautiful typography.
Easily convert between kilograms, pounds, ounces, stones, and more. Supports both metric and imperial weight units. Instant and private conversions.
Pick a language and get a random useful travel phrase with pronunciation. For fun language learning. Static data.
Get a catchy, Product Huntβstyle tagline for your side project. Like 'Uber for left shoes'. Instant creativity.
Get a random famous movie quote along with the film name and year. Test your movie knowledge. Static data, no API.
Fetches a random Wikipedia article summary via API. Read interesting facts. Simple knowledge discovery tool. No data collected.
See a clip of a famous artwork and choose the correct title. Art history fun. Local images.
Enter a hex color and hear a tone mapped to its hue. Explore the connection between color and sound. Fun perceptual experiment.
Enter a keyword or author to find classic quotes from public domain works. Inspiration tool.
Guess the movie title from a sequence of emojis. Hundreds of puzzles, score tracking. Pure frontend fun.
Generate a single line from famous publicβdomain poems. Great for creative writing prompts or daily inspiration.
Get a common English idiom with its meaning and example. Perfect for ESL learners. Local collection.
Click to see a random English word with its definition and an example sentence. Expand your vocabulary daily.
Paste a cURL command and convert it to a fetch() call in JavaScript, Python requests, or Go net/http. Save time.
Play Hangman where the words are element names. Learn the periodic table while having fun. High score localStorage.