Fish - FiberLib for VISH 0.3
Fish - The Fiber Bundle API for the Vish Visualization Shell
Public Types | Public Member Functions | List of all members
Wizt::SurfaceRenderer Class Reference

Base class to render triangular surface using shaders and support for floating origin (i.e., large coordinates). More...

#include <SurfaceRenderer.hpp>

Inheritance diagram for Wizt::SurfaceRenderer:
Wizt::TriangleRenderer Wizt::FloatingAnemone Wizt::Programmable Wizt::ShaderConditionals Wizt::Phong Wizt::SkeletonRenderer Wizt::SkeletonOperator< SkeletonProperty > Wizt::FloatingOriginAnemone Wizt::Illuminatable Wizt::VConnectable Wizt::GridAnemone Wizt::SkeletonOperatorBase Wizt::GetSkeletonOperator Wizt::FloatOrigin Wizt::VStateCreatorBase Wizt::Fish< Fiber::Grid > Wizt::Fish< Fiber::Skeleton > Wizt::Fish< Fiber::Slice > Wizt::GetSkeletonOperator Wizt::VConnectable Wizt::GridAnemoneRenderObject Wizt::Fish< double > Wizt::VSlotContainer< int ExpertLevel >

Public Types

using SurfaceRenderState = SkeletonRendererState
 
using MyRenderState = SkeletonRendererState
 
using glsl = RenderNamespace::glsl
 
- Public Types inherited from Wizt::TriangleRenderer
using GridInspector = Fiber::GridInspector< Fiber::hasSkeletonOfGridType< Fiber::TriangularSurface > >
 
- Public Types inherited from Wizt::SkeletonRenderer
typedef GridAnemoneState SkeletonRendererState
 
- Public Types inherited from Wizt::VSlotContainer< int ExpertLevel >
enum  AttachErrorCode
 
typedef void AcceptableInputTypes
 
typedef VSlotSet CreationSlots_t
 
typedef VSlot::Empty< IEmpty
 
- Public Types inherited from MemCore::ReferenceBase< VManagedObjectBase >
typedef Object reference_domain_t
 
typedef WeakPtr< Object, Object > SelfPtr_t
 
- Public Types inherited from Wizt::GridAnemone
enum class  SortMethod { None , BackToFront , FrontToBack , MostVisible }
 
using AnemoneParameters = ::Wizt::AnemoneParameters
 
using AnemoneCreationContext = ::Wizt::GridAnemoneCreationContext
 
using GridAnemoneState = ::Wizt::GridAnemoneState
 
using SkeletonID = Fiber::SkeletonID
 
using FieldHierarchy = map< SkeletonID, FieldInfo >
 
using SkeletonSet = map< SkeletonID, WeakPtr< Fiber::Skeleton > >
 
using AnemoneRenderStatus = AnemoneRenderFields::AnemoneRenderStatus
 
using initializeAnemoneParameters = std::tuple< Anemone &, const AnemoneCreationContext &, const RefPtr< AnemoneExplorer > &, AnemoneCreatorDependency & >
 
- Public Types inherited from Wizt::VEnvironmentRenderObject
typedef ::Eagle::PhysicalSpace::point point
 
- Public Types inherited from Wizt::VObject
enum  HelpType
 
typedef void AcceptableInputTypes
 
typedef VConnectable::Empty< IEmpty
 
typedef std::function< bool(const RefPtr< VObject > &vobj, const VSlot &ChildConnection)> VObjectIterator_f
 
- Public Types inherited from Wizt::VSaveable
typedef std::function< bool(const string &s, VishSaver &VS)> save_iterator
 
- Public Types inherited from Wizt::VManagedDomainObject< VObject >
typedef What Domain_t
 
- Public Types inherited from Wizt::RenderNamespace
enum  GeometryInputType
 
enum  GeometryOutputType
 
enum  Primitive
 
enum  TextureFormat
 
enum  VertexAttributeTypes
 
typedef std::variant< int, float, double, unsigned, Eagle::FixedArray< int, 2 >, Eagle::FixedArray< float, 2 >, Eagle::FixedArray< double, 2 >, Eagle::FixedArray< int, 3 >, crd3f, Eagle::FixedArray< float, 3 >, crd3d, Eagle::FixedArray< double, 3 >, Eagle::FixedArray< int, 4 >, Eagle::FixedArray< float, 4 >, Eagle::FixedArray< double, 4 >, Eagle::Quadratic< 2, float >, Eagle::Quadratic< 3, float >, Eagle::Quadratic< 4, float >, vec3f_vector, crd3f_vectorAnyUniform
 
typedef std::string glsl
 
- Public Types inherited from Wizt::Programmable
typedef RenderBasin::Program Program
 

Public Member Functions

RefPtr< AnemoneExplorergetAnemoneExplorer (VRenderContext &Context) const override
 The SurfaceAnemoneExplorer is a temporary object that exists while rendering all fragments of a surface.
 
 SurfaceRenderer (const string &name, int, const RefPtr< VCreationPreferences > &VP)
 
string getSurfaceShaderPrefix (const GridAnemone::AnemoneCreationContext &ARC, const GridAnemone::AnemoneExplorer &AE) const
 Provide shader code for -+ Transformations -+ floating origin -+ uniform coordinates -+ light sources -+ shader conditionals.
 
virtual string getShaderPrefix (const GridAnemone::AnemoneCreationContext &ARC, const GridAnemone::AnemoneExplorer &AE) const
 Allow to insert shader code at shader initialization.
 
