Tissue Forge C++ 0.2.1
Interactive, particle-based physics, chemistry and biology modeling and simulation environment
Loading...
Searching...
No Matches
TissueForge::rendering::UniverseRenderer Struct Reference
Inheritance diagram for TissueForge::rendering::UniverseRenderer:
Collaboration diagram for TissueForge::rendering::UniverseRenderer:

Public Member Functions

 UniverseRenderer (const Simulator::Config &conf, Window *win)
 
template<typename T>
UniverseRendererdraw (T &camera, const iVector2 &viewportSize)
 
bool & isDirty ()
 
UniverseRenderersetDirty ()
 
shaders::ParticleSphereShader::ColorMode & colorMode ()
 
UniverseRenderersetColorMode (shaders::ParticleSphereShader::ColorMode colorMode)
 
const Float lineWidth ()
 
UniverseRenderersetLineWidth (const Float &lw)
 
const Float lineWidthMin ()
 
const Float lineWidthMax ()
 
Color3 & ambientColor ()
 
UniverseRenderersetAmbientColor (const Color3 &color)
 
Color3 & diffuseColor ()
 
UniverseRenderersetDiffuseColor (const Color3 &color)
 
Color3 & specularColor ()
 
UniverseRenderersetSpecularColor (const Color3 &color)
 
Float & shininess ()
 
UniverseRenderersetShininess (float shininess)
 
Color3 & gridColor ()
 
UniverseRenderersetGridColor (const Color3 &color)
 
Color3 & sceneBoxColor ()
 
UniverseRenderersetSceneBoxColor (const Color3 &color)
 
fVector3lightDirection ()
 
UniverseRenderersetLightDirection (const fVector3 &lightDir)
 
Color3 & lightColor ()
 
UniverseRenderersetLightColor (const Color3 &color)
 
Color3 & backgroundColor ()
 
UniverseRenderersetBackgroundColor (const Color3 &color)
 
UniverseRenderersetModelViewTransform (const Magnum::Matrix4 &mat)
 
UniverseRenderersetProjectionTransform (const Magnum::Matrix4 &mat)
 
const bool showingDiscretizationGrid () const
 
UniverseRenderershowDiscretizationGrid (const bool &show)
 
Color3 & discretizationGridColor ()
 
UniverseRenderersetDiscretizationGridColor (const Color3 &color)
 
const fVector3defaultEye () const
 
const fVector3defaultCenter () const
 
const fVector3defaultUp () const
 
void onCursorMove (double xpos, double ypos)
 
void onCursorEnter (int entered)
 
void onMouseButton (int button, int action, int mods)
 
void onRedraw ()
 
void onWindowMove (int x, int y)
 
void onWindowSizeChange (int x, int y)
 
void onFramebufferSizeChange (int x, int y)
 
void viewportEvent (const int w, const int h)
 
void draw ()
 
int clipPlaneCount () const
 
const unsigned addClipPlaneEquation (const Magnum::Vector4 &pe)
 
const unsigned removeClipPlaneEquation (const unsigned int &id)
 
void setClipPlaneEquation (unsigned id, const Magnum::Vector4 &pe)
 
const Magnum::Vector4 & getClipPlaneEquation (unsigned id)
 
const float getZoomRate ()
 
void setZoomRate (const float &zoomRate)
 
const float getSpinRate ()
 
void setSpinRate (const float &spinRate)
 
const float getMoveRate ()
 
void setMoveRate (const float &moveRate)
 
const bool isLagging () const
 
void enableLagging ()
 
void disableLagging ()
 
void toggleLagging ()
 
const float getLagging () const
 
void setLagging (const float &lagging)
 
const bool getRendering3DBonds () const
 
void setRendering3DBonds (const bool &_flag)
 
void toggleRendering3DBonds ()
 
const bool getRendering3DAngles () const
 
void setRendering3DAngles (const bool &_flag)
 
void toggleRendering3DAngles ()
 
const bool getRendering3DDihedrals () const
 
void setRendering3DDihedrals (const bool &_flag)
 
void toggleRendering3DDihedrals ()
 
void setRendering3DAll (const bool &_flag)
 
void toggleRendering3DAll ()
 
void viewportEvent (Platform::GlfwApplication::ViewportEvent &event)
 
void cameraTranslateDown ()
 
void cameraTranslateUp ()
 
void cameraTranslateRight ()
 
void cameraTranslateLeft ()
 
void cameraTranslateForward ()
 
