The Vish Visualization Shell 0.3
Vish
Public Member Functions | Static Public Member Functions | List of all members
Wizt::UniformVertexAttribute Class Reference
Inheritance diagram for Wizt::UniformVertexAttribute:
Wizt::ProceduralVertexAttribute Wizt::RenderBasin::VertexAttribute Wizt::Anemone::SpecializedTentacle< Anemone::Arraybuffer > Wizt::Anemone::Tentacle MemCore::ReferenceBase< Tentacle >

Public Member Functions

bool activate (const Anemone &) override
 Activate this tentacle.
 
bool deactivate (const Anemone &) override
 Deactivate this tentacle.
 
size_t NumberOfElements () const override
 Returns the number of elements provided and used by this object, if it refers to countable elements.
 
- Public Member Functions inherited from Wizt::Anemone::Tentacle
virtual const char * getSamplerType () const
 If this tentacle refers to some texture sampler in a shader, then hereby return the type of this sampler is it occurs in the code.
 
virtual int getTextureUnit () const
 Get the texture unit number which was specified during construction, if positive then it refers to some texture unit that is used in an associated shader.
 
virtual size_t memsize () const
 Return the memory occupied by this buffer if it occupies memory at all. Otherwise, returns 0 (default).
 
virtual bool updateValue (VRenderContext &Context)
 Possibly update a tentacle from settings in a context.
 
- Public Member Functions inherited from MemCore::ReferenceBase< Tentacle >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< Tentacle, Tentacle > &PossibleSelf) const noexcept
 Check if this object is identical to the one used by the given pointer.
 
void mkAutoDestructive ()
 Marks this object as being automatically destructed, e.g.
 
refcount_t refcount () const noexcept
 The strong reference count.
 
 ReferenceBase (Tentacle *that) noexcept
 Constructor, initializes reference counter to zero.
 
const auto & self () const
 Return weak pointer to the object self.
 
refcount_t wrefcount () const noexcept
 The weak reference count.
 

Static Public Member Functions

static string getShaderDefines (const string &prefix, int dims[3], const Eagle::point3 &Origin, const Eagle::tvector3 &Delta)
 Defines shader functions to compute indices and coordinates for a vertex ID.
 

Additional Inherited Members

- Public Types inherited from MemCore::ReferenceBase< Tentacle >
using reference_domain_t = Tentacle
 The type of the base class.
 
using SelfPtr_t = WeakPtr< Tentacle, Tentacle >
 Type for a pointer to this object itself.
 
- Public Attributes inherited from Wizt::RenderBasin::VertexAttribute
unsigned DoublePrecision:1
 Load data in double precision.
 
unsigned Integer:1
 Hint whether the attribute is an integer data type in the shader, in which case it will be loaded differently.
 
unsigned Normalized:1
 Indicate whether this buffer will be normalized to the range [0,1] if it is an integer type loaded to a floating point attribute.
 
unsigned Signed:1
 Indicate if this integer type is signed.
 
- Public Attributes inherited from Wizt::Anemone::Tentacle
Activity_t Activity
 A bit mask telling whether this tentacle should participate in the waving of an Anemone.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< Tentacle >
virtual void extremeUnction ()
 A virtual function that will be called just before the object is destroyed.
 
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called).
 
void suicide ()
 Delete this.
 
virtual ~ReferenceBase ()
 Virtual destructor.
 

Member Function Documentation

◆ getShaderDefines()

string Wizt::UniformVertexAttribute::getShaderDefines ( const string &  prefix,
int  dims[3],
const Eagle::point3 Origin,
const Eagle::tvector3 Delta 
)
static

Defines shader functions to compute indices and coordinates for a vertex ID.

Given a field named Positions , the following shader functions are provided:

// Multidimensional index for the linear vertex index I
ivec3 Eval_Positions_Index(int I);
// Coordinates for the given vertex id
vec3 Eval_Positions(int I);
// Coordinates for the given vertex id relative to the Origin of this uniform array
vec3 Eval_Relative_Positions(int I);

Usually a vertex shader will call these functions for a given

gl_VertexID

Note this functionality requires GLSL version 130 or better for gl_VertexID and

#extension GL_EXT_gpu_shader4 : enable

to enable usage of the modulo operator. For instance, in constructors derived from class Programmable, do

v_prefix = "#version 130\n"
"#extension GL_EXT_gpu_shader4 : enable\n"
;

◆ NumberOfElements()

size_t Wizt::UniformVertexAttribute::NumberOfElements ( ) const
overridevirtual

Returns the number of elements provided and used by this object, if it refers to countable elements.

Otherwise, returns 0 (default).

Reimplemented from Wizt::Anemone::Tentacle.