bool feedAnemone (Anemone &RenderAnemone, RenderBasin::ElementAttribute &SkeletonBuffer, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const override
 Overload this function to setup a painter that is specific to the given skeleton, which will be mostly a painter object for lines or triangles.
 
bool isValidAnemone (const Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const override
 Checks if a given Anemone is valid for rendering.
 
bool updateAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const override
 Update a certain Anemone with variables and values that do not require re-creation or loading of any data.
 
- Public Member Functions inherited from Wizt::TriangleRenderer
 TriangleRenderer (const string &name, int RenderCategory, const RefPtr< VCreationPreferences > &VP)
 
bool feedAnemone (Anemone &RenderAnemone, RenderBasin::ElementAttribute &SkeletonBuffer, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const override
 Feed all triangle-related data to the Render Anemone, in particular sets the Painter of the Anemone to do triangles.
 
- Public Member Functions inherited from Wizt::SkeletonRenderer
GridSelector getGridFieldSelector (const RefPtr< ValuePool > &Context) const override
 
 SkeletonRenderer (const string &name, int RenderCategory, const RefPtr< VCreationPreferences > &VP)
 
FieldHierarchy getRenderFields (VRenderContext &Context) const override
 Returning the relevant field for rendering.
 
RefPtr< Fiber::RepresentationgetRenderSkeletonAsVertices (VRenderContext &Context) const
 
Fiber::Field::NamedFragment getCompatibleVertexFragment (const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
 Find a vertex fragment that matches the currently selected primary fragment in the skeleton ID.
 
bool validateInput (VRequest &R, Fiber::Info< Fiber::Grid > &, const RefPtrGridAnemoneState &GAS, const RefPtr< Fiber::Skeleton > &myVertexSkeleton, const RefPtr< Fiber::Chart > &chart, string &ValidateInputInfoString) const override
 Validate the input properties from the GridAnemone.
 
virtual bool checkRepresentionProperties (Fiber::Representation &myVertices, Fiber::Representation &mySkeletonAsVertices, VRequest &Context) const
 Virtual function to inspect the given representation of the vertices and skeleton.
 
GridAnemone::AnemoneRenderStatus initializeAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const override
 Initialize a virgin Render Anemone, i.e.
 
- Public Member Functions inherited from Wizt::VConnectable
virtual void adjustConnections (const RefPtr< VSlot > &ChangedSlot, const RefPtr< VParameter > &par)
 
VSlotContainer::AttachErrorCode attach (const ParameterID &whichone, VSlotContainer &sourceObject, const ParameterID &sourceName)
 
AttachErrorCode attach (const RefPtr< VParameter > &OldParam, const RefPtr< VParameter > &NewParam, const string &Member={})
 
AttachErrorCode attachUniqueObject (const RefPtr< VParameter > &param, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
 
AttachErrorCode attachUniqueObject (const RefPtr< VSlot > &slot, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
 
RefPtr< VSlotConnect (const RefPtr< VParameter > &SourceParam)
 
RefPtr< VSlotConnectInterface (const RefPtr< VSlotContainer > &Provider, const RefPtr< InterfaceBase > &IB)
 
virtual bool CreatedFilteredConnection (const RefPtr< VParameter > &SourceParam)
 
- Public Member Functions inherited from Wizt::VSlotContainer< int ExpertLevel >
Ageableage (const RefPtr< ValuePool > &VP)
 
const Ageableage (const RefPtr< ValuePool > &VP) const
 
const AgeableConnectionAge () const
 
bool ConnectionsHaveChanged (const RefPtr< ValuePool > &VP) const
 
bool HasYoungerInput (const RefPtr< ValuePool > &Context, int RecursionLevel=0) const
 
Ageable YoungestInput (const RefPtr< ValuePool > &Context) const
 
Ageable YoungestOutput (const RefPtr< ValuePool > &Context) const
 
Ageable YoungestUncachedInput (const RefPtr< ValuePool > &Context) const
 
bool CheckIfThereExistNewerOutputs (const VRequest &request, bool AdjustObjectAge) const
 
RefPtr< VSlotaddParameter (const ParameterID &name, int EL, const RefPtr< VParameter > &param, bool overwriteExistingSlot)
 
virtual bool allowParameterReplacement (const RefPtr< VParameter > &NewParam, const RefPtr< VParameter > &OldParam, const string &localName, int ExpertLevel)
 
virtual int connectSlots (const VSlotContainerPtr &vobj)
 
bool removeParameter (const ParameterID &s)
 
RefPtr< VParametergetParameter (const ParameterID &s) const
 
RefPtr< VSlotgetSlot (const ParameterID &s, int &EL) const
 
bool setSlotValueFromText (const ParameterID &s, const string &ValueText, const RefPtr< ValuePool > &VP, const string &theMember={})
 
RefPtr< VSlotfindSlot (const RefPtr< VParameter > &param) const
 
string getSlotName (const RefPtr< VParameter > &param) const
 
bool AddAction (const ParameterID &s, const RefPtr< ValueActionBase > &VAB)
 
bool AddAction (const RefPtr< VSlot > &ActionSlot, bool(DerivedObject::*Action)(const RefPtr< VValueBase > &value))
 
RefPtr< VParametermkUniqueParameterInput (const ParameterID &s, const string &ContainerName)
 
int getExpertLevel (const ParameterID &s) const
 
int setExpertLevel (const ParameterID &s, int EL)
 
int getExpertLevel (const RefPtr< VParameter > &) const
 
int getExpertLevel (const RefPtr< VSlot > &S) const
 
int setExpertLevel (const RefPtr< VSlot > &S, int EL)
 
int setExpertLevel (const RefPtr< VParameter > &s, int EL)
 
bool hasChanged (const ParameterID &s, const RefPtr< ValuePool > &Context) const
 
bool hasChanged (const RefPtr< VSlot > &, const RefPtr< ValuePool > &Context) const
 
bool hasChanged (const RefPtr< ValuePool > &Context, int n,...) const
 
bool hasChanged (RefPtr< ValuePool > Context,...) const
 
virtual bool ignoreInput (const RefPtr< VSlot > &theSlot) const
 
bool getParameterValue (Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP) const
 
bool getParameterValue (Type &Variable, const ParameterID &s, const VContext &C) const
 
bool getParameterValue (Type &Variable, const ParameterID &s, const VRequest &R) const
 
bool setParameterValue (const Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP, bool autoCreateLocalValue) const
 
bool setParameterValue (const Type &Variable, const ParameterID &s, VContext &C, bool autoCreateLocalValue) const
 
bool setParameterValue (const Type &Variable, const ParameterID &s, VRequest &R, bool autoCreateLocalValue=false) const
 
RefPtr< VSlotaddParam (const ParameterID &name, const Type &init, const RefPtr< VCreationPreferences > &VP=NullPtr(), int expertLevel=0, bool overwriteExistingSlot=true)
 
bool setParameterProperty (const ParameterID &param, const string &Properties, const RefPtr< VValueBase > &Value=NullPtr())
 
RefPtr< VSlotaddFloatParam (double init, const ParameterID &param, double min, double max, const RefPtr< VCreationPreferences > &IP=NullPtr(), int expertLevel=0)
 
AttachErrorCode attach (const RefPtr< VParameter > &OldParam, const RefPtr< VParameter > &NewParam, const string &Member={})
 
int iterateParameters (int expertLevel, VSlotIterator &VIIt) const
 
int iterateInputSlots (int expertLevel, VSlotIterator &VIIt) const
 
int iterateInputs (VSlotIterator &VIIt, int expertLevel=0)
 
int iterate_inputs (const std::function< bool(VSlot &what, int ExpertLevel)>) const
 
RefPtr< VSlotgetUniqueInputSlot (const type_info &what)
 
int getNumberOfParameters (int expertLevel) const
 
virtual bool implements (const type_info &what) const
 
virtual RefPtr< VParametergetImplementation (const type_info &what, const string &name={}, const string &member={}) const
 
RefPtr< VSlotgetImplementationSlot (const type_info &what, const string &Name={}, const string &Member={}) const
 
VAcceptInfoList_t getAcceptInfoList (const std::type_info &request_type) const
 
bool provides (const RefPtr< VSlot > &OutputSlot) const
 
RefPtr< VSlotfindOutputSlot (const RefPtr< VParameter > &Who) const
 
bool isYounger (const RefPtr< VParameter > &OutputParam, const RefPtr< ValuePool > &VP) const
 
bool isNewlyConnected (const RefPtr< VParameter > &Who, const RefPtr< ValuePool > &VP) const
 
bool hasNewlyConnectedOutputs (const RefPtr< ValuePool > &VP) const
 
void findNewlyConnectedOutputs (const RefPtr< ValuePool > &VP, VSlotSet &WhichOnes) const
 
RefPtr< VSlotgetOutput (const string &Name) const
 
RefPtr< MemCore::StringListgetOutputs (const type_info &what=typeid(void)) const
 
virtual int iterateOutputs (VOutputIterator &VOut, const type_info &just_these=typeid(void)) const
 
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName={})
 
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName, const type_info &MemberType, const string &UseMember)
 
bool registerOutput (const RefPtr< VParameter > &P, const type_info &MemberType, const string &UseMember)
 
int getNumberOfInputs () const
 
int getNumberOfOutputs () const
 
bool hasChangedSlots (const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context) const
 
auto include_self (const std::tuple< SlotList... > &t) const -> decltype(std::tuple_cat(std::make_tuple(this), t))
 
 in (VSlotContainer *that, const string &name, int expertLevel=0)
 
 in (VSlotContainer *that, const string &name, const GridSelector &GS=GridSelector(), int expertLevel=0)
 
 out (VConnectable *Source, const string &initial_name, const Fiber::GridSelector &InitValue=GridSelector(), const RefPtr< VCreationPreferences > &CP=NullPtr())
 
- Public Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
auto getObjectCountID () const noexcept
 
bool isIdentical (const WeakPtr< Object, Object > &PossibleSelf) const noexcept
 
void mkAutoDestructive ()
 
refcount_t refcount () const noexcept
 
 ReferenceBase (Object *that) noexcept
 
const auto & self () const
 
refcount_t wrefcount () const noexcept
 
- Public Member Functions inherited from Wizt::GridAnemone
Ageable AgeOfRoI (const RefPtr< ValuePool > &Context) const
 
pRegionOfInterest getRegionOfInterest (const RefPtr< ValuePool > &Context) const
 
RefPtr< Fiber::ChartgetCartesianChart (const RefPtr< Fiber::Grid > &G, const RefPtr< ValuePool > &Context) const
 Get a chart object for the given Grid given the current selection of a chart from VRenderObject's VChartDependent base class.
 
RefPtr< State > newState () const override
 
 GridAnemone (const string &name, int RenderCategory, const RefPtr< VCreationPreferences > &VP)
 Constructor.
 
RenderTime getLastRenderTime (VRenderContext &Context) const override
 
virtual RefPtr< AnemoneCreatorBasenewAnemoneCreator (const Seagrass &theSeaggrass) const
 If some parameters of a Render Anemone need to be modified upon change of some input, for instance some uniform shader variables, then re-creation of the entire Anemone is overkill.
 
AnemoneRenderStatus renderAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE, size_t current_fragment, size_t max_fragment_number, const RefPtr< BoundingBox > &theFragmentBoundingBox) const
 Render a RenderAnemone with the given context, checking if it's valid first, and if so update it, otherwise it needs to be initialized.
 
AnemoneRenderStatus raiseAnemone (Anemone &RenderAnemone, const AnemoneCreationContext &ARC, const RefPtr< AnemoneExplorer > &AE) const
 Function to pack all kinds of information into a baby Anemone to let it grow into an adult functional one.
 
virtual bool disabledFragment (VRenderContext &theContext, const AnemoneExplorer &theAnemoneExplorer, const Fiber::CreativeArrayBase &CAB, const RefPtr< Fiber::FragmentID > &fID, const RefPtr< BoundingBox > &theFragmentBoundingBox, const RefPtr< Fiber::Representation > &R) const
 Virtual function to allow intervening rendering just before a Render Anemone is being created.
 
RefPtr< BoundingBallgetTouchableBoundingBall (const RefPtr< ValuePool > &VP) const override
 Get the bounding box of the entire object's geometry beyond the visible part such to allow proper camera navigation.
 
virtual bool addSupplementaryData (VRequest &Context, Fiber::Info< Fiber::Grid > &, RenderFields &RF, const RefPtr< Fiber::Skeleton > &myVertexSkeleton, const RefPtr< Fiber::Chart > &chart, string &InfoString)
 Virtual call to add additional data in child classes.
 
virtual void requestSupplementaryData (VRenderContext &theContext, const RefPtr< Fiber::FragmentID > &myFragmentID) const
 Asynchroneous mode: Request creation of supplementary data.
 
virtual bool isCreatingSupplementaryData (VRenderContext &theContext, const RefPtr< Fiber::FragmentID > &myFragmentID) const
 Asynchroneous mode: Check whether supplementary data are currently under creation.
 
bool update (VRequest &R, double precision) override
 The update function retrieves data from the input Grid and prepares them in the State object for rendering.
 
bool environment_render (VRenderContext &Context) const override
 
TouchIndex_t do_feedback_render (VRenderContext &Context, TouchIndex_t StartIndex) const
 Support for feedback rendering, in case a child object is derived from a Touchable.
 
virtual TouchIndex_t getTouchIndexFragmentIndexMultiplicator (VRenderContext &Context, const Fiber::Field &) const
 For feedback rendering: The emitted start index will be the numerical fragment ID of the render field multiplied by this multiplicator.
 
- Public Member Functions inherited from Wizt::Fish< double >
 Fish ()
 Default constructor.
 
 ~Fish ()
 Destructor.
 
bool IterateLevels (LevelIterator &LI, const Fiber::Info< Fiber::Grid > &G, const RefPtr< ValuePool > &Context) const
 Iterate over the diverse refinement levels of a Grid, which may exist at times different from the given coarsest grid.
 
- Public Member Functions inherited from Wizt::GridAnemoneRenderObject
 GridAnemoneRenderObject (const string &name, int Cat, const RefPtr< VCreationPreferences > &VP)
 
virtual RefPtr< BoundingBoxgetModifiedBBox (const RefPtr< ValuePool > &Context, Fiber::CreativeArrayBase &CoordinateFragment, const RefPtr< Fiber::FragmentID > &theFragmentID, const RefPtr< Fiber::Skeleton > &DestVertexSkeleton, const RefPtr< Fiber::Chart > &chart, bool AllowAsynchLoading) const
 Get a bounding box as modified by a certain object's special setup, for instance using another field than the coordinates to obtain some geometry.
 
- Public Member Functions inherited from Wizt::VRenderObject
void closeBBox (const RefPtr< ValuePool > &VP) const
 
void embrace (const RefPtr< ValuePool > &VP, const point &crd) const
 
RefPtr< BoundingBallgetBoundingBall (const RefPtr< ValuePool > &VP) const override
 
bool resetBBox (const RefPtr< ValuePool > &S) const
 
bool safe_render (VRenderContext &Context, double Z=0, double dZ=-1) const override
 
void setBoundingBall (const RefPtr< ValuePool > &VP, const RefPtr< BoundingBall > &BS) const
 
 VRenderObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
 
- Public Member Functions inherited from Wizt::VEnvironmentRenderObject
void announce (const string &name, const VCamera &ViewpointProperties, const RefPtr< ValuePool > &Context) const
 
void getRenderPrecision (VRenderContext &Context, double &OverallPrecision, double &ThisContribution) const
 
 VEnvironmentRenderObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
 
- Public Member Functions inherited from Wizt::RenderAble
virtual string getSensorInfo (const RefPtr< ValuePool > &Context, const SensorView &theSensorView)
 
bool isVisible (const RefPtr< ValuePool > &Context) const
 
- Public Member Functions inherited from Wizt::VObject
string CreatorName () const
 
const WeakPtrVCreatorBasegetCreator () const
 
virtual bool request (VRequest &, double precision, const WeakVObjectPtr &ImmediateRequestor, const WeakVObjectPtr &RootRequestor)
 
bool schedule (double precision, const RefPtr< ValuePool > &Context=nullptr)
 
void enableRequestProcessing ()
 
void disableRequestProcessing ()
 
bool acceptsRequests () const
 
const MemCore::CounterUpdateCount () const
 
const MemCore::CounterRequestCount () const
 
 VObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
 
virtual const GimpIcongimp_icon () const
 
virtual const char *constxpm_icon () const
 
virtual string qt_icon () const
 
virtual string help (HelpType=HTMLText) const
 
bool setObjectAsChild (const VObjectPtr &childVObject, const string &DependencySlotName)
 
double requestTime () const
 
void remove ()
 
const RefPtr< VCreationPreferences > & CreationPreferences () const
 
virtual std::string type_key () const
 
void iterateParents (VObjectIterator &VOI, int EL=0) const
 
int iterateParents (const VObjectIterator_f &VOI, int EL=0) const
 
virtual string CreateParameterName (const ParameterID &name) const
 
int iterateChildren (ChildIterator &) const
 
int findChildren (const Lambda &theLambda) const
 
std::list< std::vector< std::string > > getProvenance () const
 
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const Intercube &CreationContext, const RefPtr< VCreationPreferences > &VCP=nullptr)
 
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const RefPtr< VCreationPreferences > &VCP=nullptr)
 
AttachErrorCode attachInputObject (const RefPtr< VSlot > &slot, const string &name={}, const RefPtr< VCreationPreferences > &VCP=nullptr, bool ReallyUnique=true)
 
CreateConnectionResult_t createChild (const VAcception &VA, const Intercube &CreationContext)
 
CreateConnectionResult_t connectChild (const VObjectPtr &ChildObject, const RefPtr< VAcceptInfo > &VA)
 
CreateConnectionResult_t connectAsChild (const VObjectPtr &ChildObject, const VAcception &VA)
 
virtual void InputCreation (const RefPtr< VParameter > &CurrentObjectsInput, const VObjectPtr &NewlyCreatedObject, const RefPtr< VParameter > &TheNewObjectsOutputParameter)
 
VObjectPtr createInput (const WeakPtrVCreatorBase &VCrec, const RefPtr< VSlot > &what, const string &name, Intercube &CreationContext)
 
VObjectPtr extractSlot (const RefPtr< VSlot > &theSlot, const string &theNewName=string()) const
 
- Public Member Functions inherited from Wizt::VStateCreatorBase
RefPtr< State > & getState (const WeakPtr< ValuePool > &VP) const
 
RefPtr< InterfaceBasehasLocalInterface (const type_info &InterfaceType) const
 
RefPtr< State > myState (const WeakPtr< ValuePool > &Context) const
 
void setState (const WeakPtr< ValuePool > &, const RefPtr< State > &st) const
 
- Public Member Functions inherited from Wizt::VSaveable
void addSaver (const string &, const RefPtr< VishSaver > &)
 
void addSavers (AppClass &A)
 
bool autosave () const
 
RefPtr< VishSavergetMostRecentSaver () const
 
size_t getNumberOfSavers () const
 
RefPtr< VishSavergetSaver (const string &) const
 
RefPtr< VishSavergetSaverByExt (const string &ext) const
 
int iterate_savers (const save_iterator &si) const
 
- Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
const type_infogetDomainType () const override
 
void remove ()
 
 VManagedDomainObject (const string &name, int priority=DEFAULT_PRIORITY)
 
- Public Member Functions inherited from Wizt::VManagedObject
string getLoadModule () const
 
void insert (const string &s, int priority=DEFAULT_PRIORITY)
 
void remove ()
 
void setPriority (int priority)
 
 VManagedObject (const string &name, int priority=DEFAULT_PRIORITY)
 
- Public Member Functions inherited from MemCore::Intercube
void addInterface (const RefPtr< InterfaceBase > &I) const
 
void addInterfaceData (const Data &D)
 
void addInterfaceData (const Data &D)
 
void clearInterfaces ()
 
bool const_iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP) const
 
