mrkeyoor.com_
Sat 17 Oct 13:32 UTC
Webevaluationupdated 15 Oct 2026

caustic-volume review

Caustic Volume is an interactive browser experiment showing how moving water bends light into bright patterns on a tank floor. Its smaller Lite version is designed for reading and modest hardware, while the larger sandbox adds objects, creatures, and more demanding lighting effects.

+1 / 1dstars / 7d
Verdict

Caustic Volume built in 4 seconds in our sandbox, but its browser test step failed after 6 seconds with a Playwright installation prompt. Use Lite as a graphics example to study and verify on your own devices. Treat the larger sandbox as an experiment to evaluate on a capable GPU before borrowing it for a public application.

We ran it

Lab card: what happened when we ran caustic-volumeScreenshot of caustic-volume (github.com/ScottieFox/caustic-volume)
Install✓ · 10s3 packages · 41 MB
Build✓ · 4s
Tests✗ · 6sran, no count parsed
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo36 files~7,499 lines of source · 1.5 MB · 0 CI workflows

Answers from our run

Does caustic-volume build from source?

Dependencies installed in 10 seconds (3 packages), and the build succeeded in 4 seconds. We cloned commit d87351b into a clean Debian container with 3 CPUs and no project-specific setup.

Do caustic-volume's tests pass?

No. The project's own test command exited unsuccessfully after 6 seconds, and its output did not expose an individual test count.

Does caustic-volume have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use caustic-volume?

Users expecting the full sandbox to fall back to CPU rendering: the README gives that fallback to Lite and requires float render targets for the sandbox.

What are the alternatives to caustic-volume?

WebGL Water Demo, three.js. Caustic Volume built in 4 seconds in our sandbox, but its browser test step failed after 6 seconds with a Playwright installation prompt.

Setup4/5Simple HTML viewing path, but our browser check failed
Docs4/5Clear renderer split, controls, source map, and fallback guidance
Community2/5179 stars, September 26 push, and no issue activity to assess
Maturity2/5Build passes, but browser checks failed and no CI was found

Who it’s for

Graphics developers who want readable browser code for water, ripples, and refracted light.
Teachers or curious users who want an interactive water scene with a documented CPU fallback in Lite.
Three.js users willing to adapt a standalone experiment rather than import a finished application component.

Who it’s NOT for

Users expecting the full sandbox to fall back to CPU rendering: the README gives that fallback to Lite and requires float render targets for the sandbox.
Offline demonstrations that require the normal GPU path without preparing assets: the HTML pages load three.js from a CDN, and Lite falls back when it cannot load it.
Teams requiring a green fresh-container browser check before reuse: our measured test step failed and requested Playwright installation.
Developers seeking a packaged water widget: the project ships standalone HTML scenes, with sandbox source modules joined into a page.

Setup reality

Our sandbox installed Caustic Volume commit d87351b in 10 seconds, adding 3 packages and using 41 MB. The build passed in 4 seconds. Tests failed with exit 1 after 6 seconds, and the log tail requested npx playwright install. Npm audit reported 0 known vulnerabilities.

The documented viewing path opens an HTML file in a browser, with no account or service credential. The normal renderer loads three.js from jsDelivr, so its first load needs internet access. Developer browser checks have a separate Playwright browser-install step in the README.

Lite can switch to a CPU renderer when WebGL 2 or the CDN import is unavailable. The full sandbox requires WebGL 2, EXT_color_buffer_float, and a capable GPU. Our build result does not establish browser performance, and the failed test step leaves rendering unverified by the lab.

Lite's fallback makes it the better starting point

Caustic Volume gives you a small tank scene in Lite and a larger sandbox with more simulation and lighting controls. The README says Lite switches to a CPU renderer when WebGL 2 is unavailable or three.js cannot load. I would start there if your goal is understanding the effect or showing it on an unfamiliar machine. The fallback offers a documented path beyond a failed graphics initialization.

Our checkout was 1.5 MB, with 36 files and about 7,499 source lines. The distinction between the versions is useful: Lite concentrates on water and a duck, while the sandbox adds creatures, ink, sand, and more elaborate light. Choose the amount of code that matches what you want to learn.

What happened when we ran it

Our sandbox installed Caustic Volume commit d87351b in 10 seconds, adding 3 packages and occupying 41 MB. The build passed in 4 seconds. We ran the October 14, 2026 job in a fresh Debian container with 3 CPUs, 8 GB of RAM, image lab-node:22, no secrets, and no elevated privileges. Npm audit reported 0 known vulnerabilities in the measured environment.

