Loading...
Searching...
No Matches
score::gfx::RenderedMergeGeometriesNode Struct Referencefinal
Inheritance diagram for score::gfx::RenderedMergeGeometriesNode:
score::gfx::NodeRenderer

Classes

struct  GpuBake
 

Public Member Functions

 RenderedMergeGeometriesNode (const MergeGeometriesNode &n)
 
void init (RenderList &, QRhiResourceUpdateBatch &) override
 
void releaseGpuBake (RenderList &renderer, GpuBake &bake)
 
void release (RenderList &renderer) override
 
void process (int32_t port, const ossia::transform3d &v) override
 
const ossia::geometry_spec * findFirstByPort (int32_t port) const
 
bool anyInputChanged () const
 
bool ensureGpuBake (RenderList &renderer, QRhiBuffer *source, GpuBake &bake)
 
void warnUntransformed (const ossia::geometry::attribute &attr, const char *reason)
 
void bakeGpuBuffers (RenderList &renderer, int port, std::vector< ossia::geometry > &meshes, const ossia::transform3d &transform)
 
void runGpuBakes (RenderList &renderer, QRhiCommandBuffer &commands, QRhiResourceUpdateBatch *&res)
 
void rebuild (RenderList &renderer)
 
void update (RenderList &renderer, QRhiResourceUpdateBatch &, Edge *) override
 
void runInitialPasses (RenderList &renderer, QRhiCommandBuffer &commands, QRhiResourceUpdateBatch *&res, Edge &edge) override
 
void runRenderPass (RenderList &, QRhiCommandBuffer &, Edge &) override
 
void removeOutputPass (RenderList &, Edge &) override
 
- Public Member Functions inherited from score::gfx::NodeRenderer
 NodeRenderer (const Node &node)
 
virtual TextureRenderTarget renderTargetForInput (const Port &input)
 
virtual BufferView bufferForInput (const Port &input)
 
virtual BufferView bufferForOutput (const Port &output)
 
virtual QRhiTexture * textureForOutput (const Port &output)
 
virtual void updateInputTexture (const Port &input, QRhiTexture *tex, QRhiTexture *depthTex=nullptr)
 
virtual void updateInputSamplerFilter (const Port &input, const RenderTargetSpecs &spec)
 
virtual void inputAboutToFinish (RenderList &renderer, const Port &p, QRhiResourceUpdateBatch *&)
 
virtual QRhiGraphicsPipeline::CompareOp depthCompare () const noexcept
 The depth compare this renderer's pipeline was built with.
 
void checkForChanges ()
 
void syncRenderTargetIndex ()
 
void process (int32_t port, const ossia::geometry_spec &v)
 
void process (int32_t port, const ossia::scene_spec &v)
 
void process (int32_t port, const ossia::geometry_spec &v, const void *source_key)
 
void process (int32_t port, const ossia::scene_spec &v, const void *source_key)
 
const ossia::geometry_spec * findGeometryByPort (int32_t port) const
 
template<typename F >
void forEachSceneOnPort (int32_t port, F &&fn) const
 
virtual void initState (RenderList &renderer, QRhiResourceUpdateBatch &res)
 
virtual void releaseState (RenderList &renderer)
 
virtual void addOutputPass (RenderList &renderer, Edge &edge, QRhiResourceUpdateBatch &res)
 Create a pass for a new output edge (pipeline, SRB, processUBO).
 
virtual void addInputEdge (RenderList &renderer, Edge &edge, QRhiResourceUpdateBatch &res)
 
virtual void removeInputEdge (RenderList &renderer, Edge &edge)
 Notify the renderer that an input edge was disconnected.
 
virtual bool hasOutputPassForEdge (Edge &edge) const
 Check if this renderer already has an output pass for the given edge.
 
virtual void seedInitialOutputs (RenderList &renderer)
 
virtual bool followsRenderSize () const noexcept
 
virtual const Mesh * currentMesh () const noexcept
 

Public Attributes

const MergeGeometriesNode & m_node
 
