Pro

Mycelium

42 hyphae growing from a centre, branching and regrowing.

Each hypha grows, dies back and grows again on its own cycle. The tips are lit.

What you get

The full source and any assets are delivered after checkout. One payment of USD 10 unlocks every pro element. The start of the file is shown here.

Mycelium.tsxPro · full source after checkout
"use client";

/**
 * Mycelium — hyphae growing out from a centre, branching, tips lit,
 * dying back and regrowing. Morphology 07. Ships with PointPlotter.tsx.
 *
 *   <Mycelium ink="#f7efe3" accent="#b5f23d" points={22000} speed={1} />
 */
import { PointPlotter, type PlotFn } from "./PointPlotter";

export type MyceliumProps = { ink?: string; accent?: string; points?: number; speed?: number; className?: string };

const { cos, sin, PI } = Math;
const TAU = PI * 2;
const HYPHAE = 42;

const plot: PlotFn = (i, n, t) => {
  const h = i % HYPHAE;
  const rows = Math.ceil(n / HYPHAE);
  const v = Math.floor(i / HYPHAE) / rows;

  // Each hypha grows, pauses, dies back, grows again — out of step.
  const grow = 0.35 + 0.65 * (0.5 + 0.5 * sin(t * 0.3 + h * 1.7));
  if (v > grow) return null;

  const theta0 = (h / HYPHAE) * TAU + 0.3 * sin(h * 7.3);
  let theta = theta0 + 0.35 * sin(v * 6 + h) + 0.2 * sin(v * 13 - t * 0.8 + h * 2);
  // Every other point past the midpoint belongs to a side branch.
PointPlotter.tsx · shipped with itPro · full source after checkout
"use client";

/**
 * Point Plotter — the engine under the Morphology series.
 *
 * No dependencies. Every organism in the series is a function
 * `plot(i, n, t, pointer)` that places the i-th of n points in a
 * 400×400 space and says whether it is an accent point. This file
 * draws those points, tens of thousands a frame, on a 2D canvas: faint
 * ink for the body, a brighter colour with a soft glow for the
 * accents, and the formula as a caption in the corner.
 *
 * Ships with every organism. You should not need to edit it.
 */
import { useEffect, useRef } from "react";

export type Pointer = { x: number; y: number; active: boolean };

/**
 * [x, y, accent, weight?] in 400×400 space, or null to skip the point.
 * `weight` (0–1) dims the point — used for depth on the 3D forms.
 */
export type PlotPoint = readonly [number, number, boolean] | readonly [number, number, boolean, number] | null;
export type PlotFn = (i: number, n: number, t: number, pointer: Pointer) => PlotPoint;

export type PointPlotterProps = {
  plot: PlotFn;
  points: number;

Inside

  • Radial hyphae with a wandering angle
  • Growth and die-back out of step
  • Branching after the midpoint
  • Accent at the growing tips
  • Canvas 2D, no packages; ships with PointPlotter.tsx
  • Formula caption in the corner; props for ink, accent, points and speed

Install

No packages to install.

2 files: Mycelium.tsx, PointPlotter.tsx.

Kind
Organic forms
Licence
Unlimited projects
Runs on
React 19
Price
USD 10, all access

More elements

Morphology 01
Pro
Cilia: open the element page

Cilia

A ribbed form on a curved axis, with the rib tips lit.

Price
USD 10, all access
Built with
Plain React
Morphology 02
Pro
Medusa: open the element page

Medusa

A jellyfish with a pulsing bell and sixteen trailing tentacles.

Price
USD 10, all access
Built with
Plain React

FAQ

What you get, what it runs on, what it costs to run and what the licence allows.

01

What do I get?

One React component file per element, plus any shader or asset files it needs. Members of a series also get the small engine file they share. Free elements are copied from the page. Pro elements are a download after one payment of USD 10, which unlocks all of them. Each element imports only public packages, which are listed on its page.

02

What does it run on?

React 19. The 3D and shader elements use three.js through React Three Fiber. The 2D ones use Framer Motion or plain CSS and canvas. They work in Next.js, Vite, Remix and any other React setup. Framer and Webflow users can embed an element as a code component.

03

Can I change the colours and speed?

Yes. Every element exposes its look as props, the same controls shown on its page. Anything beyond the props is yours to edit in the file.

04

Can I use these in a deck, a magazine or a film?

Yes. Every element page has a Save frame button that downloads the current frame as a PNG at the size shown. Make the browser window large for a print-size still. For motion, record the page or ask us for a rendered clip. The licence covers web, print, decks and video, for your own work and your clients' work.

05

How heavy is it?

The 3D elements mount when they scroll into view and unmount when they leave, so an element off screen costs nothing. The shader backgrounds cost a fraction of a video background. The 2D elements are a few kilobytes.

06

What is the licence?

Free elements are MIT. Use them anywhere, including client work. Pro elements are licensed to you for unlimited projects of your own and your clients'. You may not resell or redistribute the source itself.

07

Can you make one for us?

Yes. A custom element, such as your product in 3D or a branded shader, is a small project quoted up front. All-access members are asked first about what we build next.