virtual RefPtr< InterfaceBasecreateInterface (const type_info &) const
 
RefPtr< InterfaceBasefindInterface (const type_info &t) const
 
RefPtr< InterfaceBasegetInterface (const type_info &t)
 
std::string getInterfaceNames (const char delim=';') const
 
bool gotNewInterfaceData (const Data &D)
 
bool gotNewInterfaceData (mutex &M, const Data &D)
 
bool gotNewInterfaceData (mutex &M, const Data &D)
 
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector &S)
 
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector *S)
 
bool hasChangedInterfaceData (const Data &D) const
 
bool hasChangedInterfaceData (const Data &D) const
 
bool hasChangedInterfaceData (const Data &D, const Selector &) const
 
bool hasChangedInterfaceData (const Data &D, const Selector *) const
 
bool hasInterface (const type_info &t) const
 
bool iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP)
 
void printInterfaces () const
 
void registerInterface (const type_info &t)
 
void removeInterface ()
 
void removeInterfaceBase (const type_info &InterfaceBaseID)
 
- Public Member Functions inherited from MemCore::MutableName
void addNameChangeNotifier (const WeakPtr< Notifier > &)
 
std::string BaseName (const char Separator) const
 
const std::string & getName () const
 
 MutableName (const std::string &theName)
 
