Skip to content

Repository files navigation

🌌 Genesis

A real-time, GPU-accelerated procedural planet studio for the web.

Sculpt continents, ignite volcanoes and wrap worlds in living atmospheres β€” then render them in cinematic 4K, all from your browser. No installs, no plugins, no bake times.

Launch the Studio β†’ Β Β·Β  Live Demo Β Β·Β  Report a Bug

Next.js React Three.js TypeScript License

Genesis hero


✨ Overview

Genesis turns a single random seed into an entire, explorable world. Procedural fractal noise displaces a sphere into terrain, custom GLSL shaders paint oceans, land and snow, and a cinematic post-processing stack composites it all into a film-grade frame β€” at 60 fps, in real time.

It ships with a polished marketing site and a full-featured Studio where every parameter β€” terrain, biomes, palette, vegetation, lighting and render β€” is yours to direct live.

πŸš€ Features

  • 🌍 Seven world archetypes β€” Terra (Earth-like), Colossus (gas giant), Glacius (ice), Ares (desert/Mars), Selene (cratered moon), Ignis (volcanic) and Neonix (cyberpunk ecumenopolis), each hand-tuned.
  • ⛰️ Procedural terrain engine β€” multi-octave fractal Brownian motion + cellular (Voronoi) noise for craters, all seeded and reproducible.
  • 🎨 Custom GLSL shaders β€” biome-aware planet surfaces, swirling gas-giant storms with domain warping, animated cloud layers, banded planetary rings and a fresnel atmosphere shell.
  • 🎬 Cinematic rendering β€” HDR bloom, film grain and vignette via @react-three/postprocessing.
  • πŸ•ΉοΈ Real-time Studio β€” a bespoke glassmorphism control panel (no dev GUIs) driven by a single Zustand store, with collapsible sections for terrain, biome levels, palette, vegetation, lighting and render.
  • πŸ“Έ One-click export β€” save the current frame as a PNG, or copy a shareable link.
  • πŸͺ Deep-link presets β€” /studio?type=lava opens straight into a world.
  • πŸ“± Responsive & accessible β€” works on desktop and mobile, with reduced-motion-friendly interactions.
  • πŸ–ΌοΈ Cinematic imagery pipeline β€” a build-time script pulls curated 4K photography from Unsplash (key never reaches the browser).

πŸ› οΈ Tech Stack

Layer Technology
Framework Next.js 16 (App Router, Turbopack)
UI runtime React 19
3D engine Three.js + React Three Fiber
Shaders Hand-written GLSL
Post-processing @react-three/postprocessing
State Zustand
Procedural noise simplex-noise
Animation Framer Motion
Styling Tailwind CSS v4
Language TypeScript

🏁 Getting Started

# 1. Clone
git clone https://github.com/shahriar-ahmed-seam/genesis.git
cd genesis

# 2. Install
npm install

# 3. (Optional) configure imagery
cp .env.example .env.local      # add your Unsplash Access Key

# 4. (Optional) fetch cinematic imagery
npm run fetch:images

# 5. Develop
npm run dev                     # http://localhost:3000

πŸ’‘ The repo ships with imagery already in public/images, so steps 3–4 are optional. Without an Unsplash key the app falls back gracefully.

Scripts

Command Description
npm run dev Start the dev server (Turbopack)
npm run build Production build
npm run start Serve the production build
npm run lint Lint with ESLint
npm run fetch:images Pull curated imagery from Unsplash

πŸ—‚οΈ Project Structure

genesis/
β”œβ”€β”€ app/                  # Next.js App Router
β”‚   β”œβ”€β”€ page.tsx          # Cinematic marketing landing page
β”‚   β”œβ”€β”€ studio/           # The interactive 3D studio (page + client)
β”‚   β”œβ”€β”€ layout.tsx        # Root layout, fonts, SEO metadata
β”‚   └── globals.css       # Design system & Tailwind layer
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ planet/           # The 3D scene β€” Scene, Planet, Atmosphere,
β”‚   β”‚                     #   CloudLayer, PlanetRings, Trees
β”‚   β”œβ”€β”€ site/             # Landing-page sections (Hero, Worlds, Gallery…)
β”‚   └── studio/           # Studio UI (ControlPanel, Toolbar, controls)
β”œβ”€β”€ shaders/              # GLSL: planet + gas-giant shaders
β”œβ”€β”€ hooks/                # usePlanetTerrain (procedural geometry)
β”œβ”€β”€ lib/                  # Zustand store + image manifest helpers
β”œβ”€β”€ config/               # Planet archetype definitions
β”œβ”€β”€ scripts/              # Build-time Unsplash image pipeline
└── docs/                 # Architecture & release notes

See docs/ARCHITECTURE.md for a deeper dive into the rendering pipeline.

☁️ Deployment

Genesis is a static-friendly Next.js app and deploys to Vercel with zero config:

vercel --prod

Or connect the GitHub repo in the Vercel dashboard for automatic deploys on every push.

πŸ–ΌοΈ Image Credits

Cinematic photography courtesy of Unsplash β€” see the in-app footer for individual photographer attribution (NASA, Lightscape, Jeremy Thomas, Nicolas Thomas, Javier Miranda, Ezi and more).

πŸ“„ License

MIT Β© Shahriar Ahmed

Built with Next.js, Three.js & a love for the cosmos.

About

🌌 A real-time, GPU-accelerated procedural planet studio for the web β€” sculpt and render cinematic alien worlds with Three.js, GLSL & Next.js.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages