Skip to content
Skillv1.0.0

threejs-lighting

Design and debug Three.js lighting with directional, point, spot, hemisphere, and area lights, shadow maps, image-based lighting, environment maps, light helpers, and performance budgets. Use when lig

by akillness(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from akillness/jeo-skills (.agent-skills/threejs-lighting/SKILL.md). Install upstream with npx skills add akillness/jeo-skills --skill threejs-lighting. Copyright stays with the author (MIT).

Three.js Lighting

Use this skill for light selection, shadow behavior, and image-based illumination. Route PBR surface settings to threejs-materials, HDR/environment asset setup to threejs-textures, and screen-space effects to threejs-postprocessing.

When to use this skill

  • Light a scene with physically meaningful direct and ambient/environment contribution
  • Configure directional, point, or spot shadows without uncontrolled quality cost
  • Set up an HDR environment for PBR reflections and diffuse illumination
  • Diagnose black, flat, overexposed, acne-prone, or performance-heavy lighting

Instructions

Step 1: Start from material and exposure reality

  1. Confirm the mesh uses a light-reactive material such as MeshStandardMaterial; an unlit MeshBasicMaterial cannot demonstrate lighting changes.
  2. Establish renderer color/tone settings before compensating with arbitrary light values.
  3. Decide whether the scene needs direct lights, image-based lighting, or both. A single ambient light hides shape; use it sparingly as fill, not as an all-purpose fix.

Step 2: Choose the narrowest light model

Visual requirement Default
Sun/moon-like directional source DirectionalLight
Local bulb or small emitter PointLight
Cone/projector with falloff SpotLight
Soft sky/ground fill HemisphereLight
Large studio panel RectAreaLight
PBR reflection and ambient response Environment map / IBL
const key = new THREE.DirectionalLight(0xffffff, 3);
key.position.set(4, 6, 3);
key.castShadow = true;
scene.add(key);
scene.add(new THREE.HemisphereLight(0xcfe8ff, 0x223344, 1));

Use helpers during setup, then remove or gate them in production views.

Step 3: Make shadows intentional

renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;

mesh.castShadow = true;
mesh.receiveShadow = true;
key.shadow.mapSize.set(1024, 1024);
key.shadow.camera.near = 0.5;
key.shadow.camera.far = 30;

Tighten the shadow camera/frustum around real casters and receivers. Increase map size, number of shadow-casting lights, or update frequency only after profiling target hardware. Address acne/peter-panning by checking geometry scale, bias, and normal bias—not by blindly pushing values until artifacts invert.

Step 4: Add image-based lighting when PBR requires it

Load and preprocess an HDR/equirectangular asset through the appropriate loader/PMREM path for the installed Three.js version. Set scene.environment for material response; set scene.background separately when the environment should also be visible.

Step 5: Verify look and budget

  • Compare the material response with shadows off/on, direct light only, and IBL only.
  • Test shadow edges, moving casters, and objects near the light's shadow bounds.
  • Profile on target devices with real scene density before raising quality tiers.
  • Verify teardown disposes feature-owned environment/render resources through the texture-loading owner.

Examples

Small product presentation

Use a key directional/area source, low-intensity fill, and an environment map. Do not simulate every studio bounce with many shadowed point lights; PBR environment lighting is usually more stable and cheaper.

Outdoor scene

Use one directional sun, a sky/ground hemisphere contribution, and a bounded shadow camera that follows the visible play/view area only when required.

Best practices

  1. Light for material response, not only for a bright screenshot.
  2. Keep shadow casters/receivers and the shadow frustum as small as the visual need allows.
  3. Use environment maps for PBR instead of stacking ambient lights.
  4. Tune tone mapping/exposure at the renderer level before distorting every light.
  5. Treat every shadow quality increase as a measured performance tradeoff.

References

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/akillness-jeo-skills-threejs-lighting/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

akillness-jeo-skills-threejs-lighting.ocm.jsonjson
{
  "ocm": "1",
  "id": "akillness-jeo-skills-threejs-lighting",
  "kind": "skill",
  "name": "threejs-lighting",
  "description": "Design and debug Three.js lighting with directional, point, spot, hemisphere, and area lights, shadow maps, image-based lighting, environment maps, light helpers, and performance budgets. Use when lighting a 3D scene, configuring shadows, setting up HDR illumination, matching a visual reference, or fixing dark, flat, or expensive renders. Triggers on: Three.js lighting, directional light, point light, spot light, shadows, shadow map, ambient light, HDR environment, IBL, environment map, light helper.",
  "publisher": "akillness",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "three-js",
      "lighting",
      "shadows",
      "environment-map",
      "ibl",
      "hdr",
      "pbr",
      "webgl",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Design and debug Three.js lighting with directional, point, spot, hemisphere, and area lights, shadow maps, image-based lighting, environment maps, light helpers, and performance budgets. Use when lighting a 3D scene, configuring shadows, setting up HDR illumination, matching a visual reference, or fixing dark, flat, or expensive renders. Triggers on: Three.js lighting, directional light, point light, spot light, shadows, shadow map, ambient light, HDR environment, IBL, environment map, light helper."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/akillness/jeo-skills",
      "path": ".agent-skills/threejs-lighting/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/akillness/jeo-skills/blob/HEAD/.agent-skills/threejs-lighting/SKILL.md",
      "key": "akillness/jeo-skills/.agent-skills/threejs-lighting/SKILL.md"
    },
    "allowed_tools": [
      "Bash",
      "Read",
      "Write",
      "Edit",
      "Glob",
      "Grep"
    ],
    "license": "MIT"
  },
  "instructions": "# Three.js Lighting\n\nUse this skill for light selection, shadow behavior, and image-based illumination. Route\nPBR surface settings to `threejs-materials`, HDR/environment asset setup to\n`threejs-textures`, and screen-space effects to `threejs-postprocessing`.\n\n## When to use this skill\n\n- Light a scene with physically meaningful direct and ambient/environment contribution\n- Configure directional, point, or spot shadows without uncontrolled quality cost\n- Set up an HDR environment for PBR reflections and diffuse illumination\n- Diagnose black, flat, overexposed, acne-prone, or performance-heavy ",
  "cost": {
    "context_tokens": 1037
  }
}

Fetch it by URL: GET /api/v1/registry/akillness-jeo-skills-threejs-lighting/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.