The test step failed with exit 1 after 6 seconds. Its supplied log tail asked for npx playwright install and pointed to tools/test-lite.cjs, including the browser-launch location. The tail also printed Node.js v18.20.8, despite the lab image's name. The record doesn't explain that difference. It supplies no passing browser check and no basis for claiming that the scene rendered successfully in our container.

That failed step is narrower than a finding that the water renderer is broken. The log asks for browser installation, and the development instructions explicitly include a Playwright Chromium installation step. Our result shows that the measured environment did not complete its browser check. It doesn't show what would happen after following that prerequisite, and we haven't substituted a guessed result for a rerun.

The browser path differs from the developer workflow

The README tells viewers to open either version's HTML file directly. It says the normal renderer loads three.js from jsDelivr and needs an internet connection on first load. That distinction matters for a lesson or presentation on a disconnected machine. A downloaded HTML file still has an external script dependency. Lite's CPU renderer is the documented fallback if that import cannot complete.

The 3 packages in our npm installation belong to the developer environment we measured. They don't make npm a requirement for someone opening the existing scenes. Conversely, opening a scene successfully would not prove its browser-check tooling is ready. Viewing the scenes and modifying them need different preparation.

The full sandbox has a harder graphics requirement

The browser-support section requires WebGL 2 with float render targets for the sandbox. It directs unsupported users toward Lite. That is a clear boundary for anyone considering a decorative effect on a public page: visitors won't all have the GPU capability or browser configuration of the machine on which you developed it. A capable desktop demonstration is insufficient evidence for broad device support.

Our 4-second build offers no frame-rate or GPU memory measurement. The README describes adaptive resolution in Lite and quality presets in the sandbox, but those mechanisms still need device checks. Look for readable controls, acceptable interaction, and sensible behavior when rendering capability disappears. If the effect is secondary to the page's purpose, decide what visitors should see while the graphics are unavailable.

The source explains the effect instead of hiding it

Lite's documentation connects the moving surface to the focused light on the tank floor. It describes sampling water height and slope, refracting rays, and accumulating the resulting light pattern. The controls let a reader change waves, add ripples, and switch illumination. That combination makes the project useful study material: the source and the visible controls refer to the same parts of the simulation.

The complete measured source was roughly 7,499 lines, so start with a narrow modification before adopting the sandbox. Changing a light or disabling an object gives you a smaller question than transplanting the whole scene. The sandbox's module map names the water simulation, photon tracing, and post-processing files. Use that map to locate the effect you need, rather than carrying every creature and control into a different application.

MIT terms permit reuse, while packaging remains your work

The README's license section identifies MIT terms and asks copies to retain the copyright and license notice. That supports commercial adaptation without a project-specific subscription. The shipped unit is still a standalone scene. If you need a component in an existing application, plan how you will initialize it, release graphics resources, and reconcile its controls with your page.

The build passed in 4 seconds, but it joins sandbox modules into the existing HTML page. That result doesn't establish a reusable component API. Three.js itself is the more direct foundation when you already know the scene you want to build. Caustic Volume is useful when its particular water and light implementation gives you source worth learning from or adapting.

September activity leaves support history thin

GitHub recorded a push on September 26, 2026, with 179 stars and no open issues and PRs when checked. The issue endpoint returned no entries, and there was no latest release entry. The recent push establishes activity, while the empty discussion record gives little evidence about how rendering problems are handled across devices. Neither observation justifies declaring the project abandoned or broadly validated.

Our scan found 0 CI workflow files, and the measured browser step did not pass. Keep the project in the study-and-adapt category until your target browsers render the version you intend to use. For a first experiment, Lite offers the smaller scene and the documented CPU route. Try the larger sandbox when its extra lighting and simulation are the reason you're opening the source.

Alternatives

ProjectWhat it isPick it when
WebGL Water DemoEvan Wallace's browser water demonstration.pick this instead when you want another focused water-rendering example to study beside the larger sandbox.
three.js gh↗A JavaScript 3D library for building your own browser scenes.pick this instead when you need to design a reusable scene around your application rather than adapt these finished HTML experiments.

What people are saying

  1. [velocity-scout] ScottieFox/caustic-volume

Sources

  1. Caustic Volume README
  2. Measured revision browser-check source
  3. Browser support
  4. Development prerequisites
  5. MIT license

More web reviews

dioramas · elpis · deepseek-whale-girl · floorplan-3d · taro · driver.js · the whole board →