const std::string & Name () const
 
void rename (const std::string &newName)
 
void setName (const std::string &newName)
 
- Public Member Functions inherited from Wizt::VScriptable
RefPtr< VScriptFunctorfindFunctor (const string &name) const
 
RefPtr< VScriptFunctorinsertFunctor (const string &name, const RefPtr< VScriptFunctor > &)
 
bool iterate (iterator &it)
 
int nFunctors () const
 
void removeFunctor (const string &name)
 
- Public Member Functions inherited from Wizt::VTraceRequestID
bool addRequest (const VRequest &request)
 
bool hasRequest (const VRequest &request) const
 
- Public Member Functions inherited from Wizt::VTransformable
RenderBasin::glsl getTransformationShaderFunctions (VRenderContext &Context) const
 
bool initializeAnemoneTransformation (Anemone &RenderAnemone, VRenderContext &Context) const
 
RefPtr< BoundingBoxshadedVolume (const RefPtr< ValuePool > &Context, const RefPtr< BoundingBox > &VerticesBBox) const
 
- Public Member Functions inherited from Wizt::StatusIndicator
bool setStatusCritical (const RefPtr< ValuePool > &Context, const string &what) const
 
bool setStatusError (const RefPtr< ValuePool > &Context, const string &what, bool AnnouncePublic=false) const
 
