Agent skill

threejs-lights

three.js lighting: AmbientLight, HemisphereLight, DirectionalLight, PointLight, SpotLight, RectAreaLight, LightProbe, IESSpotLight, ProjectorLight, shadow subtypes, and addon helpers such as RectAreaLightUniformsLib, RectAreaLightTexturesLib, LightProbeGenerator, TiledLighting. Use when configuring direct/indirect light, shadows, probes, or area lights; for IES file loading use threejs-loaders; for node-based light graphs use threejs-node-tsl; for debug helpers use threejs-helpers.

Stars 254
Forks 41

Install this agent skill to your Project

npx add-skill https://github.com/partme-ai/full-stack-skills/tree/main/skills/threejs-skills/threejs-lights

SKILL.md

When to use this skill

ALWAYS use this skill when the user mentions:

  • Enabling castShadow / receiveShadow, shadow map size, bias, normal bias, camera frusta for shadow casters
  • Physical lights: intensity, distance/decay, angle/penumbra for spots, rect area setup
  • LightProbe for irradiance-style probes; IESSpotLight with IES data

IMPORTANT: lights vs loaders vs node-tsl

Topic Skill
Light classes and shadows threejs-lights
Loading IES/HDR files threejs-loaders
LightNode / TSL lighting threejs-node-tsl

Trigger phrases include:

  • "DirectionalLight", "SpotLight", "RectAreaLight", "castShadow", "shadow map"
  • "阴影", "点光源", "面光源", "LightProbe"

How to use this skill

  1. Base recipe: ambient/hemisphere fill + directional sun + local points/spots.
  2. Shadows: enable on renderer, mark casters/receivers, tune map size vs performance, adjust bias to remove acne/peter-panning.
  3. RectArea: initialize addon libs per docs page before using light type.
  4. Probes: place probes; generate data via addon generator when applicable; relate to materials env reflections (threejs-materials, threejs-textures).
  5. IES: load profile via loader skill, attach to IESSpotLight per docs.
  6. Performance: limit shadow-casting lights; use layers (threejs-objects) to exclude objects.

Example: Shadow setup with validation

javascript
// 1. Enable shadows on renderer
renderer.shadowMap.enabled = true;

// 2. Configure light as shadow caster
const light = new THREE.DirectionalLight(0xffffff, 1);
light.castShadow = true;
light.shadow.mapSize.set(2048, 2048);
light.shadow.bias = -0.0001; // Adjust to remove shadow acne

// 3. Validate: verify shadow appears before tuning bias
// Set castShadow on meshes, receiveShadow on ground
mesh.castShadow = true;
ground.receiveShadow = true;

See examples/workflow-directional-shadow.md.

Doc map (official)

Docs section Representative links
Lights https://threejs.org/docs/Light.html
Directional https://threejs.org/docs/DirectionalLight.html
Spot https://threejs.org/docs/SpotLight.html
Rect area https://threejs.org/docs/RectAreaLight.html

Scope

  • In scope: Core lights, shadow maps, probes, listed addons for rect area and probe generation.
  • Out of scope: CSM deep theory (see addon Csm docs if user names it); baked lightmaps in DCC.

Common pitfalls and best practices

  • Shadow map resolution must match scene scale—tiny shadows on huge worlds look blocky.
  • Point light shadows are six-face expensive—use wisely.
  • RectAreaLight without required libs yields black or wrong shading—verify init.
  • Mismatched physical units (intensity vs exposure) with threejs-renderers tone mapping causes blown or dim scenes.
  • Shadow bias / normalBias trade-offs: acne vs peter-paning—tune with helper frusta (threejs-helpers).

Documentation and version

Light and shadow classes live under Lights in three.js docs. RectAreaLight and probe addons depend on extra init from Addons → Lights; IES profiles require threejs-loaders for file fetch before the light API is usable.

Agent response checklist

When answering under this skill, prefer responses that:

  1. Link the concrete light type (DirectionalLight, SpotLight, …) and shadow pages when shadows are on.
  2. Separate IES loading to threejs-loaders and LightNode topics to threejs-node-tsl.
  3. Give practical shadow map size / bias guidance with threejs-helpers for frustum visualization.
  4. Mention renderer.shadowMap.enabled alongside light castShadow (see threejs-renderers).
  5. Note performance cost of multiple shadow-casting lights.

References

Keywords

English: lights, shadows, directional, spotlight, rectarea, lightprobe, three.js

中文: 灯光、阴影、平行光、聚光灯、面光源、LightProbe、three.js

Expand your agent's capabilities with these related and highly-rated skills.

partme-ai/full-stack-skills

ocrmypdf-batch

OCRmyPDF batch processing skill — process multiple PDFs, Docker automation, shell scripting, and CI/CD integration. Use when the user needs to OCR many PDFs, set up automated OCR pipelines, or integrate OCR into workflows.

254 41
Explore
partme-ai/full-stack-skills

ocrmypdf-optimize

OCRmyPDF optimization skill — compress PDFs, configure PDF/A output, JBIG2 encoding, and lossless optimization. Use when the user needs to reduce PDF file size, create archival PDF/A files, or optimize OCR output.

254 41
Explore
partme-ai/full-stack-skills

ocrmypdf-image

OCRmyPDF image processing skill — deskew, rotate, clean, despeckle, remove border from scanned documents. Use when the user needs to improve scanned PDF quality, fix skewed pages, remove noise, or clean up scanned documents before OCR.

254 41
Explore
partme-ai/full-stack-skills

ocrmypdf-api

OCRmyPDF Python API and plugin skill — use OCRmyPDF programmatically from Python, integrate with applications, and extend with plugins (EasyOCR, PaddleOCR, AppleOCR). Use when the user needs to call OCRmyPDF from Python code, build OCR pipelines, or use alternative OCR engines.

254 41
Explore
partme-ai/full-stack-skills

ocrmypdf

OCRmyPDF core skill — add searchable OCR text layer to scanned PDFs, convert images to searchable PDFs, support 100+ languages via Tesseract. Use when the user needs to OCR a PDF, make a scanned PDF searchable, or extract text from scanned documents.

254 41
Explore
partme-ai/full-stack-skills

svelte

Guides Svelte and SvelteKit development including reactive components, stores, transitions, lifecycle hooks, SSR, file-based routing, and deployment. Use when the user needs to build Svelte components, create SvelteKit applications, implement reactivity patterns, or configure Svelte with Vite.

254 41
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results