Skip to main content

euv_engine/lighting/
enum.rs

1use super::*;
2
3/// Describes the kind of light source being represented.
4#[derive(Clone, Copy, Debug, Default, PartialEq)]
5pub enum LightType {
6    /// An infinitely distant directional light (e.g. sunlight). The `direction`
7    /// field carries the unit vector pointing away from the light source.
8    #[default]
9    Directional,
10    /// A positional point light with inverse-square falloff.
11    Point,
12    /// A positional spotlight with a cone defined by a unit direction and a
13    /// half-angle whose cosine is stored in the light's `spot_cos` field.
14    Spot,
15}
16
17/// Describes the shading model applied to a [`Material`] during lighting and
18/// ray-tracing evaluation.
19#[derive(Clone, Copy, Debug, Default, PartialEq)]
20pub enum MaterialKind {
21    /// Pure Lambertian diffuse, no specular highlight.
22    #[default]
23    Lambert,
24    /// Lambertian diffuse plus Blinn-Phong style specular highlight.
25    Phong,
26    /// Physically based rendering model placeholder (full PBR is intentionally
27    /// not implemented in this revision; we keep the variant so callers can
28    /// branch on it without a breaking change later).
29    Pbr,
30}