Synthwave

A retro neon horizon with a scrolling perspective grid, a rising striped sun and mountain ranges that slide in

Installation
$ pnpm dlx shadcn@latest add @remocn/synthwave

Usage

Synthwave is a full-frame background. A perspective grid glows on the floor and scrolls toward the viewer. A striped sun rises from behind the horizon, its stripes thickening toward the bottom and drifting downward. Two mountain ranges slide in from opposite sides as they rise into place, the front one traced in the grid color. Stars twinkle in the dark sky, and a haze swallows the lines where they converge.

import { AbsoluteFill } from "remotion";
import { Synthwave } from "@/components/remocn/synthwave";
 
export const Drop = () => (
  <AbsoluteFill>
    <Synthwave grid="#00E5FF" sunTop="#FFE66D" sunBottom="#FF2E88" />
    <AbsoluteFill style={{ alignItems: "center", paddingTop: 120 }}>
      <Title />
    </AbsoluteFill>
  </AbsoluteFill>
);

It takes no children. Layer your content on top in a sibling AbsoluteFill, and keep it above the horizon, which sits at horizon of the frame height (60% by default).

Timing

At 30 fps and speed={1}:

FramesMotion
0–40The sun rises from behind the horizon
4–34The back range slides in from the left and rises
8–38The front range slides in from the right and rises
AlwaysThe grid scrolls at gridSpeed rows per second; the sun stripes cycle every 36 frames

synthwaveLength is 40, the frame the sun and mountains are in place. The grid and stripes never stop, so the background holds for any duration. speed scales the entrance and the scroll together.

Props
PropTypeDefaultDescription
grid
string"#E5322D"Grid lines and the front mountain outline. Overrides colors.grid when set
sunTop
string"#FFC46B"Top of the sun gradient. Overrides colors.sunTop when set
sunBottom
string"#E5322D"Bottom of the sun gradient. Overrides colors.sunBottom when set
skyHorizon
string"#3B0C10"Sky glow at the horizon, also tints the floor and haze. Overrides colors.skyHorizon when set
colors
{ skyTop?, skyHorizon?, sunTop?, sunBottom?, grid?, floor?, mountainsBack?, mountainsFront?: string }{ skyTop: "#08080B", skyHorizon: "#3B0C10", sunTop: "#FFC46B", sunBottom: "#E5322D", grid: "#E5322D", floor: "#0A0A0C", mountainsBack: "#2A0A0E", mountainsFront: "#111111" }All scene colors as one object; skyHorizon also tints the floor and the horizon haze. The flat props above take precedence, missing keys keep their defaults
gridSpeed
number2Grid rows that pass the viewer per second
horizon
number0.6Horizon height as a fraction of the frame height, from the top
sunStripes
booleantrueScrolls the sun stripes downward; false keeps them fixed
speed
number1Playback multiplier