void cameraTranslateBackward ()
 
void cameraRotateDown ()
 
void cameraRotateUp ()
 
void cameraRotateLeft ()
 
void cameraRotateRight ()
 
void cameraRollLeft ()
 
void cameraRollRight ()
 
void cameraZoomIn ()
 
void cameraZoomOut ()
 
void keyPressEvent (Platform::GlfwApplication::KeyEvent &event)
 Key press event handling.
 
void mousePressEvent (Platform::GlfwApplication::MouseEvent &event)
 
void mouseReleaseEvent (Platform::GlfwApplication::MouseEvent &event)
 
void mouseMoveEvent (Platform::GlfwApplication::MouseMoveEvent &event)
 Mouse move event handling.
 
void mouseScrollEvent (Platform::GlfwApplication::MouseScrollEvent &event)
 
SubRenderergetSubRenderer (const SubRendererFlag &flag)
 
HRESULT registerSubRenderer (SubRenderer *subrenderer)
 
void decorateScene (const bool &decorate)
 Set flag to draw/not draw scene decorators (e.g., grid)
 
bool sceneDecorated () const
 Get scene decorator flag value.
 
fVector3 unproject (const iVector2 &windowPosition, float depth) const
 
void setupCallbacks ()
 

Static Public Member Functions

static int maxClipPlaneCount ()
 

Public Attributes

bool renderUniverse = true
 
bool _dirty = false
 
bool _decorateScene = true
 
bool _showDiscretizationGrid = false
 
shaders::ParticleSphereShader::ColorMode _colorMode = shaders::ParticleSphereShader::ColorMode::ConsistentRandom
 
Color3 _ambientColor {0.4f}
 
Color3 _diffuseColor {1.f}
 
Color3 _specularColor {0.2f}
 
Color3 _gridColor = {1.f, 1.f, 1.f}
 
Color3 _sceneBoxColor = {1.f, 1.f, 0.f}
 
Float _shininess = 100.0f
 
fVector3 _lightDir {1.0f, 1.0f, 2.0f}
 
Color3 _lightColor = {0.9, 0.9, 0.9}
 
Color3 _clearColor {0.35f}
 
Color3 _discretizationGridColor {0.1, 0.1, 0.8}
 
fVector3 _eye
 
fVector3 _center
 
fVector3 _up
 
std::vector< Magnum::Vector4 > _clipPlanes
 
Magnum::Matrix4 modelViewMat = Matrix4{Math::IdentityInit}
 
Magnum::Matrix4 projMat = Matrix4{Math::IdentityInit}
 
iVector2 _prevMousePosition
 
fVector3 _rotationPoint
 
fVector3 _translationPoint
 
Float _lastDepth
 
float sideLength
 
float _zoomRate
 
float _spinRate
 
float _moveRate
 
ArcBallCamera_arcball
 
GL::Mesh gridMesh {NoCreate}
 
Magnum::Matrix4 gridModelView
 
GL::Mesh sceneBox {NoCreate}
 
shaders::Phong sphereShader {NoCreate}
 
Shaders::Flat3D wireframeShader {NoCreate}
 
GL::Buffer sphereInstanceBuffer {NoCreate}
 
GL::Buffer largeSphereInstanceBuffer {NoCreate}
 
GL::Mesh sphereMesh {NoCreate}
 
GL::Mesh largeSphereMesh {NoCreate}
 
GL::Mesh discretizationGridMesh {NoCreate}
 
GL::Buffer discretizationGridBuffer {NoCreate}
 
std::vector< SubRenderer * > subRenderers
 
fVector3 center
 
Windowwindow
 

Protected Attributes

float _lagging
 
bool _bonds3d_flags [3] = {false, false, false}
 

Member Function Documentation

◆ decorateScene()

void TissueForge::rendering::UniverseRenderer::decorateScene ( const bool & decorate)

Set flag to draw/not draw scene decorators (e.g., grid)

Parameters
decorateflag; true says to decorate

◆ disableLagging()

void TissueForge::rendering::UniverseRenderer::disableLagging ( )

Disable camera lagging

◆ enableLagging()

void TissueForge::rendering::UniverseRenderer::enableLagging ( )

Enable camera lagging

◆ getLagging()

const float TissueForge::rendering::UniverseRenderer::getLagging ( ) const

Get the camera lagging

◆ getRendering3DAngles()

const bool TissueForge::rendering::UniverseRenderer::getRendering3DAngles ( ) const

Get whether angles are renderered with 3D objects

