---
# System prepended metadata

title: Light Bundles
tags: [Required-Components]

---

# Bundles

## `PointLightBundle`

```rust
pub struct PointLightBundle {
    pub point_light: PointLight,
    pub cubemap_visible_entities: CubemapVisibleEntities,
    pub cubemap_frusta: CubemapFrusta,
    pub transform: Transform,
    pub global_transform: GlobalTransform,
    /// Enables or disables the light
    pub visibility: Visibility,
    /// Inherited visibility of an entity.
    pub inherited_visibility: InheritedVisibility,
    /// Algorithmically-computed indication of whether an entity is visible and should be extracted for rendering
    pub view_visibility: ViewVisibility,
}
```

### Proposal 1 (Selected)

```rust
#[derive(Component)]
#[require(CubemapVisibleEntities, CubemapFrusta, Transform, Visibility)]
pub struct PointLight;
```

## `SpotLightBundle`

```rust
pub struct SpotLightBundle {
    pub spot_light: SpotLight,
    pub visible_entities: VisibleMeshEntities,
    pub frustum: Frustum,
    pub transform: Transform,
    pub global_transform: GlobalTransform,
    /// Enables or disables the light
    pub visibility: Visibility,
    /// Inherited visibility of an entity.
    pub inherited_visibility: InheritedVisibility,
    /// Algorithmically-computed indication of whether an entity is visible and should be extracted for rendering
    pub view_visibility: ViewVisibility,
}
```

### Proposal 1 (Selected)

```rust
#[derive(Component)]
#[require(VisibleMeshEntities, Frustum, Transform, Visibility)]
pub struct SpotLight;
```

## `DirectionalLightBundle`

```rust
pub struct DirectionalLightBundle {
    pub directional_light: DirectionalLight,
    pub frusta: CascadesFrusta,
    pub cascades: Cascades,
    pub cascade_shadow_config: CascadeShadowConfig,
    pub visible_entities: CascadesVisibleEntities,
    pub transform: Transform,
    pub global_transform: GlobalTransform,
    /// Enables or disables the light
    pub visibility: Visibility,
    /// Inherited visibility of an entity.
    pub inherited_visibility: InheritedVisibility,
    /// Algorithmically-computed indication of whether an entity is visible and should be extracted for rendering
    pub view_visibility: ViewVisibility,
}
```

### Proposal 1 (Selected)

```rust
#[derive(Component)]
#[require(
    CascadesVisibleEntities, 
    CascadesFrusta, 
    Cascades, 
    CascadeShadowConfig, 
    Transform,
    Visibility
)]
pub struct DirectionalLight;
```