ossia::geometry_spec m_outputSpec
 
std::array< ossia::geometry_spec, MergeGeometriesNode::kMaxInputs > m_cachedInputs
 
std::array< ossia::transform3d, MergeGeometriesNode::kMaxInputs > m_transforms
 
std::array< int64_t, MergeGeometriesNode::kMaxInputs > m_cachedDirtyIndex {}
 
bool m_transformsChanged {}
 
ossia::flat_map< std::pair< int, QRhiBuffer * >, GpuBake > m_gpuBakes
 
QRhiComputePipeline * m_gpuBakePipeline {}
 
bool m_gpuBakeUnavailable {}
 
int64_t m_gpuBakeFrame {-1}
 
ossia::flat_set< std::tuple< int, int, std::string > > m_warnedUntransformed
 
- Public Attributes inherited from score::gfx::NodeRenderer
const Node & node
 
ossia::geometry_spec geometry
 The geometry to use.
 
ossia::small_flat_map< PortSourceKey, ossia::geometry_spec, 4 > m_portGeometries
 
ossia::scene_spec scene
 The scene to use (when receiving scene_spec data).
 
ossia::small_flat_map< PortSourceKey, ossia::scene_spec, 4 > m_portScenes
 Per-(port, source) scene storage. See m_portGeometries comment.
 
ossia::small_vector< MergeCacheKey, 4 > m_mergeCacheInputs
 
ossia::scene_spec m_mergeCacheOutput
 
ossia::small_flat_map< PortSourceKey, std::pair< ossia::geometry_spec, ossia::scene_spec >, 4 > m_wrapCache
 
int32_t nodeId {-1}
 
bool materialChanged {false}
 
bool geometryChanged {false}
 
bool sceneChanged {false}
 
bool renderTargetSpecsChanged {false}
 
bool m_initialized {false}
 

Additional Inherited Members

- Public Types inherited from score::gfx::NodeRenderer
using PortSourceKey = std::pair< int32_t, const void * >
 
using MergeCacheKey = std::pair< const ossia::scene_state *, int64_t >
 

Member Function Documentation

◆ init()

void score::gfx::RenderedMergeGeometriesNode::init ( RenderList &  ,
QRhiResourceUpdateBatch &   
)
inlineoverridevirtual

◆ process()

void score::gfx::RenderedMergeGeometriesNode::process ( int32_t  port,
const ossia::transform3d &  v 
)
inlineoverridevirtual

Reimplemented from score::gfx::NodeRenderer.

◆ release()

void score::gfx::RenderedMergeGeometriesNode::release ( RenderList &  renderer)
inlineoverridevirtual

◆ removeOutputPass()

void score::gfx::RenderedMergeGeometriesNode::removeOutputPass ( RenderList &  renderer,
Edge &  edge 
)
inlineoverridevirtual

Remove the pass for a removed output edge. Pure-virtual: every concrete renderer must explicitly handle edge removal. Sinks (OutputNodeRenderer) and data-only renderers that store no per-edge GPU state can override with an empty body.

Implements score::gfx::NodeRenderer.

◆ runInitialPasses()

void score::gfx::RenderedMergeGeometriesNode::runInitialPasses ( RenderList &  renderer,
QRhiCommandBuffer &  commands,
QRhiResourceUpdateBatch *&  res,
Edge &  edge 
)
inlineoverridevirtual

Reimplemented from score::gfx::NodeRenderer.

◆ runRenderPass()

void score::gfx::RenderedMergeGeometriesNode::runRenderPass ( RenderList &  ,
QRhiCommandBuffer &  ,
Edge &   
)
inlineoverridevirtual

Reimplemented from score::gfx::NodeRenderer.

◆ update()

void score::gfx::RenderedMergeGeometriesNode::update ( RenderList &  renderer,
QRhiResourceUpdateBatch &  ,
Edge *   
)
inlineoverridevirtual

The documentation for this struct was generated from the following file:
  • MergeGeometriesNode.cpp