◆ getRendering3DBonds()

const bool TissueForge::rendering::UniverseRenderer::getRendering3DBonds ( ) const

Get whether bonds are renderered with 3D objects

◆ getRendering3DDihedrals()

const bool TissueForge::rendering::UniverseRenderer::getRendering3DDihedrals ( ) const

Get whether dihedrals are renderered with 3D objects

◆ isLagging()

const bool TissueForge::rendering::UniverseRenderer::isLagging ( ) const

Test whether the camera is lagging

◆ keyPressEvent()

void TissueForge::rendering::UniverseRenderer::keyPressEvent ( Platform::GlfwApplication::KeyEvent & event)

Key press event handling.

When a key is pressed, actions are as follows by key and modifier:

  • D: toggle scene decorations
  • L: toggle lagging
  • R: reset camera
  • Arrow down: translate camera down
  • Arrow left: translate camera left
  • Arrow right: translate camera right
  • Arrow up: translate camera up
  • Ctrl + D: toggle discretization rendering
  • Ctrl + arrow down: zoom camera out
  • Ctrl + arrow left: roll camera left
  • Ctrl + arrow right: roll camera right
  • Ctrl + arrow up: zoom camera in
  • Shift + B: bottom view
  • Shift + F: front view
  • Shift + K: back view
  • Shift + L: left view
  • Shift + R: right view
  • Shift + T: top view
  • Shift + arrow down: rotate camera down
  • Shift + arrow left: rotate camera left
  • Shift + arrow right: rotate camera right
  • Shift + arrow up: rotate camera up
  • Shift + Ctrl + arrow down: translate backward
  • Shift + Ctrl + arrow up: translate forward
Parameters
event

◆ mouseMoveEvent()

void TissueForge::rendering::UniverseRenderer::mouseMoveEvent ( Platform::GlfwApplication::MouseMoveEvent & event)

Mouse move event handling.

When a mouse button is pressed, actions are as follows by modifier:

  • Shift: translates the camera
  • Ctrl: zooms the camera
  • None: rotates the camera
Parameters
event

◆ sceneDecorated()

bool TissueForge::rendering::UniverseRenderer::sceneDecorated ( ) const

Get scene decorator flag value.

Returns
true
false

◆ setLagging()

void TissueForge::rendering::UniverseRenderer::setLagging ( const float & lagging)

Set the camera lagging. Value must be in [0, 1)

◆ setRendering3DAll()

void TissueForge::rendering::UniverseRenderer::setRendering3DAll ( const bool & _flag)

Set whether bonds, angle and dihedrals are renderered with 3D objects

◆ setRendering3DAngles()

void TissueForge::rendering::UniverseRenderer::setRendering3DAngles ( const bool & _flag)

Set whether angles are renderered with 3D objects

◆ setRendering3DBonds()

void TissueForge::rendering::UniverseRenderer::setRendering3DBonds ( const bool & _flag)

Set whether bonds are renderered with 3D objects

◆ setRendering3DDihedrals()

void TissueForge::rendering::UniverseRenderer::setRendering3DDihedrals ( const bool & _flag)

Set whether dihedrals are renderered with 3D objects

◆ toggleLagging()

void TissueForge::rendering::UniverseRenderer::toggleLagging ( )

Toggle camera lagging

◆ toggleRendering3DAll()

void TissueForge::rendering::UniverseRenderer::toggleRendering3DAll ( )

Toggle whether bonds, angle and dihedrals are renderered with 3D objects

◆ toggleRendering3DAngles()

void TissueForge::rendering::UniverseRenderer::toggleRendering3DAngles ( )

Toggle whether angles are renderered with 3D objects

◆ toggleRendering3DBonds()

void TissueForge::rendering::UniverseRenderer::toggleRendering3DBonds ( )

Toggle whether bonds are renderered with 3D objects

◆ toggleRendering3DDihedrals()

void TissueForge::rendering::UniverseRenderer::toggleRendering3DDihedrals ( )

Toggle whether dihedrals are renderered with 3D objects

Member Data Documentation

◆ modelViewMat

Magnum::Matrix4 TissueForge::rendering::UniverseRenderer::modelViewMat = Matrix4{Math::IdentityInit}

Only set a single combined matrix in the shader, this way, the shader only performs a single matrix multiply of the vertices, update the shader matrix whenever any of these change.

multiplication order is the reverse of the pipeline. Therefore you do totalmat = proj * view * model.


The documentation for this struct was generated from the following file: