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.
Write a pattern and test it against URLs instantly. See which groups match. Learn the modern alternative to regex for routing. Works entirely in the browser.
Click to get a randomly generated unique abstract icon (geometric pattern). Download as SVG. For placeholder avatars and designs.
Click to get a randomly generated, unique abstract icon (geometric pattern). Download as SVG. For placeholder avatars and designs.
Pick a color palette and the tool shows sample images that match it. Great for moodboard and brand inspiration. Static dataset.
Browse a curated set of button hover animations. See each effect live and copy the CSS. Minimalist collection.
Fetch and extract all meta tags, open graph tags, and Twitter cards from a live URL. No server proxy, direct browser fetch.
Hover over tiles to see every CSS cursor value in action. Quick visual reference for choosing the right UI feedback.
Build a complete Event structured data with performer, location, and dates. Get Googleβready JSONβLD for tickets.
Enter a URL and extract meta title, description, OG tags into a readable format. Works via frontend proxy or user pastes HTML. Local.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Enter a JSON pointer expression (/foo/bar) to extract a value from your pasted JSON. Debug nested objects quickly.
Flip a virtual coin to make a decision or settle a dispute. Realistic animation and fair random outcome. Simple, fast, and always available.
A curated collection of riddles. Load one per day with a button to reveal answer. Clean, simple, no tracking. Sharpen your mind.
Create ULIDs that are timeβbased, URLβsafe, and sortable. Alternative to UUID for modern applications. Copy or download a list.
Generate a hilarious, historically accurate insult by combining words from Shakespeare's works. Thee shall laugh.
Generate a random 4βpanel comic sketch with simple stick figures and funny dialogue. Just for laughs. Canvas.
Generate random JSON data with customizable fields (users, products, orders). Useful for frontend mocking. All local.
Click on any bone in the human skeleton to see its name and learn about it. Rotatable 3Dβlike view. Study aid.
Click to get a random element and a short story about its discovery and uses. Fascinating science.
Hover over tiles to see every CSS cursor value in action. Quick visual reference for choosing the right UI feedback.
Get a random clever or Shakespearean insult. Perfect for friendly banter. No profanity, just wit. All random.
Click to get a randomly generated, unique favicon. Download as .ico or SVG. For when you need a quick icon.
Enter student names and desks layout, then scramble periodically. Print new seating chart.
Enter two URLs and see if they resolve to the same canonical form after normalization. Find duplicate content issues.
Simple interactive eye dominance test: hold up a virtual dot and see which eye stays aligned. Educational.
Combine two random elements and get a surprising result. Inspired by Little Alchemy. Infinite ideas. All local.
Get a random, clean, and silly joke perfect for children. Guaranteed giggles. No offensive content.
View every standard emoji in a searchable grid. Hover to see a larger preview. Click to copy. Updated with Unicode 16.