pub trait Node: Downcast + Send + Sync + 'static {
// Required method
fn run(
&self,
graph: &mut RenderGraphContext<'_>,
render_context: &mut RenderContext<'_>,
resources: &RenderResources,
world: &World
) -> Result<(), NodeRunError>;
// Provided methods
fn input(&self) -> Vec<SlotInfo> { ... }
fn output(&self) -> Vec<SlotInfo> { ... }
fn update(&mut self, _state: &mut RenderResources) { ... }
}
Expand description
A render node that can be added to a RenderGraph
.
Nodes are the fundamental part of the graph and used to extend its functionality, by
generating draw calls and/or running subgraphs.
They are added via the render_graph::add_node(my_node)
method.
To determine their position in the graph and ensure that all required dependencies (inputs)
are already executed, Edges
are used.
A node can produce outputs used as dependencies by other nodes.
Those inputs and outputs are called slots and are the default way of passing render data
inside the graph. For more information see SlotType
.
Required Methods§
sourcefn run(
&self,
graph: &mut RenderGraphContext<'_>,
render_context: &mut RenderContext<'_>,
resources: &RenderResources,
world: &World
) -> Result<(), NodeRunError>
fn run( &self, graph: &mut RenderGraphContext<'_>, render_context: &mut RenderContext<'_>, resources: &RenderResources, world: &World ) -> Result<(), NodeRunError>
Runs the graph node logic, issues draw calls, updates the output slots and
optionally queues up subgraphs for execution. The graph data, input and output values are
passed via the RenderGraphContext
.
Provided Methods§
sourcefn input(&self) -> Vec<SlotInfo>
fn input(&self) -> Vec<SlotInfo>
Specifies the required input slots for this node.
They will then be available during the run method inside the RenderGraphContext
.
sourcefn output(&self) -> Vec<SlotInfo>
fn output(&self) -> Vec<SlotInfo>
Specifies the produced output slots for this node.
They can then be passed one inside RenderGraphContext
during the run method.
sourcefn update(&mut self, _state: &mut RenderResources)
fn update(&mut self, _state: &mut RenderResources)
Updates internal node state using the current RenderResources
prior to the run method.
Implementations§
source§impl dyn Node
impl dyn Node
sourcepub fn is<__T: Node>(&self) -> bool
pub fn is<__T: Node>(&self) -> bool
Returns true if the trait object wraps an object of type __T
.
sourcepub fn downcast<__T: Node>(self: Box<Self>) -> Result<Box<__T>, Box<Self>>
pub fn downcast<__T: Node>(self: Box<Self>) -> Result<Box<__T>, Box<Self>>
Returns a boxed object from a boxed trait object if the underlying object is of type
__T
. Returns the original boxed trait if it isn’t.
sourcepub fn downcast_rc<__T: Node>(self: Rc<Self>) -> Result<Rc<__T>, Rc<Self>>
pub fn downcast_rc<__T: Node>(self: Rc<Self>) -> Result<Rc<__T>, Rc<Self>>
Returns an Rc
-ed object from an Rc
-ed trait object if the underlying object is of
type __T
. Returns the original Rc
-ed trait if it isn’t.
sourcepub fn downcast_ref<__T: Node>(&self) -> Option<&__T>
pub fn downcast_ref<__T: Node>(&self) -> Option<&__T>
Returns a reference to the object within the trait object if it is of type __T
, or
None
if it isn’t.
sourcepub fn downcast_mut<__T: Node>(&mut self) -> Option<&mut __T>
pub fn downcast_mut<__T: Node>(&mut self) -> Option<&mut __T>
Returns a mutable reference to the object within the trait object if it is of type
__T
, or None
if it isn’t.