bool setStatusInfo (const RefPtr< ValuePool > &Context, const string &what) const
 
bool setStatusWarning (const RefPtr< ValuePool > &Context, const string &what) const
 
 StatusIndicator (VObject *what, const string &initialtext="", int EL=0, const string &statusslotname=Slotname)
 
- Public Member Functions inherited from Wizt::SkeletonOperatorBase
 SkeletonOperatorBase (const string &s="grid", int el=0)
 
double getTime (const RefPtr< ValuePool > &R) const
 Used to overrides a virtual function via virtual multiple inheritance.
 
- Public Member Functions inherited from Wizt::Fish< Fiber::Slice >
 Fish (const string &time="time", const string &timescale="timescale")
 Constructor, uses the VObject from the virtual base class.
 
 ~Fish ()
 Destructor.
 
double getTime (const RefPtr< ValuePool > &VP, const RefPtr< Fiber::Bundle > &SpaceTime) const override
 Get the time value for the current selection from the value pool.
 
Fiber::Bundle::GridInfo_t findRecentGrid (Fiber::GridSelector &GS, const RefPtr< ValuePool > &VP) const
 
- Public Member Functions inherited from Wizt::TimeDependent
double getTime (const RefPtr< ValuePool > &VP, double DefaultTime=0.0, const Range &DefaultRange=Range(0.0, 1.0)) const
 
const TypedSlot< VTime > & getTimeSlot () const
 
void setupTime (const VConnectable::CreationSlots_t &CreationSlots, bool CreateNewTimeObjectIfNoneExistent=true)
 
 TimeDependent (const char *timename="time", const char *timescalename="timescale", const RefPtr< VCreationPreferences > &VP=NullPtr(), const VTime &VT=VTime(0.0, 0.0, 0.0))
 
- Public Member Functions inherited from Wizt::Fish< Fiber::Skeleton >
 Fish (const string &max="AMRmaxlevel", const string &min="AMRminlevel", int ExpertLevel=3)
 
 Fish (int ExpertLevel, const string &max="AMRmaxlevel", const string &min="AMRminlevel")
 
int getMinRefinementLevel (const RefPtr< ValuePool > &VP) const override
 The minimal refinement level.
 
int getMaxRefinementLevel (const RefPtr< ValuePool > &VP) const override
 The maximal refinement level.
 
- Public Member Functions inherited from Wizt::Fish< Fiber::Grid >
 Fish (const string &s="grid", int prior=2)
 Constructor, optionally pass a parameter of this grid's name (ie.
 
virtual ~Fish ()
 Destructor.
 
void registerGridAsOutput ()
 Make grid visible as output.
 
Fiber::Bundle::GridInfo_t findMostRecentGrid (GridSelector &GS, const RefPtr< ValuePool > &VP, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr())) const
 This is a convenience function to find the most recent grid for the current time ( Fish<Slice>() or virtual function getTime() ).
 
Fiber::Bundle::GridInfo_t findMostRecentGrid (const RefPtr< ValuePool > &VP, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr())) const
 Find the most recent grid for the current time ( Fish<Slice>() or virtual function getTime() ).
 
virtual GridSelector getGridSelector (const RefPtr< ValuePool > &VP) const
 Provide the current Grid selector, which usually would be taken from the intrinsic TypedSlot, such as equivalent to:
 
Fiber::Info< Fiber::SkeletongetRefinementLevel (int Level, const RefPtr< ValuePool > &VP, int IndexDepth=0, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr())) const override
 Get an refinement level for the given spacetime based on the GridSelector as returned by getGridSelector().
 
