{{ summaryTitle }}
{{ summaryValue }}

{{ summaryLine }}

Density{{ densityLabel }} Speed{{ formatDecimal(speedValue, 2) }}x Target{{ fpsValue }} FPS
{{ summaryAnnouncement }}
Canvas preview unavailable
{{ liveAnnouncement }}
Matrix rain scene settings
Choose the palette used by the applied preview.
Compact pools look orderly; mixed and Katakana pools feel busier.
Direction is frozen when you apply the scene.
Low uses larger, wider-spaced glyphs; Ultra packs the most lanes.
{{ formatDecimal(speedValue, 2) }}x
0.30x to 3.00x. Slower settings suit ambient backgrounds.
{{ charScaleValue }}%
70% to 180%. Larger glyphs reduce the effective column count.
{{ tailValue }} frames
8 to 60 frames. Longer tails deepen the afterimage.
Use 30 FPS for calm loops and verify dense 60 FPS scenes in fullscreen.
120 to 980. Higher values restart crossed lanes more promptly.
/1000
{{ glowValue }}
0 is neutral; high values can merge neighboring tails.
{{ headIntensityValue }}
0 keeps the natural head contrast; raise it when tails hide leading glyphs.
Off is the neutral, capture-friendly setting.
{{ randomFlickerValue ? 'On' : 'Off' }}
{{ flickerRateValue }}
Disabled while Random flicker is off.
Straight is neutral; Sine and Turbulent add horizontal drift.
{{ waveStrengthValue }}
Disabled for Straight lanes; 0 is neutral.
Off is neutral and preserves the cleanest glyph contrast.
{{ backgroundNoiseValue ? 'On' : 'Off' }}
{{ backgroundDimValue }}
0 is neutral; higher values shorten visible afterimages.
{{ scanlineStrengthValue }}
0 is neutral; higher values make the CRT texture more visible.
Whole number from 1 to 999,999 for repeatable scene setup.
Operator brief
{{ cue.title }}{{ cue.status }}
{{ cue.detail }}
{{ operatorCopyAnnouncement }}
{{ chartExportStatus }}

The chart renderer is unavailable. The same values remain in Matrix metrics.

{{ metricsExportStatus }}
SignalValueMeaningCopy
{{ row.label }}{{ row.display }}{{ row.detail }}

Code rain looks simple because every stream follows the same broad direction. Its visual rhythm actually depends on several competing choices: how many columns fit across the display, how quickly glyphs move, how long their tails remain, and how much flicker or glow separates a bright head from the background.

Density and character size determine the basic grid. Smaller glyphs create more lanes, while larger glyphs leave more space around each stream. Speed then changes how quickly the eye must follow those lanes. A dense scene can remain readable at a calm speed, and a sparse scene can still feel aggressive when it combines fast drops with turbulence.

Vector
The vertical speed and lateral movement that give each stream its path.
Texture
Flicker, background speckle, and scanlines that roughen an otherwise clean field.
Persistence
How long earlier frames remain visible as a tail behind the leading glyph.
Contrast
The separation between the dark background, stream body, bright head, and glow.

These qualities should be judged together. Heavy dimming and strong glow may erase tail detail instead of improving it. Long persistence can make slow rain feel fluid, but it can also merge neighboring columns. Flicker and scanlines can suggest an older display while making a large fullscreen scene harder to watch.

A frame-rate target sets the maximum drawing cadence, not a promise from the device. Canvas size, pixel density, lane count, motion effects, and competing browser work all affect delivery. A seed makes the starting layout repeatable under the same scene and canvas dimensions, which helps compare two visual choices without mistaking a new random arrangement for an improvement.

How to Use This Tool:

Establish readable lanes before adding texture and lighting.

  1. Choose a Theme, Character set, rain direction, and density. Use medium density and 100% character scale as a neutral comparison point.
  2. Set Drop speed, Tail persistence, and the 30, 45, or 60 FPS target. Increase speed or tail length separately so their effects remain easy to judge.
  3. Add column motion, flicker, background noise, scanlines, glow, and head highlight in small steps. The operator brief flags high motion, high texture, or crushed contrast.
  4. Enter a scene seed and apply the settings. Edits made after applying remain pending until the scene is applied again.
  5. Run the preview long enough to collect Measured FPS and FPS delivery. Check fullscreen, then reset to reproduce the seeded starting layout.

Interpreting Results:

Balanced scene means the motion, texture, and contrast rules all remain outside their heavy or deliberately minimal combinations. Heavy scene means at least one of high vector load, high noise, or crushed contrast is present. Clean scene is a narrower state: straight low-wave motion, minimal texture, and soft contrast must all occur together.

  • Use Operator brief to identify the first visual tradeoff to address, then change one contributing control at a time.
  • Compare measured FPS with the selected target. A high scene score does not prove poor performance, and smooth delivery does not prove comfortable motion.
  • Keep seed, canvas size, density, and character scale fixed when comparing two lighting or texture choices.

Technical Details:

The pressure model is a repo-authored description of the rendered scene, not a graphics benchmark. It derives lane geometry from canvas width and glyph size, then turns motion, texture, trails, lighting, and frame-rate settings into separate percentages so unlike effects are not hidden inside one total score.

Formula Core

Glyph size starts from the selected density profile and character scale. Column count is the integer number of those glyph widths that fit across the canvas.

F=max(8,round(D×S100)) C=max(8,WF)

The density bases are 24 px for low, 18 px for medium, 14 px for high, and 11 px for ultra. The high and ultra profiles also increase vector load through factors of 1.18 and 1.35; low and medium use 1.00.

Motion, texture, and frame fading use the following equations. v is drop speed, k the density factor, f flicker rate when flicker is on, b equals 1 when background noise is on, s is scanline strength, t tail persistence, and d background dim.

V=clamp(vk,0.3,4.05) N=f100+0.48b+s180 A=clamp(66t150+d240,0.04,0.52)

Motion pressure is vector load divided by 4.05. Texture pressure divides noise load by its maximum stacked contribution. Trail pressure maps 8 to 60 frames onto 0% to 100%, lighting pressure averages glow and head highlight, and frame budget maps 30 to 60 FPS onto 50% to 100%. FPS delivery is measured FPS divided by target FPS and capped at 100%.

Rule Core

The scene profile follows these exact state boundaries.

Matrix scene state rules
StateConditionResult
VectorLoad > 2.55, or turbulent motion with strength > 72High
VectorStraight motion with strength < 12Flat
NoiseNoise load > 1.2High
NoiseFlicker off, background noise off, and scanlines < 10Minimal
ContrastBackground dim > 60 and glow > 72Crushed
ContrastBackground dim < 18 and head highlight < 55Soft

Unmatched states are balanced. Any high vector, high noise, or crushed contrast state makes the overall profile heavy. Only the combined flat, minimal, and soft states make it clean; every other combination is balanced.

Respawn frequency is interpreted per 1,000 when a lane crosses the canvas edge. The seed, canvas width, and canvas height initialize lane positions, rates, phases, glyphs, and background points, so changing the viewport changes the repeated layout even when the seed stays the same.

Performance, Motion, and Privacy Notes:

Live performance reflects the current browser session. The preview measures frames over roughly one-second windows and adapts drawing resolution when delivery moves far from the target.

  • Below 72% delivery, quality drops by 5 percentage points to a 70% floor. Above 95%, it rises by 3 points toward 100%.
  • A reduced-motion preference prevents automatic playback, suppresses wave, flicker, and turbulent variation, and pauses a running scene when the preference changes.
  • The animation, seed, measurements, and settings remain in the browser; no scene content is uploaded.
  • Fullscreen support and delivered FPS depend on browser permissions, canvas size, pixel density, hardware, and competing work.