LitForwardLane

Struct LitForwardLane 

Source
pub struct LitForwardLane {
    pub shader_complexity: ShaderComplexity,
    pub max_directional_lights: u32,
    pub max_point_lights: u32,
    pub max_spot_lights: u32,
    /* private fields */
}
Expand description

A lane that implements forward rendering with lighting support.

This lane renders meshes with lighting calculations performed in the fragment shader. It supports multiple light types (directional, point, spot) and includes shader complexity tracking for GORNA resource negotiation.

§Performance Characteristics

  • O(meshes × lights) fragment shader complexity
  • Suitable for: Scenes with moderate light counts (< 20 lights)
  • Shader complexity tracking: Integrates with GORNA for adaptive quality

§Cost Estimation

The cost estimation includes:

  • Base triangle and draw call costs (same as SimpleUnlitLane)
  • Shader complexity multiplier based on the configured complexity level
  • Per-light cost scaling based on the number of active lights

Fields§

§shader_complexity: ShaderComplexity

The shader complexity level to use for cost estimation.

§max_directional_lights: u32

Maximum number of directional lights supported per pass.

§max_point_lights: u32

Maximum number of point lights supported per pass.

§max_spot_lights: u32

Maximum number of spot lights supported per pass.

Implementations§

Source§

impl LitForwardLane

Source

pub fn new() -> Self

Creates a new LitForwardLane with default settings.

Source

pub fn with_complexity(complexity: ShaderComplexity) -> Self

Creates a new LitForwardLane with the specified shader complexity.

Source

pub fn effective_light_counts( &self, render_world: &RenderWorld, ) -> (usize, usize, usize)

Returns the effective number of lights that will be used for rendering.

This clamps the actual light counts to the maximum supported per pass.

Source§

impl LitForwardLane

Source

pub fn get_pipeline_for_material( &self, _material: Option<&AssetHandle<Box<dyn Material>>>, ) -> RenderPipelineId

Returns the render pipeline for the given material (or default).

Trait Implementations§

Source§

impl Debug for LitForwardLane

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for LitForwardLane

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Lane for LitForwardLane

Source§

fn strategy_name(&self) -> &'static str

Human-readable name identifying this lane’s strategy. Read more
Source§

fn lane_kind(&self) -> LaneKind

The kind of processing this lane performs. Read more
Source§

fn estimate_cost(&self, ctx: &LaneContext) -> f32

Estimated computational cost of running this lane. Read more
Source§

fn on_initialize(&self, ctx: &mut LaneContext) -> Result<(), LaneError>

Called once when the lane is registered or the underlying context resets. Read more
Source§

fn execute(&self, ctx: &mut LaneContext) -> Result<(), LaneError>

Main execution entry point — called each frame/tick by the owning agent. Read more
Source§

fn on_shutdown(&self, ctx: &mut LaneContext)

Called when the lane is being destroyed or the context is shutting down. Read more
Source§

fn as_any(&self) -> &dyn Any

Downcast to a concrete type for type-specific operations.
Source§

fn as_any_mut(&mut self) -> &mut dyn Any

Downcast to a concrete type (mutable) for type-specific operations.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsAny for T
where T: Any,

§

fn as_any(&self) -> &(dyn Any + 'static)

Returns a reference to the inner value as &dyn Any.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.