Loading...
Searching...
No Matches

Common base class for nodes that map to score processes. More...

Inheritance diagram for score::gfx::ProcessNode:
score::gfx::Node Gfx::Spout::SpoutInputNode Gfx::WindowCapture::WindowCaptureNode score::gfx::DMACaptureInputNode score::gfx::FlattenedSceneFilterNode score::gfx::GeometryFilterNode score::gfx::ISFNode score::gfx::MergeGeometriesNode score::gfx::NodeModel score::gfx::SceneFilterNode score::gfx::ScenePreprocessorNode score::gfx::VideoNodeBase

Detailed Description

Common base class for nodes that map to score processes.

Public Member Functions

void process (Message &&msg) override
 Process a message from the execution engine.
 
virtual void process (Timings tk)
 
virtual void process (int32_t port, const ossia::value &v)
 
virtual void process (int32_t port, const ossia::audio_vector &v)
 
virtual void process (int32_t port, const ossia::transform3d &v)
 
void process (int32_t port, ossia::monostate) const noexcept
 
virtual void process (int32_t port, const FunctionMessage &)
 
virtual void process (int32_t port, const ossia::buffer_spec &)
 
bool resetEventPortsAfterFrame () noexcept
 
 Node ()
 
 Node (const Node &)=delete
 
 Node (Node &&)=delete
 
virtual void process (Message &&msg)
 Process a message from the execution engine.
 
void process (int32_t port, const ossia::render_target_spec &v)
 
- Public Member Functions inherited from score::gfx::Node
 Node (const Node &)=delete
 
 Node (Node &&)=delete
 
Node & operator= (const Node &)=delete
 
Node & operator= (Node &&)=delete
 
virtual NodeRenderer * createRenderer (RenderList &r) const noexcept=0
 Create a renderer in a given context for this node.
 
virtual void renderedNodesChanged ()
 Whenever render nodes are added / removed.
 
virtual void update ()
 
void materialChange () noexcept
 Used to notify a material change from the model to the renderers.
 
bool hasMaterialChanged (int64_t &renderer) const noexcept
 
void renderTargetChange () noexcept
 Used to notify a render target (texture inlet) change from the model to the renderers.
 
bool hasRenderTargetChanged (int64_t &renderer) const noexcept
 
bool hasExplicitRenderTargetSize (int32_t port) const noexcept
 Whether a given port has a user-specified render target size.
 
bool hasExplicitRenderTargetSpecs (int32_t port) const noexcept
 Whether the user set a size or a format on a texture inlet.
 
QSize resolveRenderTargetSize (int32_t port, RenderList &renderer) const noexcept
 
RenderTargetSpecs resolveRenderTargetSpecs (int32_t port, RenderList &renderer) const noexcept
 
std::optional< RenderTargetSpecs > firstInputRenderTargetSpecs () const noexcept
 What the first texture input asks to be rendered into.
 
void process (int32_t port, const ossia::render_target_spec &v)
 

Public Attributes

ProcessUBO standardUBO {}
 Every node matching with a score process will have such an UBO.
 
std::vector< int * > m_event_ports
 Values of the EVENT inputs: 1 for the frame they fire in, else 0.
 
- Public Attributes inherited from score::gfx::Node
std::vector< Port * > input
 Input ports of that node.
 
ossia::small_pod_vector< Port *, 1 > output
 Output ports of that node.
 
ossia::flat_map< RenderList *, score::gfx::NodeRenderer * > renderedNodes
 Map associating each RenderList to a Renderer for this model.
 
ossia::flat_map< int32_t, ossia::render_target_spec > renderTargetSpecs
 Render target info.
 
std::atomic_int64_t materialChanged {0}
 
std::atomic_int64_t renderTargetSpecChanged {-1}
 
int32_t nodeId = score::gfx::invalid_node_index
 
bool requiresDepth {}
 

Protected Member Functions

bool fireEventPort (int32_t port, const ossia::value &v) noexcept
 

Member Function Documentation

◆ fireEventPort()

bool score::gfx::ProcessNode::fireEventPort ( int32_t  port,
const ossia::value &  v 
)
inlineprotectednoexcept

Fires the event input port on an impulse, which the generic port writer ignores. False when v is no impulse or port no event input.

◆ process() [1/3]

void score::gfx::ProcessNode::process ( int32_t  port,
const ossia::value &  v 
)
virtual

Take what the list supplies and leave the rest of the uniform alone.

ossia::convert<vec4f>(list) starts from a zeroed vector and fills the components the list has, so three floats arriving at a four-component uniform wrote a zero into the fourth. On a colour that is alpha, and the shape went black: an OSC address carrying rgb, or anything else that sends a colour without its alpha. A cable did not show it because it carries all four.

Leaving the missing components untouched is also the right answer for a non-colour uniform: a partial update should not silently zero what it did not mention.

Reimplemented in score::gfx::GeometryFilterNode, score::gfx::ISFNode, score::gfx::GeometryFilterNode, and score::gfx::ISFNode.

◆ process() [2/3]

void score::gfx::Node::process ( Message &&  msg)
virtual

Process a message from the execution engine.

Reimplemented from score::gfx::Node.

Reimplemented in score::gfx::TextNode, and score::gfx::VideoNode.

◆ process() [3/3]

void score::gfx::ProcessNode::process ( Message &&  msg)
overridevirtual

Process a message from the execution engine.

Reimplemented from score::gfx::Node.

Reimplemented in score::gfx::TextNode, and score::gfx::VideoNode.

◆ resetEventPortsAfterFrame()

bool score::gfx::ProcessNode::resetEventPortsAfterFrame ( )
inlinenoexcept

Resets the event inputs, once the frame's material has been staged. Whether any had fired: the material must then be uploaded again, else the GPU keeps the 1.

Member Data Documentation

◆ standardUBO

ProcessUBO score::gfx::ProcessNode::standardUBO {}

Every node matching with a score process will have such an UBO.

It has useful information, such as timing, sample rate, mouse position etc.


The documentation for this class was generated from the following files: