Taos API Reference
    Preparing search index...

    Class Projector

    Projects a texture (or video) onto scene surfaces from this GameObject's transform — the unlit, shape-controlled counterpart to a textured spotlight.

    The GameObject's world transform supplies the projector's position and forward (-Z) direction; the shape/focalLength/range fields define the frustum the image is cast through. The projector pass reconstructs each shaded pixel's world position from the G-buffer depth, transforms it by projectionViewProj, and — when the pixel lands inside the frustum — samples source and blends it per blend.

    Unlike SpotLight's cookie (which only modulates lit radiance on a cone), a projector composites its texture directly, so it can show as a flat unlit image, supports rectangular or perspective frusta, alpha transparency, and cropping.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    id: string = ...

    Stable identity for this component, unique within a session. Auto-generated for runtime-created components; the editor overwrites it with a persistent id when projecting a saved document so references survive save / load / undo.

    gameObject: GameObject

    The owning GameObject; assigned by addComponent before onAttach runs.

    source: ProjectorSource | null = null

    Texture/video the projector samples. Null = nothing is projected.

    shape: ProjectorShape = 'perspective'

    Frustum shape. See ProjectorShape.

    fovY: number = 45

    Vertical field of view in degrees, used when focalLength is null and shape is 'perspective'.

    focalLength: number | null = null

    Physical focal length in millimeters. When set (non-null), it overrides fovY: the vertical FOV is derived from it and sensorHeight as 2·atan(sensorHeight / (2·focalLength)) — matching a real camera lens.

    sensorHeight: number = 24

    Sensor height in millimeters used with focalLength (default 24mm, full-frame).

    aspect: number = 1

    Width/height aspect ratio of the projected image.

    orthoWidth: number = 10

    World-space width of the ortho frustum when shape is 'rect'.

    orthoHeight: number = 10

    World-space height of the ortho frustum when shape is 'rect'.

    near: number = 0.1

    Near plane of the projection frustum.

    far: number = 100

    Far plane; surfaces beyond this receive nothing.

    tint: Vec3 = ...

    Linear RGB tint multiplied into the sampled color.

    opacity: number = 1

    Overall strength in [0,1], folded into the blend per ProjectorBlend.

    blend: ProjectorBlend = 'alpha'

    How the projected color combines with the target.

    lit: boolean = false

    When false (default) the projector composites after deferred lighting as a flat unlit image. When true it instead writes the G-buffer albedo before lighting, so the projected texture receives scene light and shadow like a painted-on surface.

    crop: UvRect = UV_RECT_FULL

    Sub-rectangle of the source image to project, as [offsetX, offsetY, scaleX, scaleY] in [0,1]. Composed with any atlas packing rect. [0,0,1,1] projects the whole image.

    edgeFalloff: number = 0

    Fraction of the frustum edge [0,1] over which the image fades to zero, softening the hard rectangular/cone boundary. 0 = hard edge.

    programId: string | null = null

    Optional id selecting a registered custom projection program (e.g. a depth-aware per-texel reprojection). Null uses the built-in projection.

    Accessors

    • get time(): Time

      The simulation clock of the scene this component belongs to. Read inside update (or any time after the GameObject is added to a scene) for absolute time, frame count, FPS, and timeScale-aware delta — e.g. this.time.elapsed, this.time.delta, this.time.frameCount.

      this.time.delta equals the dt argument passed to update, so components can ignore that argument entirely and pull everything from here.

      Returns Time

      if the owning GameObject is not currently part of a scene.

    Methods

    • Called once when the component is added to a GameObject. Override to acquire references to siblings/children or initialize resources.

      Returns void

    • Called once when the component is removed from its GameObject. Override to release resources or unsubscribe from events.

      Returns void

    • Called every frame by the GameObject's update traversal.

      Parameters

      • _dt: number

        Frame delta time in seconds.

      Returns void

    • Called every frame by the GameObject's render traversal, after update and any input/controller mutations to the transform. Override to refresh per-frame state that render passes consume (e.g. Camera recomputes its cached view/projection matrices here).

      Parameters

      • _ctx: RenderContext

        Active render context (provides canvas width/height etc.).

      Returns void

    • Combined projection·view matrix that maps a world position into the projector's clip space. A point is inside the frustum when, after the perspective divide, its xy lie in [-1,1] and z in [0,1].

      Returns Mat4