light-scenelisted
Install: claude install-skill playcanvas/skills
# Cinematic rendering
A polished frame is lit and graded, not just populated. Treat lighting, sky, shadows, tone mapping,
and post as one pass over the assembled scene, and tune every value against a real screenshot rather
than from memory.
Prefer shipped building blocks over hand-written shaders and passes. Discover them with the
`reuse-scripts` skill and adapt the closest official example with `find-examples`:
- the core `CameraFrame` helper for tone mapping, ambient occlusion, bloom, vignette, and grade;
- a procedural sky and image-based light for ambient colour and reflections;
- a shadow catcher for grounding subjects that have no lit floor.
For an outdoor scene with water, stop before authoring the scene and read both `reuse-scripts` and
`find-examples`. Use `graphics/water.example.mjs` as the initial composition recipe: it already
joins the production `Water` script, sky, sun, `CameraFrame`, water layer, scene depth, and
reflection pipeline. Get that complete frame rendering before replacing its assets or tuning its
look. A custom normal-mapped material, tessellated plane, or reflection-coloured mesh is not the
baseline and does not substitute for `Water` when the brief asks for reflective water.
Keep the two named production integrations visible in the implementation:
- import and create `Water` from `playcanvas/scripts/esm/water.mjs` on the water entity, preserving
the example's required render component, camera reference, water layer, depth map, and texture