bool IterateLevelsOnMostRecentGrid (LevelIterator &LI, const RefPtr< ValuePool > &Context, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr())) const
 Iterate over all the selected levels of a Grid via an instance of the LevelIterator.
 
RefPtr< Fiber::FieldgetField (const Fiber::FieldSelector &FS, const RefPtr< ValuePool > &VP, const Fiber::BundlePtr &SpaceTime=Fiber::BundlePtr(NullPtr()))
 Retrieve a field for the given FieldSelector on the currently selected Grid.
 
- Public Member Functions inherited from Wizt::SkeletonOperator< SkeletonProperty >
RefPtr< Fiber::SkeletongetSkeleton (const Fiber::Grid &G) const override
 
RefPtr< Fiber::SkeletongetRefinedSkeleton (const Fiber::Grid &G, int i) const override
 
- Public Member Functions inherited from Wizt::FloatingAnemone
string WorldToScreen () const override
 The name of the shader parameter used to store the translation vector.
 
string getShaderPrefix (const GridAnemone::AnemoneCreationContext &ARC, const GridAnemone::AnemoneExplorer &AE) const
 
bool initializeTranslation (Anemone &RenderAnemone, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE) const
 Call this function from.
 
bool updateTranslation (Anemone &RenderAnemone, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE) const
 
RefPtr< GridAnemone::AnemoneExplorergetAnemoneExplorer (const WeakPtr< GridAnemone > &theGridAnemone, VRenderContext &Context) const
 Provide GLSL code defining uniform variables that relate to the floating origin approach.
 
- Public Member Functions inherited from Wizt::FloatingOriginAnemone
RefPtr< GridAnemone::AnemoneExplorergetAnemoneExplorer (const WeakPtr< GridAnemone > &theGridAnemone, VRenderContext &Context) const
 Creation of an AnemoneExplorer that takes care of the floating origin during rendering, it needs to be overridden in a child class of GridAnemone like this:
 
bool hasChangedAbsoluteTranslationVector (const RefPtr< GridAnemone::AnemoneExplorer > &AE) const
 
- Public Member Functions inherited from Wizt::FloatOrigin
RefPtr< Chunk< Eagle::point3 > > computeShiftedCoordinates (const RefPtr< Chunk< Eagle::point3 > > &RawCoordinates, const Eagle::tvector3 &TranslationVector) const
 
VRenderContext::ModelViewState getCoordinateTranslation (const VRenderContext &Context, Eagle::tvector3 &TranslationVector) const
 
VRenderContext::ModelViewState getCoordinateTranslation (const VRenderContext &Context, Intercube &IC, Eagle::tvector3 &TranslationVector) const
 
- Public Member Functions inherited from Wizt::Programmable
RefPtr< RenderBasin::ProgramCompileShader (VRenderContext &Context, const std::string &Name, const RenderBasin::Program::Setup &SetupFunction=nullptr, const RefPtr< RenderBasin::Program > &ExistingProgram=nullptr, const glsl &LocalVertexShaderPrefixCode="", const glsl &LocalGeometryShaderPrefixCode="", const glsl &LocalFragmentShaderPrefixCode="") const
 
void enableViewportArray (bool EnableFragmentLayerViewport=true)
 
virtual glsl fragment_shader (VRenderContext &Context) const=0
 
virtual glsl geometry_shader (VRenderContext &Context) const
 
virtual glsl GeometryShaderPrefix (VRenderContext &Context) const
 
std::pair< glsl, string > getCode (VRenderContext &Context, const std::string &Name, const std::string &Ext, std::string(Programmable::*shader)(VRenderContext &Context) const, const string &PrefixCode) const
 
void setGLSLVersion (const string &v_version, const string &g_version, const string &f_version)
 
void setGLSLVersion (const string &version)
 
virtual glsl vertex_shader (VRenderContext &Context) const=0
 
- Public Member Functions inherited from Wizt::ShaderConditionals
RenderNamespace::glsl getShaderDefines (const RefPtr< ValuePool > &Context) const
 
bool hasValidShaderDefines (const AnemoneCreatorContext &ACC) const
 

Additional Inherited Members

- Static Public Member Functions inherited from Wizt::TriangleRenderer
static RefPtr< RenderBasin::VertexAttributegetNormals (const AnemoneCreationContext &ARC)
 Query the per-vertex normal vectors for the current triangle fragment as specified via the AnemoneCreationContext and create a vertex attribute from it.
 
static void computeVertexNormals (Fiber::Representation &myVertices, Fiber::Representation &mySkeletonAsVertices, VRequest &Context)
 Compute normals in case we don't have any yet.
 
- Static Public Member Functions inherited from Wizt::VConnectable
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VParameter > &ProvidedParam, const string &Member={})
 
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VSlot > &SourceSlot, const string &Member={})
 
static bool detachSlot (const RefPtr< VSlot > &SourceSlot)
 
- Static Public Member Functions inherited from Wizt::VSlotContainer< int ExpertLevel >
static const charAttachErrorCodeMessage (AttachErrorCode)
 
static bool attachParameter (const RefPtr< VParameter > &theProvidedParam, const WeakPtr< VSlot > &theDestSlot, const string &theMember={})
 
- Static Public Member Functions inherited from Wizt::ValueCacheable
static ValueCacheconsider (MemCore::Intercube &IC, const WeakPtr< VSlot > &VS, const RefPtr< ValuePool > &Context)
 
static ValueCachegetValueCache (MemCore::Intercube &IC)
 
static bool hasChangedSlots (const WeakPtrToVSlotContainer &theSlotOwner, const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context)
 
- Static Public Member Functions inherited from Wizt::GridAnemone
static RefPtr< RenderBasin::VertexAttributecreateVertexCoordinates (VRenderContext &Context, const RefPtr< Fiber::MemBase > &Coordinates, bool AllowProceduralCoordinates)
 
static const chargetAnemoneRenderStatusDescription (AnemoneRenderStatus)
 
static void destroyAnemone (RefPtr< Anemone > &Anemone, const AnemoneCreationContext &ARC)
 
- Static Public Member Functions inherited from Wizt::RenderAble
static const charVisibilitySlotName ()
 
- Static Public Member Functions inherited from Wizt::VObject
static bool remove (const string &s)
 
static int findOutputObjects (const type_info &Type, OutputObjectIterator &GOutputs)
 
static string createChildname (const string &parent_name)
 
static VAcceptInfoList_t accept (const VObjectPtr &vobj)
 
