# light

> Talos 0.7 · Since 0.6

Use it in a scene entity's `components` list as `{ "type": "light", … }`. The contract writes the fields flat and refuses unknown keys.

## Fields

| Field | Type | Required | Default | Allowed values | Description |
|---|---|---|---|---|---|
| `kind` | `LightKind` | yes |  | `directional`, `point`, `spot` |  |
| `color` | `string` | yes |  |  |  |
| `intensity` | `number` | yes |  |  |  |
| `castShadow` | `boolean` | no |  |  |  |
| `range` | `number` | no |  |  |  |
| `angle` | `number` | no |  |  |  |
| `indirectIntensity` | `number` | no |  |  | Multiplier on this light's contribution to the indirect (bounced) light, 0..16; absent means no change. Zero keeps the light's direct light and removes its bounce; two doubles the bounce. HD's ray-traced GI only: the standard renderer ignores it (hd-only-ignored). Changing it while the scene runs re-lights the GI within a few frames, with no restart. |

## Rules that can refuse it

- `component-not-writable`
- `gi-intensity-range`
- `hd-only-ignored`
- `light-directional-horizontal`
- `render.hd.black_frame`
- `render.hd.horizon_map_unavailable`
- `shader-model-mismatch`

## Example

From the contract's tested fixture `fixtures/contract/full20/scene.json#lamps`.

```json
{
  "type": "light",
  "kind": "point",
  "color": "#FFD9A0",
  "intensity": 12,
  "range": 9
}
```
