Loading...
Searching...
No Matches
score::gfx::GaussianSplatNode Struct Reference

Gaussian Splat rendering node. More...

Inheritance diagram for score::gfx::GaussianSplatNode:
score::gfx::NodeModel score::gfx::ProcessNode score::gfx::Node

Detailed Description

Gaussian Splat rendering node.

A full rendering node for 3D Gaussian Splatting. Uses instanced quad rendering with EWA (Elliptical Weighted Average) projection.

Pipeline (per frame):

  1. SH preprocess (compute): raw 256-byte splats → compact 64-byte splats Evaluates spherical harmonics, applies exp(scale), sigmoid(opacity)
  2. Depth key generation (compute): writes sortable uint keys
  3. Radix sort (compute): sorts indices back-to-front
  4. Render pass: instanced alpha-blended quads using sorted indices

Input ports:

  • Raw Splat Buffer: GPU storage buffer, 256 bytes per splat (layout matches GaussianSplatData from Ply.hpp)

Output ports:

  • Rendered image

Public Member Functions

score::gfx::NodeRenderercreateRenderer (RenderList &) const noexcept override
 Create a renderer in a given context for this node.
 
void process (Message &&msg) override
 Process a message from the execution engine.
 
- Public Member Functions inherited from score::gfx::ProcessNode
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 &)
 
 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
 
Nodeoperator= (const Node &)=delete
 
Nodeoperator= (Node &&)=delete
 
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
 
QSize resolveRenderTargetSize (int32_t port, RenderList &renderer) const noexcept
 
RenderTargetSpecs resolveRenderTargetSpecs (int32_t port, RenderList &renderer) const noexcept
 
void process (int32_t port, const ossia::render_target_spec &v)
 

Public Attributes

int splatCount {}
 
float scaleFactor {1.0f}
 
bool enableSorting {true}
 
uint32_t shDegree {3}
 
ossia::vec3f modelPosition {0.f, 0.f, 0.f}
 
ossia::vec3f modelRotation {0.f, 0.f, 0.f}
 
ossia::vec3f modelScale {1.f, 1.f, 1.f}
 
ossia::vec3f position {-1.f, -1.f, -1.f}
 
ossia::vec3f center {0.f, 0.f, 0.f}
 
float fov {90.f}
 
float near {0.001f}
 
float far {10000.f}
 
- Public Attributes inherited from score::gfx::ProcessNode
ProcessUBO standardUBO {}
 Every node matching with a score process will have such an UBO.
 
- 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 = -1
 
bool requiresDepth {}
 
bool addedToGraph {}
 

Additional Inherited Members

- Protected Attributes inherited from score::gfx::NodeModel
std::unique_ptr< char[]> m_materialData
 

Member Function Documentation

◆ createRenderer()

score::gfx::NodeRenderer * score::gfx::GaussianSplatNode::createRenderer ( RenderList r) const
overridevirtualnoexcept

Create a renderer in a given context for this node.

Reimplemented from score::gfx::NodeModel.

◆ process()

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

Process a message from the execution engine.

Reimplemented from score::gfx::Node.


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