
The burning veil
Transitions, WebGL
NewFree
The opening of a sound studio, in the minimal style: the name, a thin line filling with a count, then the mark rising out of a slowly drifting noise, grain by grain, with an edge that burns blue. Enter sends it back into the noise.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN. The React and Vue tabs hold the same demo as a ready component, which switches its animations off when it leaves the page.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The mark that rises from the noise</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the opening of a made-up sound studio. The name, a hairline that fills with a count, then the mark comes up
out of a drifting noise, grain by grain, with a blue edge where it burns in; Enter sends it back into the noise -->
<main class="soglia" data-soglia>
<canvas class="tela" data-tela aria-hidden="true"></canvas>
<div class="piede">
<p class="nome" data-nome><span>Halde</span><span class="nome__sotto">sound</span></p>
<div class="carica" data-carica>
<span class="carica__riga"><span class="carica__pieno" data-pieno></span></span>
<span class="carica__conto" data-conto>0</span>
</div>
<button class="entra" type="button" data-entra>Enter</button>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="script.js"></script>
</body>
</html>Change values, colours and text with the controls and watch the animation respond live. Or write in the code yourself. Then download the folder with your changes.
18 values to change
With the Animorio connector, Claude Code takes it from here, guide included, and fits it into your project. Paste this request:
Take “The mark that rises from the noise” from Animorio and fit it into my siteThe mark is drawn only once with the 2D canvas, white on transparent, in a square of at most 440 pixels, and becomes a WebGL texture. On screen there is a single rectangle as big as the window: the shader knows where the mark’s square is and draws nothing outside it.
For every pixel the shader works out a soft noise (value noise in three octaves, NOISE_SCALE says how fine the patches are) drifting by NOISE_SPEED over time. Then it compares it with how far the reveal has got: with a smoothstep SOFTNESS wide, the pixel is off if the noise is higher, on if it is lower, and halfway in the band between. The reveal goes from 0 to 1 a little past the edges (minus SOFTNESS, plus SOFTNESS), so at the start nothing shows and at the end it is all full.
The halfway band, where the pixel is neither off nor on, is the part lighting up: the shader measures it (one minus the distance from the middle) and there it mixes the line colour with the blue accent, by EDGE. So the mark rises with a blue thread in front of it, which stays nowhere.
One GSAP timeline does everything: the name in 0.8 seconds, the line filling in five equal steps with power3.inOut (the loading lasts at least MIN_WAIT seconds even when everything is ready), the AFTER_LOAD pause, the mark in REVEAL_TIME seconds and the button fading in over 2.5 seconds. Enter plays the reverse, shorter, with power2.in, and at the end the opening starts again.
| Name | File | Default | What it changes |
|---|---|---|---|
MIN_WAIT | script.js | 1 | The shortest the loader lasts, in seconds. |
LOAD_TIME | script.js | 1.6 | How long our pretend loading takes. |
AFTER_LOAD | script.js | 0.5 | The pause between the full line and the mark. |
REVEAL_TIME | script.js | 2.4 | The seconds the mark takes to come up. |
SOFTNESS | script.js | 0.15 | How soft the edge of the dissolve is. |
NOISE_SCALE | script.js | 7 | How fine the patches of the noise are. |
NOISE_SPEED | script.js | 0.02 | How quickly the noise drifts. |
EDGE | script.js | 0.6 | How strongly the burning edge glows blue. |
AUTO_ENTER | script.js | 4 | After how many seconds Enter presses itself; 0 to wait for a click. |
HOLD | script.js | 1.2 | The seconds of empty screen before it starts again. |
For the opening of a sound studio, a label, a festival or a 3D experience that has to load something before you go in and asks for a click (for instance to switch the audio on). It works with any mark made of thin lines.
The same, with the mark taking almost the whole width; Enter is tapped with a finger.
No moving noise and no blue edge: the mark appears in a soft, even fade and goes the same way.
GSAP 3.15.0, Archivo (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 5.6 KB; the libraries: GSAP 28 KB.
Tested on 16 October 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
or with your email
You’re signed in as .
With your account, you can download the zip of every animation and every pack, for free.