npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@genart-dev/plugin-atmosphere

v0.2.0

Published

Atmospheric effects for genart.dev — fog, mist, and cloud layers with terrain masking and depth stacking

Downloads

226

Readme

@genart-dev/plugin-atmosphere

Atmospheric effects for genart.dev — fog, mist, clouds, and haze layers with terrain masking and depth stacking. 37 presets across 4 categories, with 7 MCP tools for AI-agent control.

Part of genart.dev — a generative art platform with an MCP server, desktop app, and IDE extensions.

Install

npm install @genart-dev/plugin-atmosphere

Usage

import atmospherePlugin from "@genart-dev/plugin-atmosphere";
import { createDefaultRegistry } from "@genart-dev/core";

const registry = createDefaultRegistry();
registry.registerPlugin(atmospherePlugin);

// Or access individual exports
import {
  ALL_PRESETS,
  getPreset,
  filterPresets,
  searchPresets,
  fogLayerType,
  mistLayerType,
  cloudsLayerType,
  hazeLayerType,
} from "@genart-dev/plugin-atmosphere";

Layer Types (4)

| Layer Type | Category | Default Preset | Description | |---|---|---|---| | atmosphere:fog | Fog (5) | morning-valley-fog | Ground-level fog with terrain masking support, 4 fog types | | atmosphere:mist | Mist (4) | morning-mist | Mid-level haze bands with parallax stacking and drift | | atmosphere:clouds | Clouds (22) | fair-weather-cumulus | Sky-level formations with 20 cloud types, 3 algorithms, layered-tint shadowing | | atmosphere:haze | Haze (6) | light-haze | Gradient atmospheric haze with 4 directions and noise modulation |

Presets (37)

Fog (5)

| Preview | ID | Name | Description | |---|---|---|---| | | morning-valley-fog | Morning Valley Fog | Calm radiation fog settling in valleys at dawn | | | sea-fog | Sea Fog | Dense advection fog rolling in from the coast | | | mountain-fog | Mountain Fog | Upslope fog clinging to mountain ridges, patchy and layered | | | dense-fog | Dense Fog | Thick valley fog reducing visibility to near zero | | | patchy-fog | Patchy Fog | Scattered fog patches with terrain features visible between gaps |

Mist (4)

| Preview | ID | Name | Description | |---|---|---|---| | | morning-mist | Morning Mist | Light haze bands creating gentle depth separation at dawn | | | mountain-haze | Mountain Haze | Layered blue-gray haze between mountain ridges | | | thick-mist | Thick Mist | Heavy mist reducing visibility, strong atmospheric presence | | | layered-mist | Layered Mist | Multiple distinct mist bands with strong parallax depth |

Clouds (22)

| Preview | ID | Name | Description | |---|---|---|---| | | fair-weather-cumulus | Fair Weather Cumulus | Scattered puffy cumulus on a clear day, flat bases and rounded tops | | | towering-cumulus | Towering Cumulus | Large vertical cumulus with dramatic light and shadow | | | overcast-stratus | Overcast Stratus | Flat uniform cloud layer covering most of the sky | | | stratocumulus-field | Stratocumulus Field | Regular field of rounded cloud patches with gaps | | | wispy-cirrus | Wispy Cirrus | High-altitude ice crystal streaks, thin and translucent | | | sunset-cumulus | Sunset Cumulus | Cumulus clouds lit from below by warm sunset light | | | storm-clouds | Storm Clouds | Dark heavy cumulonimbus with dramatic light contrast | | | mackerel-sky | Mackerel Sky | High-altitude cirrocumulus in a regular rippled pattern like fish scales | | | cirrostratus-veil | Cirrostratus Veil | Thin uniform high-altitude ice crystal veil creating a milky sky | | | altocumulus-field | Altocumulus Field | Mid-level cloud cells in a patchy field with rounded edges and blue gaps | | | altostratus-sheet | Altostratus Sheet | Uniform mid-level cloud sheet filtering sunlight into a gray-blue sky | | | castellanus-turrets | Castellanus Turrets | Small tower-like cumulus rising from a mid-level base, instability indicator | | | cumulus-congestus | Cumulus Congestus | Tall towering cumulus with vigorous vertical development | | | nimbostratus-overcast | Nimbostratus Overcast | Dark thick low cloud layer covering the entire sky, continuous rain expected | | | cumulonimbus-anvil | Cumulonimbus Anvil | Massive thunderstorm cloud with flat anvil-shaped top spreading horizontally | | | lenticular-lens | Lenticular Lens | Smooth lens-shaped cloud formed by standing mountain waves, UFO-like | | | mammatus-pouches | Mammatus Pouches | Inverted bulging pouch-like formations hanging below a cloud base | | | fog-bank-low | Fog Bank Low | Dense low-lying fog bank with sharp top edge, viewed from above | | | contrail-thin | Contrail Thin | Thin straight aircraft contrail slowly spreading in upper atmosphere | | | pyrocumulus-dark | Pyrocumulus Dark | Fire-generated cumulus with dark smoky base and explosive cauliflower top | | | banner-peak | Banner Peak | Elongated cloud trailing from a mountain peak like a flag | | | pileus-cap | Pileus Cap | Thin smooth cap cloud draped over the top of a growing cumulus |

Haze (6)

