|
| 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::AnemoneExplorer > | getAnemoneExplorer (const WeakPtr< GridAnemone > &theGridAnemone, VRenderContext &Context) const |
| | Provide GLSL code defining uniform variables that relate to the floating origin approach.
|
| |
| RefPtr< GridAnemone::AnemoneExplorer > | getAnemoneExplorer (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 |
| |
|
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 |
| |
|
RefPtr< State > & | getState (const WeakPtr< ValuePool > &VP) const |
| |
|
RefPtr< InterfaceBase > | hasLocalInterface (const type_info &InterfaceType) const |
| |
|
RefPtr< State > | myState (const WeakPtr< ValuePool > &Context) const |
| |
| virtual RefPtr< State > | newState () const |
| |
|
void | setState (const WeakPtr< ValuePool > &, const RefPtr< State > &st) const |
| |
|
|
static RefPtr< RenderBasin::VertexAttribute > | createPossiblyShiftedVertices (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::VertexAttribute > | createPossiblyShiftedVertices (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 >, bool > | createPossiblyShiftedVertices (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 RefPtr< RenderBasin::VertexAttribute > | createPossiblyShiftedVertices (const RefPtr< TypedChunk< Eagle::PhysicalSpace::point > > &Coordinates, const GridAnemone::AnemoneCreationContext &ARC, const RefPtr< GridAnemone::AnemoneExplorer > &AE) |
| |
|
static VRenderContext::ModelViewState | getTranslationVector (const VRenderContext &Context, Intercube &IC, Eagle::tvector3 &TranslationVector, double CameraShiftThreshold) |
| |
|
static Eagle::tvector3 | getTranslationVector (Intercube &IC) |
| |
- Author
- Werner Benger
Supporting Render Anemone API using shaders via FloatOrigin support. There will be two translations involved:
- The translation by the camera
- The translation of the data The difference between both translations must be computed on the CPU in double precision, the GPU does not have sufficient precision with its 32 bit floats.