33 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A render node that can be added to a `RenderGraph`."><meta name="keywords" content="rust, rustlang, rust-lang, Node"><title>Node in maplibre::render::graph - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../../normalize.css"><link rel="stylesheet" href="../../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../../ayu.css" disabled><link rel="stylesheet" href="../../../dark.css" disabled><link rel="stylesheet" href="../../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../main.js"></script><noscript><link rel="stylesheet" href="../../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../../maplibre/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../../maplibre/index.html"><div class="logo-container"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Node</a></h2><div class="sidebar-elems"><section><div class="block"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><ul><li><a href="#tymethod.run">run</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><ul><li><a href="#method.input">input</a></li><li><a href="#method.output">output</a></li><li><a href="#method.update">update</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementations">Methods</a></h3><ul><li><a href="#method.downcast">downcast</a></li><li><a href="#method.downcast_mut">downcast_mut</a></li><li><a href="#method.downcast_rc">downcast_rc</a></li><li><a href="#method.downcast_ref">downcast_ref</a></li><li><a href="#method.is">is</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div></section><h2 class="location"><a href="index.html">In maplibre::render::graph</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../../maplibre/index.html"><img class="rust-logo" src="../../../rust-logo.svg" alt="logo"></a><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1"><a href="../../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../../wheel.svg"></a></div></div></form></nav></div><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn"><span class="in-band">Trait <a href="../../index.html">maplibre</a>::<wbr><a href="../index.html">render</a>::<wbr><a href="index.html">graph</a>::<wbr><a class="trait" href="#">Node</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../../src/maplibre/render/graph/node.rs.html#47-73">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Node: Downcast + <a class="trait" href="https://doc.rust-lang.org/1.65.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.65.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + 'static {
fn <a href="#tymethod.run" class="fnname">run</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;graph: &amp;mut <a class="struct" href="context/struct.RenderGraphContext.html" title="struct maplibre::render::graph::context::RenderGraphContext">RenderGraphContext</a>&lt;'_&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;render_context: &amp;mut <a class="struct" href="node/struct.RenderContext.html" title="struct maplibre::render::graph::node::RenderContext">RenderContext</a>&lt;'_&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resources: &amp;<a class="struct" href="../struct.RenderResources.html" title="struct maplibre::render::RenderResources">RenderResources</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;world: &amp;<a class="struct" href="../../tcs/world/struct.World.html" title="struct maplibre::tcs::world::World">World</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.65.0/std/primitive.unit.html">()</a>, <a class="enum" href="node/enum.NodeRunError.html" title="enum maplibre::render::graph::node::NodeRunError">NodeRunError</a>&gt;;
fn <a href="#method.input" class="fnname">input</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="node_slot/struct.SlotInfo.html" title="struct maplibre::render::graph::node_slot::SlotInfo">SlotInfo</a>&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.output" class="fnname">output</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="node_slot/struct.SlotInfo.html" title="struct maplibre::render::graph::node_slot::SlotInfo">SlotInfo</a>&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.update" class="fnname">update</a>(&amp;mut self, _state: &amp;mut <a class="struct" href="../struct.RenderResources.html" title="struct maplibre::render::RenderResources">RenderResources</a>) { ... }
}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A render node that can be added to a <a href="graph/struct.RenderGraph.html"><code>RenderGraph</code></a>.</p>
<p>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 <code>render_graph::add_node(my_node)</code> method.</p>
<p>To determine their position in the graph and ensure that all required dependencies (inputs)
are already executed, <a href="edge/enum.Edge.html"><code>Edges</code></a> are used.</p>
<p>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 <a href="node_slot/enum.SlotType.html"><code>SlotType</code></a>.</p>
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.run" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#66-72">source</a><h4 class="code-header">fn <a href="#tymethod.run" class="fnname">run</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;graph: &amp;mut <a class="struct" href="context/struct.RenderGraphContext.html" title="struct maplibre::render::graph::context::RenderGraphContext">RenderGraphContext</a>&lt;'_&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;render_context: &amp;mut <a class="struct" href="node/struct.RenderContext.html" title="struct maplibre::render::graph::node::RenderContext">RenderContext</a>&lt;'_&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;resources: &amp;<a class="struct" href="../struct.RenderResources.html" title="struct maplibre::render::RenderResources">RenderResources</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;world: &amp;<a class="struct" href="../../tcs/world/struct.World.html" title="struct maplibre::tcs::world::World">World</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.65.0/std/primitive.unit.html">()</a>, <a class="enum" href="node/enum.NodeRunError.html" title="enum maplibre::render::graph::node::NodeRunError">NodeRunError</a>&gt;</h4></div></summary><div class="docblock"><p>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 <a href="context/struct.RenderGraphContext.html" title="RenderGraphContext"><code>RenderGraphContext</code></a>.</p>
</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.input" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#50-52">source</a><h4 class="code-header">fn <a href="#method.input" class="fnname">input</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="node_slot/struct.SlotInfo.html" title="struct maplibre::render::graph::node_slot::SlotInfo">SlotInfo</a>&gt;</h4></div></summary><div class="docblock"><p>Specifies the required input slots for this node.
They will then be available during the run method inside the <a href="context/struct.RenderGraphContext.html" title="RenderGraphContext"><code>RenderGraphContext</code></a>.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="method.output" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#56-58">source</a><h4 class="code-header">fn <a href="#method.output" class="fnname">output</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="node_slot/struct.SlotInfo.html" title="struct maplibre::render::graph::node_slot::SlotInfo">SlotInfo</a>&gt;</h4></div></summary><div class="docblock"><p>Specifies the produced output slots for this node.
They can then be passed one inside <a href="context/struct.RenderGraphContext.html" title="RenderGraphContext"><code>RenderGraphContext</code></a> during the run method.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="method.update" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#61">source</a><h4 class="code-header">fn <a href="#method.update" class="fnname">update</a>(&amp;mut self, _state: &amp;mut <a class="struct" href="../struct.RenderResources.html" title="struct maplibre::render::RenderResources">RenderResources</a>)</h4></div></summary><div class="docblock"><p>Updates internal node state using the current <a href="../struct.RenderResources.html" title="RenderResources"><code>RenderResources</code></a> prior to the run method.</p>
</div></details></div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-dyn%20Node" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><a href="#impl-dyn%20Node" class="anchor"></a><h3 class="code-header in-band">impl dyn <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><h4 class="code-header">pub fn <a href="#method.is" class="fnname">is</a>&lt;__T:&nbsp;<a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a>&gt;(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.65.0/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the trait object wraps an object of type <code>__T</code>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.downcast" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><h4 class="code-header">pub fn <a href="#method.downcast" class="fnname">downcast</a>&lt;__T:&nbsp;<a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a>&gt;(self: <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;Self&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;__T&gt;, <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;Self&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns a boxed object from a boxed trait object if the underlying object is of type
<code>__T</code>. Returns the original boxed trait if it isnt.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.downcast_rc" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><h4 class="code-header">pub fn <a href="#method.downcast_rc" class="fnname">downcast_rc</a>&lt;__T:&nbsp;<a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a>&gt;(self: <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;Self&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;__T&gt;, <a class="struct" href="https://doc.rust-lang.org/1.65.0/alloc/rc/struct.Rc.html" title="struct alloc::rc::Rc">Rc</a>&lt;Self&gt;&gt;</h4></section></summary><div class="docblock"><p>Returns an <code>Rc</code>-ed object from an <code>Rc</code>-ed trait object if the underlying object is of
type <code>__T</code>. Returns the original <code>Rc</code>-ed trait if it isnt.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.downcast_ref" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><h4 class="code-header">pub fn <a href="#method.downcast_ref" class="fnname">downcast_ref</a>&lt;__T:&nbsp;<a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.65.0/std/primitive.reference.html">&amp;</a>__T&gt;</h4></section></summary><div class="docblock"><p>Returns a reference to the object within the trait object if it is of type <code>__T</code>, or
<code>None</code> if it isnt.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.downcast_mut" class="method has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#75">source</a><h4 class="code-header">pub fn <a href="#method.downcast_mut" class="fnname">downcast_mut</a>&lt;__T:&nbsp;<a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a>&gt;(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.65.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.65.0/std/primitive.reference.html">&amp;mut </a>__T&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the object within the trait object if it is of type
<code>__T</code>, or <code>None</code> if it isnt.</p>
</div></details></div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><section id="impl-Node-for-DebugPassNode" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/debug/debug_pass.rs.html#24-75">source</a><a href="#impl-Node-for-DebugPassNode" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a> for <a class="struct" href="../../debug/debug_pass/struct.DebugPassNode.html" title="struct maplibre::debug::debug_pass::DebugPassNode">DebugPassNode</a></h3></section><section id="impl-Node-for-MainPassDriverNode" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/main_pass.rs.html#113-125">source</a><a href="#impl-Node-for-MainPassDriverNode" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a> for <a class="struct" href="../main_pass/struct.MainPassDriverNode.html" title="struct maplibre::render::main_pass::MainPassDriverNode">MainPassDriverNode</a></h3></section><section id="impl-Node-for-MainPassNode" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/main_pass.rs.html#28-109">source</a><a href="#impl-Node-for-MainPassNode" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a> for <a class="struct" href="../main_pass/struct.MainPassNode.html" title="struct maplibre::render::main_pass::MainPassNode">MainPassNode</a></h3></section><section id="impl-Node-for-GraphInputNode" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/graph.rs.html#554-576">source</a><a href="#impl-Node-for-GraphInputNode" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a> for <a class="struct" href="graph/struct.GraphInputNode.html" title="struct maplibre::render::graph::graph::GraphInputNode">GraphInputNode</a></h3></section><section id="impl-Node-for-EmptyNode" class="impl has-srclink"><a class="srclink rightside" href="../../../src/maplibre/render/graph/node.rs.html#328-338">source</a><a href="#impl-Node-for-EmptyNode" class="anchor"></a><h3 class="code-header in-band">impl <a class="trait" href="node/trait.Node.html" title="trait maplibre::render::graph::node::Node">Node</a> for <a class="struct" href="node/struct.EmptyNode.html" title="struct maplibre::render::graph::node::EmptyNode">EmptyNode</a></h3></section></div><script src="../../../implementors/maplibre/render/graph/node/trait.Node.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../../" data-current-crate="maplibre" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.65.0 (897e37553 2022-11-02)" ></div></body></html>