From 2d453b93caf40c1b004fc26bcc84f200d74d4a2c Mon Sep 17 00:00:00 2001 From: grimsace Date: Mon, 16 Mar 2026 15:35:35 -0500 Subject: [PATCH] added readme --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..45aee9f --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Solid Noise Generator — Krita Plugin + +A Krita plugin that generates solid Perlin noise at your canvas resolution. Supports configurable octave detail, scale, seed, and invert. Output is always contrast-stretched so the darkest pixel is pure black and the brightest is pure white. + +--- + +## Installation + +1. In Krita, go to **Tools → Scripts → Import Python Plugin from File…** +2. Select `solid_noise_plugin.zip` +3. Restart Krita +4. Go to **Settings → Configure Krita → Python Plugin Manager**, check **Solid Noise Generator**, click OK +5. Restart Krita again +6. Open the docker via **Settings → Dockers → Solid Noise Generator** + +> **Manual install:** If you prefer, extract the zip and copy `solid_noise.desktop` and the `solid_noise/` folder into your Krita `pykrita` directory: +> - **Linux/macOS:** `~/.local/share/krita/pykrita/` +> - **Windows:** `%APPDATA%\krita\pykrita\` + +--- + +## Controls + +| Control | Description | +|---|---| +| **Octaves (1–16)** | Number of noise layers stacked together. 1 is smooth and cloud-like; 16 is highly detailed. Each octave doubles the frequency and halves the amplitude. | +| **Scale** | Zoom level of the noise pattern. Higher values show more features across the canvas. | +| **Seed** | Determines the random pattern. Same seed always produces the same result. Hit **Random** for a new one. | +| **Invert** | Flips light and dark values. | +| **Generate on new layer** | When checked, noise is painted onto a new layer so your existing content is untouched. | + +--- + +## Performance + +On first use the plugin compiles a small C noise kernel using `gcc` (available by default on Linux, and via Xcode Command Line Tools on macOS). This makes generation very fast — around 0.1–0.5 seconds at 1080p depending on octave count. The status bar shows `[C]` when the fast path is active. + +If `gcc` is not found, the plugin falls back to a pure Python implementation automatically — same results, just slower. + +--- + +## How it works + +Perlin noise is computed using **fractal Brownian motion (fBm)**: multiple octaves of noise are summed, each at double the frequency and half the amplitude of the last: + +``` +value = Σ 0.5^i × perlin(x × 2^i, y × 2^i) + i=0..octaves-1 +``` + +After all octaves are accumulated, the result is **contrast-stretched** so the minimum value maps to pure black (0) and the maximum to pure white (255), guaranteeing full tonal range regardless of settings.