Nano WebGPU API - v0.11.0
    Preparing search index...

    Class SpotLight

    SpotLight represents a conical light source emitting light rays outward from a single point along a specific coordinate direction (e.g. flashlights, spotlights). Attenuates over distance and across inner/outer angular thresholds. Can be configured to generate perspective shadow depth maps.

    Hierarchy (View Summary)

    Index

    Accessors

    • get color(): Color

      Gets the Color instance of the light source.

      Returns Color

    • set color(val: Color): void

      Sets the Color instance of the light source and registers coordinate change triggers.

      Parameters

      Returns void

    • get intensity(): number

      Gets the scalar intensity multiplier.

      Returns number

    • set intensity(val: number): void

      Sets the scalar intensity multiplier and flags the node as dirty.

      Parameters

      • val: number

      Returns void

    • get material(): Material | null

      Gets the material associated with this node if it is a Mesh, or recursively searches descendants and returns the material of the first child Mesh found.

      Returns Material | null

      The Material instance, or null if none was found.

    • set material(value: Material | null): void

      Sets the material for this node (if it is a Mesh) or recursively applies it to all descendant Mesh nodes.

      Parameters

      • value: Material | null

        The Material instance to assign.

      Returns void

    • get materials(): Material[]

      Gets all unique materials associated with this node and its descendants.

      Returns Material[]

      An array of Material instances.

    • set materials(value: Material | Material[] | null): void

      Sets materials for this node and its descendants. If value is a single Material, it is applied to all meshes. If value is an array of Materials, they are applied to the descendant meshes in order.

      Parameters

      Returns void

    • get position(): Vec3

      Gets the spatial 3D position vector of this node. Modifying individual components of this vector will automatically flag the node as dirty.

      Returns Vec3

    • set position(val: Vec3): void

      Sets the spatial 3D position vector of this node. Copies the components of the incoming vector and flags the node as dirty.

      Parameters

      Returns void

    • get rotation(): Vec3

      Gets the spatial Euler rotation vector (pitch, yaw, roll) in radians. Modifying individual components of this vector will automatically flag the node as dirty.

      Returns Vec3

    • set rotation(val: Vec3): void

      Sets the spatial Euler rotation vector (pitch, yaw, roll) in radians. Copies the components of the incoming vector and flags the node as dirty.

      Parameters

      Returns void

    • get rotationDegrees(): Vec3

      Gets the spatial Euler rotation vector in degrees. Accessing or mutating components of this proxy converts automatically to/from radians.

      Returns Vec3

    • set rotationDegrees(val: Vec3 | number[]): void

      Sets the spatial Euler rotation vector in degrees. Converts the incoming components to radians and flags the node as dirty.

      Parameters

      • val: Vec3 | number[]

      Returns void

    • get scale(): Vec3

      Gets the spatial 3D scale vector of this node. Modifying individual components of this vector will automatically flag the node as dirty.

      Returns Vec3

    • set scale(val: Vec3): void

      Sets the spatial 3D scale vector of this node. Copies the components of the incoming vector and flags the node as dirty.

      Parameters

      Returns void

    Constructors

    Methods

    • Adds a child node to this node's hierarchy. If the child already has a parent, it is automatically removed from that parent first. Sets the child's dirty flag to true to force transform updates.

      Parameters

      • child: Node

        The Node instance to append as a child.

      Returns void

    • Computes and returns the world-space bounding box (AABB) of this node's collision shape. Transform the local shape bounds by the node's current world-space transformation matrix.

      Returns AABB | null

      The transformed AABB bounding box, or null if no collision shape is set.

    • Determines if this node's world-space collision bounds overlap with another node's bounds. Both nodes must have active collision shapes; returns false otherwise.

      Parameters

      • other: Node3D

        The other Node3D instance to test against.

      Returns boolean

      True if the world-space AABBs intersect, false otherwise.

    • Removes a child node from this node's hierarchy. Clears the parent reference of the child node and sets its dirty flag.

      Parameters

      • child: Node

        The Node instance to detach.

      Returns void

    • Helper method to set position, rotation, and scale components simultaneously. Copies existing components from provided vectors and marks the node transform as dirty.

      Parameters

      • Optionalposition: Vec3

        Optional new position vector.

      • Optionalrotation: Vec3

        Optional new Euler rotation vector in radians.

      • Optionalscale: Vec3

        Optional new scale vector.

      Returns void

    • Performs a depth-first traversal of the node hierarchy starting from this node, executing the provided callback on each visited node.

      Parameters

      • callback: (node: Node) => void

        The function to invoke for each node.

      Returns void

    • Recomputes the local transformation matrix (localMatrix) by applying translation, Euler rotation, and scaling transformations sequentially. Overrides the base Node behavior to process component values.

      Returns void

    • Updates the global world matrix of this node and recursively propagates the updates down the hierarchy to all child nodes.

      Parameters

      • force: boolean = false

        If true, forces transformation matrices to be recomputed even if they are not flagged as dirty.

      Returns void

    Properties

    castShadow: boolean = true

    If true, enables rendering of a depth texture from this light's perspective.

    children: Node[] = []

    List of child nodes belonging to this node.

    collisionShape: CollisionShape | null = null

    Optional collision shape representing the physical bounds of this node. Utilized for standard AABB intersection tests and spatial overlap checks.

    innerAngle: number = 30.0

    Spotlight inner cone angle in degrees.

    isDirty: boolean = true

    Whether the local transform has changed and needs to be recomputed and propagated.

    localMatrix: Mat4 = ...

    Local transformation matrix relative to the parent node.

    name: string = ""

    Unique identifier or friendly name for the node.

    outerAngle: number = 45.0

    Spotlight outer cone angle in degrees.

    parent: Node | null = null

    Parent node in the scene graph. Null if this is the root node.

    range: number = 20.0

    Physical distance limit where light attenuation falls to zero.

    shadowBias: number = 0.00001

    Custom depth bias to avoid shadow acne or peter panning. Defaults to 0.00001.

    shadowMapSize: number = 2048

    Resolution of the generated shadow map texture.

    shadowNear: number = 0.1

    Near clipping plane for perspective shadow projection.

    usePCF: boolean = true

    Enables hardware Percentage-Closer Filtering (PCF) to smooth shadow boundary edges.

    visible: boolean = true

    Visibility flag. If false, this node and its descendants are typically skipped in rendering.

    worldMatrix: Mat4 = ...

    Global world transformation matrix relative to the scene origin.