Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_light/src/rect_light.rs
30635 views
1
use bevy_camera::visibility::{Visibility, VisibilityClass};
2
use bevy_color::Color;
3
use bevy_ecs::prelude::*;
4
use bevy_reflect::prelude::*;
5
use bevy_transform::components::Transform;
6
7
use crate::light_consts;
8
9
/// A rectangular area light.
10
///
11
/// The rectangle lies in the XY plane of the entity's local coordinate frame
12
/// and faces the local -Z direction.
13
///
14
/// Shadow maps are currently unsupported, objects illuminated by a
15
/// ``RectLight`` will not cast shadows.
16
///
17
/// Note: Requires the `area_light_luts` cargo feature.
18
#[derive(Component, Debug, Clone, Copy, Reflect)]
19
#[reflect(Component, Default, Debug, Clone)]
20
#[require(Transform, Visibility, VisibilityClass)]
21
pub struct RectLight {
22
/// The color of the light.
23
///
24
/// By default, this is white.
25
pub color: Color,
26
27
/// Luminous power in lumens, representing the amount of light emitted by this source in all directions.
28
pub intensity: f32,
29
30
/// Cut-off for the light's area-of-effect. Fragments outside this range will not be affected by
31
/// this light at all, so it's important to tune this together with `intensity` to prevent hard
32
/// lighting cut-offs.
33
pub range: f32,
34
35
/// Width of the light rectangle (along local X).
36
pub width: f32,
37
38
/// Height of the light rectangle (along local Y).
39
pub height: f32,
40
}
41
42
impl Default for RectLight {
43
fn default() -> Self {
44
RectLight {
45
color: Color::WHITE,
46
intensity: light_consts::lumens::VERY_LARGE_CINEMA_LIGHT,
47
width: 1.0,
48
height: 1.0,
49
range: 20.0,
50
}
51
}
52
}
53
54