H3D API  2.4.1
Public Member Functions | Public Attributes | Static Public Attributes | Protected Attributes | List of all members
H3D::ShaderStorageBuffer Class Reference

This node provide a buffer object for OpenGL shader program to write into and read from. More...

#include <H3D/ShaderStorageBuffer.h>

Inheritance diagram for H3D::ShaderStorageBuffer:
Inheritance graph

Public Member Functions

 ShaderStorageBuffer (Inst< DisplayList > _displayList=0, Inst< SFNode > _metadata=0, Inst< SFInt32 > _width=0, Inst< SFInt32 > _height=0, Inst< SFInt32 > _depth=0, Inst< SFInt32 > _dataSize=0, Inst< SFString > _storageName=0)
 Constructor.
 
virtual void preRender (unsigned int program)
 specify the program will be used for attaching this shader storage buffer
 
virtual void render ()
 update storage specification if necessary and attach it the shader program to be used
 
virtual void prepareStorageBuffer ()
 update storage buffer
 
- Public Member Functions inherited from H3D::ShaderChildNode
 ShaderChildNode (Inst< DisplayList > _displayList=0, Inst< SFNode > _metadata=0)
 Constructor.
 
- Public Member Functions inherited from H3D::X3DNode
 X3DNode (Inst< SFNode > _metadata=0)
 Constructor.
 
X3DMetadataObjectgetMetadataByName (const string &_name)
 Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More...
 
- Public Member Functions inherited from H3D::Node
 Node ()
 Constructor.
 
virtual Nodeclone (bool deepCopy=true, DeepCopyMap *deepCopyMap=NULL)
 Returns a new instance of this node type with the same state as this one. More...
 
virtual ~Node ()
 Destructor.
 
X3DPrototypeInstancegetProtoInstanceParent ()
 If this node is the root node in the proto body of a X3DPrototypeInstance then this will return that node. More...
 
void setProtoInstanceParent (X3DPrototypeInstance *p)
 Set the X3DPrototypeInstance this node is the the root node if applicaple.
 
virtual void traverseSG (TraverseInfo &ti)
 traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More...
 
virtual bool lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result)
 Detect intersection between a line segment and the Node. More...
 
virtual void closestPoint (const Vec3f &p, NodeIntersectResult &result)
 Find closest point on Node to p. More...
 
virtual bool movingSphereIntersect (H3DFloat radius, const Vec3f &from, const Vec3f &to, NodeIntersectResult &result)
 Detect collision between a moving sphere and the Node. More...
 
virtual string defaultXMLContainerField ()
 Returns the default xml containerField attribute value. More...
 
virtual FieldgetField (const string &_name) const
 return a pointer to the field specified by name within this instance
 
int addDestructCallback (void(*func)(Node *, void *), void *args)
 Add a callback function to be run on destruction of node. More...
 
int removeDestructCallback (void(*func)(Node *, void *), void *args)
 Add a callback function to be run on destruction of node. More...
 
- Public Member Functions inherited from H3D::H3DDisplayListObject
 H3DDisplayListObject (Inst< DisplayList > _displayList=0)
 Constructor.
 

Public Attributes

H3DUniquePtr< SFInt32width
 horizontal dimension for the data Access type: inputOutput
Default value: 512

 
H3DUniquePtr< SFInt32height
 vertical dimension for the data Access type: inputOutput
Default value: 512

 
H3DUniquePtr< SFInt32depth
 layers for the data Access type: inputOutput
Default value: 16

 
H3DUniquePtr< SFInt32dataSize
 data size of the structure used for shader storage buffer the metric is bytes Access type: inputOutput
Default value: 4

 
H3DUniquePtr< SFStringstorageName
 storage buffer name used in shader by default, it will use the node name if not being set Access type: inputOutput

 
- Public Attributes inherited from H3D::X3DNode
H3DUniquePtr< SFNodemetadata
 Meta data about the node. More...
 
- Public Attributes inherited from H3D::H3DDisplayListObject
H3DUniquePtr< DisplayListdisplayList
 The DisplayList instance handling the OpenGL caching of this object.
 

Static Public Attributes

static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 
- Static Public Attributes inherited from H3D::X3DNode
static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 

Protected Attributes

unsigned int program_handle
 shader program that this shader storage buffer will be attached
 
int buffer_id
 buffer id, generated by openGL
 
unsigned int storage_block_index
 the active block index assigned by the shader, will have valid value only after the shader program get linked.
 
int storage_block_binding
 the block binding point for shader storage buffer in openGL context its value must be less than the MAX_SHADER_STORAGE_BUFFER_BINDINGS. More...
 

Additional Inherited Members

- Public Types inherited from H3D::Node
typedef std::map< Node *, Node * > DeepCopyMap
 A map type used during a deep copy clone() to map from original nodes to cloned nodes.
 
- Static Public Member Functions inherited from H3D::Node
static unsigned int nrNodesAlive ()
 Returns the nr of nodes currently alive, i.e. nodes created but not destructed.
 
static int nrNodesCreated ()
 Returns the number of nodes created in total since the start of the program.
 
- Protected Member Functions inherited from H3D::Node
void cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for the clone() method. More...
 
- Static Protected Member Functions inherited from H3D::Node
static NodegetClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for nodes that implement clone() More...
 

Detailed Description

This node provide a buffer object for OpenGL shader program to write into and read from.

Examples:

Internal routes:

Member Data Documentation

◆ storage_block_binding

int H3D::ShaderStorageBuffer::storage_block_binding
protected

the block binding point for shader storage buffer in openGL context its value must be less than the MAX_SHADER_STORAGE_BUFFER_BINDINGS.

together with storage_block_index, it will connect the shader storage buffer between OpenGL and shader program

Referenced by prepareStorageBuffer(), render(), and ShaderStorageBuffer().


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