H3D API
2.4.1
|
A ShaderAtomicCounter is a atomic counter can be used in GLSL shader. More...
#include <H3D/ShaderAtomicCounter.h>
Public Member Functions | |
ShaderAtomicCounter (Inst< DisplayList > _displayList=0, Inst< SFNode > _metadata=0, Inst< SFInt32 > _initialValue=0) | |
Constructor. | |
virtual void | preRender (unsigned int program) |
specify the texture_unit will be used for rendering this shader image | |
virtual void | render () |
update texture and image if necessary, then bind it to shader program | |
virtual void | traverseSG (TraverseInfo &ti) |
traverse function overridden to reset the counter to its initial value | |
![]() | |
ShaderChildNode (Inst< DisplayList > _displayList=0, Inst< SFNode > _metadata=0) | |
Constructor. | |
![]() | |
X3DNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
X3DMetadataObject * | getMetadataByName (const string &_name) |
Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More... | |
![]() | |
Node () | |
Constructor. | |
virtual Node * | clone (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. | |
X3DPrototypeInstance * | getProtoInstanceParent () |
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 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 Field * | getField (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... | |
![]() | |
H3DDisplayListObject (Inst< DisplayList > _displayList=0) | |
Constructor. | |
Public Attributes | |
H3DUniquePtr< SFInt32 > | initialValue |
initial value for the atomic counter | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
![]() | |
H3DUniquePtr< DisplayList > | displayList |
The DisplayList instance handling the OpenGL caching of this object. | |
Static Public Attributes | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
Protected Member Functions | |
void | applyInitialValue () |
Set the counter to the value specified in the initialValue field. More... | |
![]() | |
void | cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for the clone() method. More... | |
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 | atomic_counter_binding |
the atomic counter binding point for atomic counter buffer will be used by the shader to access the data in buffer this value can be directly set through the binding layout in shader and inquired through glGetActiveAtomicCounterBufferiv function | |
bool | do_init_value |
A flag to indicate that the counter should be reset. | |
Additional Inherited Members | |
![]() | |
typedef std::map< Node *, Node * > | DeepCopyMap |
A map type used during a deep copy clone() to map from original nodes to cloned nodes. | |
![]() | |
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. | |
![]() | |
static Node * | getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for nodes that implement clone() More... | |
A ShaderAtomicCounter is a atomic counter can be used in GLSL shader.
It is fast and can only be used to be incremented or decremented by 1. The initialValue field is used to set the initial value for this counter, by default this value is zero if not being set. And this counter will be reset to its initial value once per rendering loop in the scene.
Examples:
|
protected |
Set the counter to the value specified in the initialValue field.
This is done once per frame
References atomic_counter_binding, buffer_id, and initialValue.
Referenced by render().