| Preview | ID | Name | Description | |---|---|---|---| | | light-haze | Light Haze | Subtle atmospheric haze softening distant elements | | | golden-haze | Golden Haze | Warm golden atmospheric haze typical of golden hour lighting | | | cool-mist-haze | Cool Mist Haze | Cool blue-gray atmospheric haze for mountain depth | | | heat-haze | Heat Haze | Shimmering heat haze rising from ground level | | | ink-wash-haze | Ink Wash Haze | Soft monochrome haze evoking Chinese ink wash painting depth | | | twilight-haze | Twilight Haze | Deep blue-purple atmospheric haze of late twilight |

Mood Scenes (5)

The create_atmosphere MCP tool composes multi-layer scenes from curated preset combinations:

| Preview | Mood | Layers | Description | |---|---|---|---| | | calm-morning | fog + mist + cumulus | Valley fog, morning mist bands, and fair-weather clouds | | | dramatic-storm | dense fog + storm clouds | Heavy fog with towering dark cumulonimbus | | | misty-mountain | mountain fog + mist + haze | Upslope fog with blue-gray mountain haze layers | | | clear-day | cumulus only | Scattered fair-weather cumulus on a blue sky | | | golden-sunset | haze + sunset cumulus | Warm golden haze with sunset-lit cumulus layers |

Rendering

Each layer type renders via canvas2d at reduced resolution for performance:

  • Fog — Domain-warped fractal noise with patchiness control, vertical color gradient, fog-type modifiers (valley = denser at bottom, upslope = denser at top). 1/4 resolution.
  • Mist — Multi-layer parallax noise bands with per-layer noise scale variation and drift offset. 1/4 resolution.
  • Clouds — 20 cloud types via CloudFormation billow system, three rendering algorithms:
    • Discrete: Multi-lobe formations with layered-tint shadowing (3-pass: shadow/body/highlight)
    • Threshold: Warped noise field with Worley cellular blending and layered-tint shadowing
    • Streak: Continuous tapered strokes via perpendicular-distance rendering (cirrus, contrails, pileus)
  • Haze — Gradient atmospheric color with 4 directions (bottom-up, top-down, center-out, uniform), noise-modulated density. 1/4 resolution.

Terrain Masking (ADR 083)

Atmosphere layers are designed to work with the compositor masking system:

// Fog masked by terrain:profile — fog is occluded by foreground terrain
layers.setMask(fogLayerId, terrainProfileId, "alpha");

// Mist behind terrain — mist only shows behind terrain ridges
layers.setMask(mistLayerId, terrainProfileId, "inverted-alpha");

The masking is handled by the compositor in @genart-dev/core@^0.7.0, not by the plugin itself.

Depth Slot System

Every atmosphere layer has a depthSlot property (0-1) for front-to-back ordering:

  • 0 = closest to viewer (foreground)
  • 1 = farthest background (sky level)

Default values: fog = 0.2, mist = 0.6, clouds = 1.0.

MCP Tools (7)

Exposed to AI agents through the MCP server when this plugin is registered:

| Tool | Description | |---|---| | add_fog | Add a fog layer by preset with optional overrides (fogType, density, color, opacity, fogLayers, wispDensity) | | add_mist | Add a mist layer by preset with optional overrides (density, layerCount, color, skyColor, colorShift) | | add_clouds | Add a cloud layer by preset or cloud type with optional overrides (cloudType, coverage, sunAngle) | | add_haze | Add a haze layer by preset with optional overrides (color, opacity, gradientDirection, noiseAmount) | | list_atmosphere_presets | List all presets, optionally filtered by category or search keyword | | set_atmosphere_lighting | Set sunAngle and sunElevation across all cloud layers for consistent lighting | | create_atmosphere | Compose a multi-layer atmospheric scene from 5 mood presets (now includes haze layers) |

Utilities

Shared utilities exported for advanced use:

import {
  mulberry32,                                          // Deterministic PRNG
  createValueNoise, createFractalNoise, createWarpedNoise, createWorleyNoise, // Procedural noise
  parseHex, toHex, lerpColor, varyColor,               // Color utils
} from "@genart-dev/plugin-atmosphere";

Preset Discovery

import { ALL_PRESETS, filterPresets, searchPresets, getPreset } from "@genart-dev/plugin-atmosphere";

// All 37 presets
console.log(ALL_PRESETS.length); // 37

// Filter by category
const fog = filterPresets("fog");       // 5 presets
const clouds = filterPresets("clouds"); // 22 presets
const haze = filterPresets("haze");     // 6 presets

// Full-text search
const results = searchPresets("storm"); // storm-clouds

// Look up by ID
const preset = getPreset("sunset-cumulus");

Examples

The examples/ directory contains 42 .genart files (37 individual presets + 5 mood scenes) with rendered PNG thumbnails.

# Generate .genart example files
node generate-examples.cjs

# Render all examples to PNG (requires @genart-dev/cli)
node render-examples.cjs

Related Packages

| Package | Purpose | |---|---| | @genart-dev/core | Plugin host, layer system, compositor masking (dependency) | | @genart-dev/mcp-server | MCP server that surfaces plugin tools to AI agents | | @genart-dev/plugin-terrain | Sky, terrain profiles — provides masking sources for fog/mist | | @genart-dev/plugin-particles | Particle effects (snow, rain, fireflies) — pairs with atmosphere layers | | @genart-dev/plugin-painting | Vector-field-driven painting layers | | @genart-dev/plugin-plants | Algorithmic plant generation (110 presets) | | @genart-dev/plugin-patterns | Geometric and cultural pattern fills (153 presets) | | @genart-dev/plugin-compositing | Compositing tools including mask set/clear |

Support

Questions, bugs, or feedback — [email protected] or open an issue.

License

MIT