static RefPtr< VParameterfindUniqueOutputObject (const type_info &Type, const RefPtr< VCreationPreferences > &VCP, bool ReallyUnique, const VObject *NotThisOne)
 
- Static Public Member Functions inherited from Wizt::VSaveable
static VSaveableGlobalState ()
 
- Static Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
static bool remove (const std::string &s)
 
static RefPtr< VManagedObjectfind (const string &s)
 
static int iterate (VManagedObjectIterator_t VIt, int p_start=INT_MIN, int p_end=INT_MAX)
 
static int size ()
 
static int traverse (VManagedObjectIterator &VIt, int p_start=INT_MIN, int p_end=INT_MAX)
 
- Static Public Member Functions inherited from Wizt::VManagedObject
static int count ()
 
static VManagedObjectPtr find (const type_info &, const std::string &s)
 
static bool InitDomain (const type_info &)
 
static int iterateModules (ModuleIterator &VIM)
 
static int size (const type_info &)
 
static int traverse (const type_info &, VManagedObjectIterator &VIt, int p_start, int p_end)
 
static void UnloadVModule (const string &what, VRemoveItem &RI)
 
- Static Public Member Functions inherited from MemCore::MutableName
static std::string BaseName (const std::string &theName, const char Separator)
 
- Static Public Member Functions inherited from Wizt::FloatingAnemone
static RefPtr< RenderBasin::VertexAttributecreatePossiblyShiftedVertices (const RefPtr< TypedChunk< Eagle::PhysicalSpace::point > > &Coordinates, const BoundingBox &BBox, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE)
 If the AnemoneExplorer is a FloatingAnemoneExplorer (which will be the case if getAnemoneExplorer() has been implemented as documented), then shift coordinates into the center of the bounding box, create a vertex attribute from it and set a CoordinateShift interface to the AnemoneExplorer.
 
static RefPtr< RenderBasin::VertexAttributecreatePossiblyShiftedVertices (const RefPtr< Fiber::MemBase > &Coordinates, const BoundingBox &BBox, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE, const MemCore::Attributes &Attribs, bool AllowProceduralCoordinates)
 If the AnemoneExplorer is a FloatingAnemoneExplorer (which will be the case if getAnemoneExplorer() has been implemented as documented), then shift coordinates into the center of the bounding box, create a vertex attribute from it and set a CoordinateShift interface to the AnemoneExplorer.
 
static std::pair< RefPtr< RenderBasin::VertexAttribute >, boolcreatePossiblyShiftedVertices (Fiber::CreativeArrayBase &myPrimaryDataFragment, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE, bool AllowProceduralCoordinates, const Fiber::CreativeArrayBase::result &AsyncCallback)
 Same as similar function, but using a Creator to create the coordinates and possibly compute the bounding box information.
 
- Static Public Member Functions inherited from Wizt::FloatingOriginAnemone
static RefPtr< RenderBasin::VertexAttributecreatePossiblyShiftedVertices (const RefPtr< TypedChunk< Eagle::PhysicalSpace::point > > &Coordinates, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE)
 
- Static Public Member Functions inherited from Wizt::FloatOrigin
static VRenderContext::ModelViewState getTranslationVector (const VRenderContext &Context, Intercube &IC, Eagle::tvector3 &TranslationVector, double CameraShiftThreshold)
 
static Eagle::tvector3 getTranslationVector (Intercube &IC)
 
- Static Public Member Functions inherited from Wizt::Programmable
static string OptionalFileRead (const string &filename, const string &text)
 
static glsl setNumberOfLightSources (VRenderContext &Context, const std::string &VariableName="lightNum")
 
- Static Public Member Functions inherited from Wizt::Phong
static std::string PhongShaderFunction ()
 vec4 Phong(vec4 VertexInEyeSpace, vec3 NormalInEyeSpace, vec4 DiffuseColor, float shininess, float sidedness);
 
- Static Public Member Functions inherited from Wizt::Illuminatable
static RenderBasin::glsl DefineLightSources (VRenderContext &Context)
 Define the shader variable lightNum that contains the number of active light sources.
 
static bool feedAnemone (VRenderContext &Context, AnemoneCreatorBase &AC)
 
static bool feedAnemone (const AnemoneCreatorContext &ACC)
 
static bool isValidAnemone (VRenderContext &Context, const AnemoneCreatorBase &AC)
 Check for consistency of the number of light sources.
 
static bool isValidAnemone (VRenderContext &Context, const WeakPtr< AnemoneCreatorBase > &AC)
 Check for consistency of the number of light sources.
 
static bool isValidAnemone (const AnemoneCreatorContext &ACC)
 Check for consistency of the number of light sources.
 
- Public Attributes inherited from Wizt::VSlotContainer< int ExpertLevel >
 AllLevels
 
 DestParameterNotFound
 
 InvalidDestParameter
 
- Public Attributes inherited from Wizt::GridAnemone
inout< doubleinLevelThreshold
 
in< doubleinRenderTimeFactor
 
inout< RefPtr< CellTensorFunctor > > inCellTensorFunctor
 
in< boolinFreeze
 
in< boolinShowTerminalOnly
 
inout< intinMinLevel
 
inout< intinNumberOfLevels
 
inout< intinMaxNumberOfRenderFragments
 
inout< intinMinNumberOfElementsPerFragments
 
inout< intinMaxNumberOfElementsPerFragments
 
out< VBoundingBoxoutVisibleBBox
 
out< Fiber::GridoutVisibleGrid
 
SortMethod CurrentSortMethod = SortMethod::None
 
- Public Attributes inherited from Wizt::VEnvironmentRenderObject
VOutput< VCameraSetPtrmyCameraSet
 
- Public Attributes inherited from Wizt::RenderAble
out< doubleoutRenderTimeContribution
 
in< boolVisibility
 
- Public Attributes inherited from Wizt::VObject
 HelpURL
 
 HTMLText
 
 PlainText
 
 ShortHTMLText
 
 ShortText
 
string UserInfo
 
- Public Attributes inherited from Wizt::RenderNamespace
 COLORS
 
 COORDINATES
 
 LINE_LOOP
 
 LINE_STRIP
 
 LINES
 
 NORMALS
 
 POINTS
 
 POLYGON
 
 TRIANGLE_STRIP
 
 TRIANGLE_FAN
 
 TRIANGLES
 
 QUAD_STRIP
 
 QUADS
 
 SECONDARY_COLORS
 
 TEXTURE0
 
 TEXTURE1
 
 USER_DEFINED
 
