xenocept-plugin-aeor-eye-forge
v0.2.0
Published
VIP-only Xenocept eye plugin for designing custom iris textures with stackable procedural and image layers, saved-eye presets, blink controls, and specular customization.
Maintainers
Readme
xenocept-plugin-aeor-eye-forge
A stackable filter-pipeline iris-texture generator for the Xenocept eye. This is a VIP-only plugin for Xenocept users who want advanced eye customization, saved eye presets, image layers, and procedural iris generation.
What it does
Implements the eye-role plugin contract (role='eye',
getEyeTexture(), getEyeBlinkConfig()) and lets you build your eye
from a stack of filter layers — each with its own params + blend
mode — composited together into a single 512×512 texture for the
WebGL ray-traced <xenocept-eye-3d> component.
Filter types
| Filter | What it does | |--------------------|-----------------------------------------------------------------------| | Image | Uploaded image layer stored in the eye config and rendered into the pipeline | | Spots | N randomly-placed circles, configurable size range + color + seed | | Voronoi | N-site Voronoi diagram; per-cell color from a 2-color palette; optional cell-edge stroke | | Radial blur | Stretches the canvas outward from a center point (adjustment filter) | | L-tree | L-system fractal turtle-graphics (4 presets: branching, lightning, plant, snowflake) | | Pupil | Circle / ellipse / rectangle shape at a chosen position + rotation | | Glow / blur | Gaussian blur + hue/saturation/lightness shift on the underlay (adjustment) | | HSL | Hue / saturation / lightness adjustment on the underlay (adjustment) |
Blend modes
Every layer (and every group) picks a globalCompositeOperation from
Canvas2D's native list: source-over, multiply, screen, overlay,
darken, lighten, lighter (additive), difference, exclusion,
color-dodge, color-burn, hard-light, soft-light, hue,
saturation, color, luminosity.
Notes on the user-facing "subtract / divide / invert" concepts:
- Add is
lighter - Subtract is closest to
difference(with a white underlayer it's invert) - Divide isn't native; achievable via
difference+ a properly-tinted layer
Layer groups
Layers can be grouped. Each group is its own sub-pipeline:
- The group's children render onto an isolated scratch canvas, in order
- Adjustment filters (blur, glow, HSL) inside the group operate on the group's own canvas, not the parent
- When the group is finished, the whole scratch canvas composites onto the parent as a single layer (with the group's blend mode + alpha)
The starter pipeline demonstrates this with a "Pupil + glow" group:
- Draw a fat pupil
- Glow-filter it (blur + lighten)
- Stamp a smaller, sharp pupil on top
- Composite the whole group onto the iris below as a single layer
Net effect: a black pupil with a soft purple bloom around it, contained inside the group — the blur doesn't smear the iris behind.
Architecture
index.mjs— single-file plugin. RegistersEyeForgePluginwithstatic role = 'eye'. ImplementsgetEyeTexture()andgetEyeBlinkConfig().renderConfigUI()builds the layer-list UI.- Each filter is one entry in the
FILTERSregistry withdefaultParams(), aschema(drives the param UI), and arender(ctx, params, prng, size)function. - The
renderPipeline(canvas, layers, size)function is recursive: a group node recurses into its children. A seededmulberry32PRNG per layer keeps generation deterministic across re-renders of the same config. - Config is stored as a single JSON blob in xenocept's per-plugin
config store (
/api/v1/plugins/npm/.../config). The Configure modal uses one hidden<input name="config_json">to channel the whole nested structure through the host's form-collector save path.
Install
Install from Xenocept's plugin browser by searching for
xenocept-plugin-aeor-eye-forge. The plugin can be installed by any
Xenocept user, but its configuration UI is available only to VIP users.
Install (dev)
# Requires xenocept running with:
# xenocept --dev-mode --unsafe-allow-unsigned-plugins
./dev-install.shThen in xenocept:
- Settings → Plugins → Eye Forge → Configure
- Build your composition (the preview canvas updates live)
- Save
- Hold "Hold to use as your eye" — page reloads, the brand eye is now yours
License
Proprietary. AEOR Development LLC, all rights reserved. Not for redistribution outside authorized Xenocept plugin channels.
