Murl::Graph::IConstantBufferParameterGroup Interface Referenceabstract

The IConstantBufferParameterGroup graph node interface. More...

#include "murl_graph_i_constant_buffer_parameter_group.h"

Inheritance diagram for Murl::Graph::IConstantBufferParameterGroup:

Public Member Functions

virtual INodeGetNodeInterface ()=0
 Get the mutable Graph::INode interface. More...
 
virtual const INodeGetNodeInterface () const =0
 Get the constant Graph::INode interface. More...
 
virtual Bool SetName (const String &name)=0
 Set the group name, (constant buffer or uniform buffer name). More...
 
virtual UInt32 GetConstantBufferParameterGroupFlags () const =0
 Get current flags. More...
 
virtual Video::IConstantBufferGetVideoConstantBufferObject () const =0
 Get the group's internal video renderer object. More...
 
- Public Member Functions inherited from Murl::Graph::IConstantBuffer
virtual SInt32 GetIndex () const =0
 Get the zero-based index of this constant buffer. More...
 
virtual const StringGetName () const =0
 Get the constant buffer's name. More...
 
virtual IEnums::ConstantBufferItem GetItem () const =0
 Get the constant buffer's predefined item. More...
 
virtual Bool SetMaxByteSize (UInt32 maxByteSize, Bool preserveContents)=0
 Set the maximum byte size of the constant buffer. More...
 
virtual UInt32 GetMaxByteSize () const =0
 Get the maximum capacity of the constant buffer in bytes. More...
 
virtual Bool SetByteSize (UInt32 byteSize)=0
 Set the total byte size of all variables in the constant buffer. More...
 
virtual UInt32 GetByteSize () const =0
 Get the total byte size of all variables in the constant buffer. More...
 
virtual void * GetConstantData ()=0
 Retrieve a mutable pointer to the variable data stored in the buffer. More...
 
virtual const void * GetConstantData () const =0
 Retrieve a constant pointer to the variable data stored in the buffer. More...
 
virtual Bool SetConstantsModified ()=0
 Mark the constant buffer as modified. More...
 
- Public Member Functions inherited from Murl::Graph::IUniformContainer
virtual SInt32 AddUniform (IEnums::UniformItem item, IEnums::UniformType type, UInt32 &byteOffset)=0
 Add a predefined shader uniform variable. More...
 
virtual SInt32 AddUniform (const String &name, IEnums::UniformType type, UInt32 &byteOffset)=0
 Add a user-defined shader uniform variable. More...
 
virtual SInt32 GetUniformIndex (IEnums::UniformItem item) const =0
 Query the location of a predefined uniform variable in the container. More...
 
virtual SInt32 GetUniformIndex (const String &name) const =0
 Query the location of a user-defined uniform variable in the container. More...
 
virtual UInt32 GetNumberOfUniforms () const =0
 Get the total number of individual uniform variables in the container. More...
 
virtual IEnums::UniformType GetUniformType (UInt32 index) const =0
 Query the type of a uniform variable at a given index. More...
 
virtual IEnums::UniformItem GetUniformItem (UInt32 index) const =0
 Query the predefined item of a uniform variable at a given index. More...
 
virtual const StringGetUniformName (UInt32 index) const =0
 Query the variable name of a uniform at a given index. More...
 
virtual UInt32 GetUniformByteOffset (UInt32 index) const =0
 Get the byte offset of a uniform at a given index. More...
 
virtual IUniformGetUniform (UInt32 index) const =0
 Get the uniform object at a given index. More...
 
virtual IFloatUniformGetFloatUniform (UInt32 index) const =0
 Get the attribute at a given index as a scalar 32bit floating point object. More...
 
virtual IFloatVector2UniformGetFloatVector2Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 2-component 32bit floating point vector object. More...
 
virtual IFloatVector3UniformGetFloatVector3Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 3-component 32bit floating point vector object. More...
 
virtual IFloatVector4UniformGetFloatVector4Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 4-component 32bit floating point vector object. More...
 
virtual IFloatMatrix2UniformGetFloatMatrix2Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 2x2-component 32bit floating point matrix object. More...
 
virtual IFloatMatrix3UniformGetFloatMatrix3Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 3x3-component 32bit floating point matrix object. More...
 
virtual IFloatMatrix4UniformGetFloatMatrix4Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 4x4-component 32bit floating point matrix object. More...
 
virtual ISInt32UniformGetSInt32Uniform (UInt32 index) const =0
 Get the attribute at a given index as a scalar 32bit signed integer object. More...
 
virtual ISInt32Vector2UniformGetSInt32Vector2Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 2-component 32bit signed integer vector object. More...
 
virtual ISInt32Vector3UniformGetSInt32Vector3Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 3-component 32bit signed integer vector object. More...
 
virtual ISInt32Vector4UniformGetSInt32Vector4Uniform (UInt32 index) const =0
 Get the uniform at a given index as a 4-component 32bit signed integer vector object. More...
 

Detailed Description

The IConstantBufferParameterGroup graph node interface.

A parameter group collects references to a number of individual Graph::IConstantBufferParameter nodes, which together make up a logical block of uniform variables in a GPU shader program.

Parameter groups essentially employ the "constant buffer" or "uniform buffer" concept of DirectX 10+ and OpenGL|ES 3.0+, which allows for efficient variable state switching during rendering, as well as efficient updates of individual groups of variables with different update frequencies. API versions below the versions mentioned above do not (necessarily) implement this concept; however, in the Murl Engine it is necessary to follow this scheme to be compatible in both directions.

For this reason, a parameter group is defined using a given group name, which must match the name of a group defined in the shader code (if the API demands so).

A number of individual generic parameter groups must be grouped together in a Graph::IConstantBufferParameters container, which can then be activated for rendering in the same way as Graph::IFixedParameters nodes.

See the Graph::IConstantBuffer base interface for accessing the underlying data buffer. See the Graph::IParameters interface for additional information.

Member Function Documentation

◆ GetNodeInterface() [1/2]

virtual INode* Murl::Graph::IConstantBufferParameterGroup::GetNodeInterface ( )
pure virtual

Get the mutable Graph::INode interface.

This method returns a mutable pointer to the node's Graph::INode interface, to be able to query or modify common node properties such as active state, visibility or ID.

Returns
The mutable Graph::INode interface, or null if not available

◆ GetNodeInterface() [2/2]

virtual const INode* Murl::Graph::IConstantBufferParameterGroup::GetNodeInterface ( ) const
pure virtual

Get the constant Graph::INode interface.

This method returns a constant pointer to the node's Graph::INode interface, to be able to query common node properties such as active state, visibility or ID.

Returns
The constant Graph::INode interface, or null if not available

◆ SetName()

virtual Bool Murl::Graph::IConstantBufferParameterGroup::SetName ( const String name)
pure virtual

Set the group name, (constant buffer or uniform buffer name).

Once initialized, the name cannot be changed.

Parameters
nameThe name.
Returns
true if successful.

◆ GetConstantBufferParameterGroupFlags()

virtual UInt32 Murl::Graph::IConstantBufferParameterGroup::GetConstantBufferParameterGroupFlags ( ) const
pure virtual

Get current flags.

Returns
A bit mask made up from individual ConstantBufferParameterGroupFlags values.

◆ GetVideoConstantBufferObject()

virtual Video::IConstantBuffer* Murl::Graph::IConstantBufferParameterGroup::GetVideoConstantBufferObject ( ) const
pure virtual

Get the group's internal video renderer object.

Returns
A pointer to the mutable video renderer object.

The documentation for this interface was generated from the following file:
  • murl_graph_i_constant_buffer_parameter_group.h


Copyright © 2011-2018 Spraylight GmbH.