RenderAgent

Struct RenderAgent 

Source
pub struct RenderAgent { /* private fields */ }
Expand description

The agent responsible for managing the state and logic of the rendering pipeline.

Implementations§

Source§

impl RenderAgent

Source

pub fn new() -> Self

Creates a new RenderAgent with default lanes and automatic strategy selection.

Source

pub fn render( &mut self, encoder: &mut dyn CommandEncoder, render_ctx: &RenderContext<'_>, )

Renders the scene using the provided encoder and render context.

This is the main rendering method that encodes GPU commands via the selected lane. Shadow lanes are executed first, followed by the selected render lane.

Source

pub fn with_strategy(strategy: RenderingStrategy) -> Self

Creates a new RenderAgent with the specified rendering strategy.

Source

pub fn with_telemetry_sender(self, sender: Sender<TelemetryEvent>) -> Self

Attaches a telemetry sender so the agent can emit GpuReport events to the DCC.

Source

pub fn add_lane(&mut self, lane: Box<dyn Lane>)

Adds a custom lane to the registry.

Source

pub fn set_strategy(&mut self, strategy: RenderingStrategy)

Sets the rendering strategy.

Source

pub fn strategy(&self) -> RenderingStrategy

Returns the current rendering strategy.

Source

pub fn lanes(&self) -> &LaneRegistry

Returns a reference to the lane registry.

Source

pub fn select_lane(&self) -> &dyn Lane

Selects the appropriate render lane based on the current strategy.

Source

pub fn prepare_frame( &mut self, world: &mut World, graphics_device: &dyn GraphicsDevice, )

Prepares all rendering data for the current frame.

This method runs the entire Control Plane logic for rendering:

  1. Prepares GPU resources for any newly loaded meshes.
  2. Extracts all visible objects from the ECS into the internal RenderWorld.
Source

pub fn produce_render_objects(&self) -> Vec<RenderObject>

Translates the prepared data from the RenderWorld into a list of RenderObjects.

This method should be called after prepare_frame. It reads the intermediate RenderWorld and produces the final, low-level data structure required by the RenderSystem.

Uses the selected lane’s domain-specific pipeline selection if available, otherwise falls back to a default pipeline.

Source

pub fn extract_camera_view(&self, world: &World) -> ViewInfo

Extracts the active camera from the ECS world and generates a ViewInfo.

This method queries the ECS for entities with both a Camera and GlobalTransform component, finds the first active camera, and constructs a ViewInfo containing the camera’s view and projection matrices.

§Arguments
  • world: The ECS world containing camera entities
§Returns

A ViewInfo containing the camera’s matrices and position. If no active camera is found, returns a default ViewInfo with identity matrices.

Source

pub fn last_frame_time(&self) -> Duration

Returns the duration of the last frame’s render pass.

Source

pub fn frame_count(&self) -> u64

Returns the total number of frames rendered.

Source

pub fn current_strategy_id(&self) -> StrategyId

Returns the current GORNA strategy ID.

Source

pub fn render_world(&self) -> &RenderWorld

Returns a reference to the internal RenderWorld.

Source

pub fn render_world_mut(&mut self) -> &mut RenderWorld

Returns a mutable reference to the internal RenderWorld.

Source

pub fn gpu_meshes(&self) -> &Arc<RwLock<Assets<GpuMesh>>>

Returns a reference to the GPU meshes cache.

Trait Implementations§

Source§

impl Agent for RenderAgent

Source§

fn id(&self) -> AgentId

Returns the unique identifier for this agent.
Source§

fn negotiate(&mut self, request: NegotiationRequest) -> NegotiationResponse

Negotiates with the DCC to determine the best execution strategy given the current global resource constraints and priorities.
Source§

fn apply_budget(&mut self, budget: ResourceBudget)

Applies a resource budget issued by the DCC. The agent must adjust its internal logic (e.g., LOD, quality settings) to stay within the allocated limits.
Source§

fn update(&mut self, context: &mut EngineContext<'_>)

Periodically updates the agent’s internal state.
Source§

fn report_status(&self) -> AgentStatus

Reports the current status and health of the agent.
Source§

fn execute(&mut self)

Executes the agent’s primary function for this frame. Called after update(), this is where the agent performs its main work.
Source§

fn as_any(&self) -> &dyn Any

Allows downcasting to concrete agent types.
Source§

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

Allows mutable downcasting to concrete agent types.
Source§

impl Default for RenderAgent

Source§

fn default() -> Self

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

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.