← Back
souranyp-stack

souranyp-stack/koi-pond-garden

Interactive Japanese koi pond garden rendered in real time with Three.js — one HTML file, no build step, no assets.

View on GitHub ↗https://souranyp-stack.github.io/koi-pond-garden/ ↗
creative-codingjavascriptkoi-pondthreejswebgl
Stars
38
Forks
15
Watchers
38
Open issues
0
Contributors
1
Language
HTML
License
MIT License
Default branch
main
Created Sep 27, 2026Updated Sep 27, 2026

Star growth

Today—
This week—
This month—

Star history will appear here once this repo has been tracked for a couple of days.

README

🌸 Koi Pond Garden

An ultra-realistic, interactive Japanese koi pond garden — rendered in real time in the browser with Three.js and custom shaders. The entire garden lives in one HTML file: no build step, no bundler, no asset folder. Every mesh, texture, sound and animation is generated procedurally in code. The only external dependencies are Three.js and dat.gui, loaded from a CDN.

▶️ Live demo · one file · works on desktop and mobile  ·  ⭐ If you like it, star the repo — it helps others find it.

Koi pond garden — live footage

Recorded live in the browser. ▲ Above: the whole scene runs from one HTML file. Below: the pond from above.

Koi pond garden — from above

Features

  • 20 koi across 18 real varieties (Kohaku, Sanke, Showa, Ogon, Asagi, Tancho, Utsuri, butterfly long-fins, Gin Rin sparklers, Doitsu and more) in small, medium and jumbo sizes, each with procedurally generated scales, patterns and fins.
  • Physically simulated water — a live ripple simulation plus Gerstner waves, real reflection and refraction passes, caustics, Beer–Lambert absorption and crystal-clear water by default.
  • A full garden — an arched bridge, a pavilion, a rock waterfall, sakura, a red maple, a bamboo grove, sacred lotus, water lilies, iris beds, stone lanterns and distant mountains.
  • Pond life — a frog that leaps when you click it, a turtle sunning on a rock, and dragonflies darting over the surface.
  • Feed and stroke the koi — a first-person hand reaches in to sprinkle food (the fish crowd and jostle) or to gently stroke a fish that swims up to your hand.
  • Weather and seasons — sunny, rain, autumn and snowy winter, each with matching light, fog and water.
  • A cinematic film tour that flies through the whole garden, above and below the water.
  • Procedural audio — water, leaves, the waterfall, a bamboo shishi-odoshi knock and more, all synthesized with the Web Audio API.

Controls

Key Action Key Action
C Cinematic / manual camera E Feed the koi
P Hold the current shot G Stroke a koi
O Freeze time K Follow a koi
V Clean view (hide UI) T Change weather / season
M Mute / unmute H Show the control panel
I Show / hide the guide

Manual camera: drag to look, W A S D to move, Q / Space down / up, Shift to move faster. Click the water for ripples, or click the frog to make it leap.

Run it locally

It's a single file, so you can just open it — but a local server avoids browser security limits on textures and audio:

git clone https://github.com/souranyp-stack/koi-pond-garden.git
cd koi-pond-garden
python3 -m http.server 8765
# then open http://localhost:8765/koi-pond.html

Or simply double-click koi-pond.html to open it directly in your browser.

How it's made

Everything you see is built by code when the page loads — there are no .png, .glb, .mp3 or font files anywhere:

  • Geometry (koi bodies, rocks, the bridge, trees, the hand) is generated from curves, noise and instancing at runtime.
  • Textures (koi patterns, scales, bark, stone, the pond floor) are drawn into canvases and data arrays in code.
  • Water, lighting, shadows, caustics and depth of field are custom GLSL shaders running on the GPU via WebGL.
  • Sound is synthesized with the Web Audio API — no recordings.

That's why the whole thing is one ~560 KB text file instead of a folder of megabytes of assets, and why anyone can open it and read exactly how any part works.

The prompt

This project was built by directing Claude in rounds — describe, run, screenshot, measure, fix, repeat. The prompt/ folder contains the one-shot prompt that specifies the whole build, so you can rebuild a garden like this yourself:

  • prompt/one-shot-prompt.txt — the full specification, paste into a fresh session.
  • prompt/edit-existing-file.txt — a short prompt for editing this file without rewriting it.

Tech

  • Three.js r160 (WebGL renderer)
  • dat.gui for the control panel
  • Custom GLSL shaders, procedural textures, and the Web Audio API
  • No build step, no framework, no assets

Show your support

If this made you smile, please ⭐ star the repo and share it — it genuinely helps more people find it. Built something with the prompt? I'd love to see it.

License

MIT © 2026 Sourany Phomhome. Free to use, modify and share, including commercially — just keep the copyright notice. A mention or a star is always appreciated. ⭐

Built with Claude.