The IConstantBufferParameterGroup graph node interface. More...
#include "murl_graph_i_constant_buffer_parameter_group.h"
Public Member Functions | |
virtual INode * | GetNodeInterface ()=0 |
Get the mutable Graph::INode interface. More... | |
virtual const INode * | GetNodeInterface () 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::IConstantBuffer * | GetVideoConstantBufferObject () 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 String & | GetName () 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 String & | GetUniformName (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 IUniform * | GetUniform (UInt32 index) const =0 |
Get the uniform object at a given index. More... | |
virtual IFloatUniform * | GetFloatUniform (UInt32 index) const =0 |
Get the attribute at a given index as a scalar 32bit floating point object. More... | |
virtual IFloatVector2Uniform * | GetFloatVector2Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 2-component 32bit floating point vector object. More... | |
virtual IFloatVector3Uniform * | GetFloatVector3Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 3-component 32bit floating point vector object. More... | |
virtual IFloatVector4Uniform * | GetFloatVector4Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 4-component 32bit floating point vector object. More... | |
virtual IFloatMatrix2Uniform * | GetFloatMatrix2Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 2x2-component 32bit floating point matrix object. More... | |
virtual IFloatMatrix3Uniform * | GetFloatMatrix3Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 3x3-component 32bit floating point matrix object. More... | |
virtual IFloatMatrix4Uniform * | GetFloatMatrix4Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 4x4-component 32bit floating point matrix object. More... | |
virtual ISInt32Uniform * | GetSInt32Uniform (UInt32 index) const =0 |
Get the attribute at a given index as a scalar 32bit signed integer object. More... | |
virtual ISInt32Vector2Uniform * | GetSInt32Vector2Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 2-component 32bit signed integer vector object. More... | |
virtual ISInt32Vector3Uniform * | GetSInt32Vector3Uniform (UInt32 index) const =0 |
Get the uniform at a given index as a 3-component 32bit signed integer vector object. More... | |
virtual ISInt32Vector4Uniform * | GetSInt32Vector4Uniform (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]
|
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]
|
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()
|
pure virtual |
Set the group name, (constant buffer or uniform buffer name).
Once initialized, the name cannot be changed.
- Parameters
-
name The name.
- Returns
- true if successful.
◆ GetConstantBufferParameterGroupFlags()
|
pure virtual |
Get current flags.
- Returns
- A bit mask made up from individual ConstantBufferParameterGroupFlags values.
◆ GetVideoConstantBufferObject()
|
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