mcpbeat

Threejs Procedural Materials

scottstts/threejs-procedural-materials

Author production procedural materials in Three.js. Use for hybrid texture-backed PBR soil and moss with procedural displacement and masks, upward-facing model moss accumulation, atlas filtering, specular AA, planet-space fields, terrain wetness, lava and emissive surfaces, per-instance dissolve, authored PBR identities, derivative normals, and custom direct-light shadow modulation.

2949k tokens
context cost
the whole folder, loaded on every use
16
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
527
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/scottstts/Threejs-Awesome-Graphics-Agent-Skills --skill threejs-procedural-materials

The instruction itself

5 sections, as written by the author

Procedural Materials

Build a material from surface identity and causes. Color, roughness, metalness, normal, transmission, and emission should describe the same surface—not unrelated noise textures.

Material graph order

stable coordinates
  → structural fields
  → material identity weights
  → causal modifiers
  → filtered microstructure
  → PBR channels
  → lighting/shadow extensions

Read references/procedural-pbr-system.md

for atlas filtering, specular AA, planetary coordinates,

world-height wetness, per-instance dissolve, and authored PBR response bundles.

Read the

sculpted gallery frame geometry

for walnut, antique-gold, and ebony texture/roughness/metalness/clearcoat

bundles under a grazing-light setup.

Read the

procedural planet surface

for shared geological, climate, water, biome, roughness, and derivative-normal

causes on a procedural planetary surface.

Read the

analytic wave optics

for coupled reflection, refraction, absorption, filtered microstructure,

resolved crest response, and their diagnostic channels.

Read the

lava flow surface material

for raymarched procedural height fields whose normals, rock/lava identity,

emission, glow, embers, fog, and grain are coupled to one material cause stack.

Required controls

  • real or perceptual texture scale;
  • material identity weights;
  • roughness range and micro-normal strength;
  • the causal fields required by the selected material pattern;
  • distance/derivative filtering;
  • specular antialiasing;
  • channel and mask debug modes.
  • emissive-material debug modes when the material owns glow or volumetric

accumulation.

Read references/hybrid-soil-moss-surface.md

and the

hybrid soil and moss implementation

for texture-backed soil and moss albedo, AO, roughness, and normal microdetail

combined with procedural mound displacement, moisture, moss coverage/height,

and warped cellular cracks. Do not describe its surface identity as fully

procedurally synthesized. When moss must also settle onto a model, read the

model moss implementation

for model-locked coverage, upward-face accumulation, displaced thickness, and

shared moss PBR identity.

Failure conditions

  • every PBR channel samples independent noise;
  • roughness is a scalar afterthought;
  • high-frequency normals survive below one pixel;
  • triplanar projection has visible orientation or scale seams;
  • atlas padding is ignored under mipmapping;
  • custom lighting removes energy conservation without an explicit stylized goal;
  • post-processing is used to hide unstable highlights.

Routing boundary

Use $threejs-procedural-fields when the main problem is designing shared

scalar/vector causes. Use $threejs-procedural-planets for a complete

orbit-to-close-approach body, not merely its material. Use

$threejs-parallax-occlusion-mapping when a height field must own ray-marched

intersection, silhouette coverage, or relief-aware shadows.

How to use it

Copy the folder

Take scottstts/threejs-procedural-materials from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.