Fog Rise

Display text resolves out of fog center-out, sharpening from heavy blur with vertical streaks

Installation

$ pnpm dlx shadcn@latest add @remocn/fog-rise

Usage

The word starts lying face-down — rotated back around its baseline inside a real CSS perspective — and is thrown upright by a configurable spring (mass, stiffness, damping), travelling up as it stands while each character dissolves in from translucent blur. Characters start slightly spread apart and pull together on the same spring. The choreography has three phases, matching the reference: the enter — spring stand-up, lift and blur dissolve; a slow perpetual drift upward so the word never freezes; and at exitAt the exit, accelerating the word upward with no fade, meant to be hard-cut by the next scene. The reveal order runs center-out via stagger. Motion profile measured frame-by-frame from the reference footage.

// src/Root.tsx
import { Composition } from "remotion";
import { FogRise } from "@/components/remocn/fog-rise";
 
const FogRiseScene = () => <FogRise text="Remocn" />;
 
export const RemotionRoot = () => (
  <Composition
    id="FogRise"
    component={FogRiseScene}
    durationInFrames={90}
    fps={30}
    width={1280}
    height={720}
  />
);

With Backdrop

The component renders transparent — supply the background via Backdrop. The reference look pairs a light text color with a dark-to-blue vertical gradient so the word reads as embedded in fog.

import { Composition } from "remotion";
import { FogRise } from "@/components/remocn/fog-rise";
import { Backdrop } from "@/components/remocn/backdrop";
 
const FogRiseScene = () => (
  <Backdrop
    fill={{
      type: "gradient",
      value: "linear-gradient(180deg, #04070f 30%, #1e4f8f 100%)",
    }}
  >
    <FogRise text="Remocn" color="#eaf2ff" />
  </Backdrop>
);
 
export const RemotionRoot = () => (
  <Composition
    id="FogRise"
    component={FogRiseScene}
    durationInFrames={90}
    fps={30}
    width={1280}
    height={720}
  />
);

Props

PropTypeDefaultDescription
textrequired
stringThe display text
fontSize
number304Font size in pixels; blur, rise and streaks scale with it
stagger
number5Frames between each center-out ring of characters starting to resolve
blur
number0.17Starting blur of each character in em, dissolving linearly to sharp over resolveFrames
tilt
number55Starting rotateX in degrees — the word lies face-down at this angle and stands up to face the camera
depth
number5CSS perspective distance in multiples of fontSize; smaller is more dramatic foreshortening
lift
number0.85How far below its resting spot the word starts, in em — it travels up while standing up
drift
number0.005Slow upward crawl in em per frame between the enter settling and the exit — the word never freezes, matching the reference choreography
exitAt
number60Frame at which the exit starts: the word accelerates upward with no fade, meant to be hard-cut by the next scene. 0 disables the exit.
exitAccel
number0.04Upward exit acceleration in em per frame squared
mass
number1.3Spring mass of the stand-up motion — more mass, more inertia
stiffness
number60Spring force of the stand-up motion
damping
number13Spring damping — lower values overshoot with a visible bounce
spreadGap
number0.07Extra starting gap between characters in em, collapsing to zero as the word converges
tracking
number-0.07Resting letter-spacing in em
resolveFrames
number22Frames the blur dissolve takes; the stand-up motion itself is spring-driven
fadeFrames
number18Frames each character takes to fade in
color
string"#004CFF"Text color (any valid CSS color)
fontWeight
number400CSS font-weight
className
stringOptional className passed to the underlying span