- Public Attributes inherited from Wizt::StatusIndicator
VOutput< VObjectStatusStatusInfo
 
- Public Attributes inherited from Wizt::Fish< Fiber::Skeleton >
TypedSlot< intMinRefinementLevel
 
TypedSlot< intMaxRefinementLevel
 
- Public Attributes inherited from Wizt::Fish< Fiber::Grid >
TypedSlot< Fiber::GridMyGrid
 
- Public Attributes inherited from Wizt::Programmable
glsl f_prefix
 
glsl g_prefix
 
RenderBasin::GeometryInputType GeometryInput
 
RenderBasin::GeometryOutputType GeometryOutput
 
glsl v_prefix
 
- Static Public Attributes inherited from Wizt::VObject
static constexpr char NameSeparator
 
static constexpr char SlotNameSeparator
 
- Static Public Attributes inherited from Wizt::VManagedObject
static string CurrentLoadModule
 
- Static Public Attributes inherited from Wizt::StatusIndicator
static const char Slotname []
 
- Static Public Attributes inherited from Wizt::TimeDependent
static const charGlobalTimePreference
 
- Static Public Attributes inherited from Wizt::Programmable
static const char default_fragment_shader []
 
static const char default_geometry_shader []
 
static const char default_vertex_shader []
 
- Protected Types inherited from Wizt::VObject
typedef bool(* UpdateFunction) (VObject *, VRequest &, double precision)
 
- Protected Member Functions inherited from Wizt::VSlotContainer< int ExpertLevel >
virtual void setup (const CreationSlots_t &CreationSlots)
 
- Protected Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
virtual void extremeUnction ()
 
ReferenceBaseoperator= (const ReferenceBase &R)
 
void suicide ()
 
- Protected Member Functions inherited from Wizt::RenderAble
 RenderAble (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
 
- Protected Member Functions inherited from Wizt::VObject
virtual bool unsychronized_update (VRequest &VR, double precision)
 
- Protected Member Functions inherited from Wizt::TimeDependent
void TimeSetup (const VConnectable::CreationSlots_t &CreationSlots)
 
- Protected Attributes inherited from Wizt::VObject
MemCore::Counter UpdateCounter
 
MemCore::Counter RequestCounter
 

Detailed Description

Base class to render triangular surface using shaders and support for floating origin (i.e., large coordinates).

The shader must support usage of the TranslationVector, which is needed to shift vertices by this amount.

uniform vec3 TranslationVector;
void main(void)
{
vec4 trans = vec4(TranslationVector, 0);
vec4 Vertex = gl_Vertex - trans;
}
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34

Member Function Documentation

◆ feedAnemone()

bool Wizt::SurfaceRenderer::feedAnemone ( Anemone RenderAnemone,
RenderBasin::ElementAttribute &  SkeletonBuffer,
const AnemoneCreationContext ARC,
const RefPtr< AnemoneExplorer > &  AE 
) const
overridevirtual

Overload this function to setup a painter that is specific to the given skeleton, which will be mostly a painter object for lines or triangles.

Use the RenderBasin::ElementAttribute::createPainter() function to create a painter from a VRenderContext, e.g.:

RenderAnemone.insert( SkeletonBuffer->createPainter( RenderBasin::TRIANGLES) );

or

RenderAnemone.insert( SkeletonBuffer.createPainter( RenderBasin::LINES) );
See also
EdgeRenderer

This function is called when a new Anemone is available for rendering and data from the vertices or the skeleton (e.g. triangles or edges) need to be added.

Optional function to add properties of the representions, for instance fields given on the vertice or edges/triangles/... -

This following code adds data from an unfragmented vertex field:

RefPtr<Field> myField = myVertices( "Fieldname" );
if (!myField) { return false; }
//
// TODO: Support fragmented surfaces in the getData(fragmentID call)
// BUT: Think about appropriate infrastructure first, this cannot
// be done just locally here!
//
RefPtr<MemBase> myData = myField->getData();
if (!myData) { return false; }
RefPtr<ChunkBase> myChunk = myData->getChunk();
if (!myChunk) { return false; }
RefPtr<RenderBasin::VertexAttribute>
myAttribute = Context.createVertexAttribute( myChunk, "MyShaderAttribute");
RenderAnemone.insert( myAttribute );
Definition Lytica.hpp:7
Definition IndexListViaSelectionString.hpp:30

Implements Wizt::SkeletonRenderer.

References Wizt::Anemone::insert(), and Wizt::Anemone::NumberOfShaderPrograms().

◆ getAnemoneExplorer()

RefPtr< SurfaceRenderer::AnemoneExplorer > Wizt::SurfaceRenderer::getAnemoneExplorer ( VRenderContext Context) const
overridevirtual

The SurfaceAnemoneExplorer is a temporary object that exists while rendering all fragments of a surface.

It is created with the first fragment and destroyed with the last fragment. As such, it defines the scope of a FloatOrigin operation and stores the ModelView matrix which is locally modified during rendering.

Todo:
Use FloatingAnemoneExplorer here.

Create an AnemoneExplorer that lives during the duration of the rendering operation and shifts the coordinate origin according to the FloatOrigin base class specification.

Reimplemented from Wizt::GridAnemone.

◆ isValidAnemone()

bool Wizt::SurfaceRenderer::isValidAnemone ( const Anemone RenderAnemone,
const AnemoneCreationContext ARC,
const RefPtr< AnemoneExplorer > &  AE 
) const
overridevirtual

Checks if a given Anemone is valid for rendering.

Consider the case that some anemone may be reused, but unfortunately is invalid for whatever reason. This may happen if it was created incomplete previously, but nothing has changed since then, so it's still invalid, even though it could be reused...

Any code derive from Programmable may just call

return hasValidShaderPrograms(RenderAnemone, ARC.myContext);

to check for validity of the attached shader programs.

Reimplemented from Wizt::GridAnemone.

◆ updateAnemone()

bool Wizt::SurfaceRenderer::updateAnemone ( Anemone RenderAnemone,
const AnemoneCreationContext ARC,
const RefPtr< AnemoneExplorer > &  AE 
) const
overridevirtual

Update a certain Anemone with variables and values that do not require re-creation or loading of any data.

If this function returns false, then this Anemone will not be rendered but destroyed. If this function returns true, but the Anemone is empty(), then it will be re-initialized.

Reimplemented from Wizt::GridAnemone.