Maria GDK 5.0.0.738
Documentation of native code in develop branch
Loading...
Searching...
No Matches
Maria3D::SceneRenderer Class Reference

#include <M3DSceneRenderer.h>

Inheritance diagram for Maria3D::SceneRenderer:
STK::CSMSceneRenderer STK::SceneRenderer

Public Member Functions

 SceneRenderer (const std::shared_ptr< STK::FontManager > &fontManager, const std::shared_ptr< Maria3D::ModelManager > &modelManager, const std::shared_ptr< Maria::ISymbolProvider > &symbolProvider, const std::shared_ptr< STK::Screen > &screen, const std::shared_ptr< Globe > &globe, const std::shared_ptr< SkyRenderer > &sky, const std::shared_ptr< STK::Light > &light, const Configuration &config)
 
void Cleanup ()
 
std::shared_ptr< const GlobegetGlobe () const
 
std::shared_ptr< GlobegetGlobe ()
 
std::shared_ptr< Maria3D::SkyRenderersky ()
 
void setDirty (bool dirty)
 
void setDateTime (int day, int hour, int min, int sec)
 
void setGlobeCamera (std::shared_ptr< Maria3D::GlobeCamera > cam)
 
std::shared_ptr< Maria3D::GlobeCameragetGlobeCamera ()
 
std::shared_ptr< const Maria3D::GlobeCameragetGlobeCamera () const
 
void addPointSymbolStore (const std::string &id, std::shared_ptr< Maria3D::StyledPointSymbolStore > pointSymbolStore, std::shared_ptr< Maria3D::PointSymbolRenderer > pointSymbolRenderer, int forceUpdates)
 
void removePointSymbolStore (const std::string &id)
 
void addPointSymbolRenderer (const std::string &id, std::shared_ptr< Maria3D::PointSymbolRenderer > pointSymbolRenderer)
 
void removePointSymbolRenderer (const std::string &id)
 
std::shared_ptr< Maria3D::PointSymbolRenderergetPointSymbolRenderer (const std::string &id) const
 
std::shared_ptr< Maria::SymbolCachegetSymbolCache () const
 
std::shared_ptr< ModelManagergetModelManager () const
 
std::shared_ptr< STK::ScreengetScreen () const
 
bool getPointSymbolsDirty () const
 
bool needsRedraw () const
 
void update (double dt)
 
void render (const STK::Viewport &vp)
 
void render (const STK::Camera &cam, const STK::Viewport &vp) override
 
bool getShadows () const
 
void setShadows (bool shadows)
 
bool getWireframe () const
 
void setWireframe (bool wireframe)
 
void clearRenderData ()
 
void setLightDirection (const STK::Vector3f &lightDir)
 
bool add3DTilesetsFromAssets (const std::shared_ptr< IModelDataProvider > &dataProvider)
 
bool add3DTilesetsFromService (const std::string &servicePath)
 
bool add3DTileset (const std::string &id, const std::string &tilesetString, const std::string &basePath)
 
std::shared_ptr< TileModelRenderergetTilesetRenderer () const
 
void setModelInstanceRenderer (const std::shared_ptr< ModelInstanceRenderer > &mir)
 
void setFootprintManager (const std::shared_ptr< FootprintTextureManager > &ftm)
 
std::shared_ptr< ModelInstanceRenderergetModelInstanceRenderer () const
 
void clear3DTiles ()
 
void setShow3DTiles (bool showTileModels)
 
bool show3DTiles () const
 
void setForceFootprintMasking (bool mask)
 
bool forceFootprintMasking () const
 
int64_t getModelCacheSize () const
 
int64_t getModelMaxCacheSize () const
 
void setModelMaxCacheSize (int64_t size)
 
void setModelLODScale (double lodScale)
 
double getModelLODScale () const
 
const std::shared_ptr< STK::PerformanceGraphs > & getPerformanceGraphs () const
 
void setShowPerformanceGraphs (bool showPerfGraphs)
 
bool getShowPerformanceGraphs () const
 
void setPerformanceGraphEnabled (const std::string &name, bool enabled)
 
bool getPerformanceGraphEnabled (const std::string &name)
 
bool calcViewportSceneIntersection (const STK::Viewport &vp, double x, double y, BasicGeoTypes::GeoPos3D &intersection, BasicGeoTypes::PointDXYZ &normal, bool includeTileModels)
 
bool getItemInView (const STK::Viewport &vp, double x, double y, std::string &listId, std::string &instanceId)
 
- Public Member Functions inherited from STK::CSMSceneRenderer
 CSMSceneRenderer (std::shared_ptr< STK::ShaderProgramManager > prg_mgr, std::shared_ptr< STK::Light > light=nullptr)
 
void setShadowMapProgramName (const std::string &name)
 
void setShadowMapTextureProgramName (const std::string &name)
 
void setShadowMapUnit (int unit)
 
int getShadowMapUnit () const
 
void setNumSplits (int num_splits)
 
void setSplitDistances (const float *splits)
 
void setSplitDistances (const std::vector< float > &splits)
 
void setShadowDistance (float dist)
 
virtual void render (const Camera &cam, const Viewport &vp)
 
- Public Member Functions inherited from STK::SceneRenderer
 SceneRenderer (std::shared_ptr< STK::ShaderProgramManager > prg_mgr, std::shared_ptr< STK::Light > light=nullptr)
 
std::shared_ptr< ShaderProgramManagergetShaderProgramManager ()
 
void clear ()
 
void addModel (std::shared_ptr< STK::GraphicsModel > model)
 
std::shared_ptr< const STK::GraphicsModelgetModel (const int i) const
 
void removeModel (const std::shared_ptr< GraphicsModel > &model)
 
const std::vector< std::shared_ptr< STK::GraphicsModel > > & getModels () const
 
void setLight (std::shared_ptr< STK::Light > light)
 
std::shared_ptr< const STK::LightgetLight () const
 
void addGlobalUniform (std::shared_ptr< STK::Uniform > uni)
 
virtual void render (const Camera &cam, const Viewport &vp)
 

Protected Member Functions

void addPointSymbolUpdater (const std::string &id, const std::shared_ptr< PointSymbolUpdater > &updater)
 
std::shared_ptr< PointSymbolUpdatergetPointSymbolUpdater (const std::string &id) const
 
- Protected Member Functions inherited from STK::CSMSceneRenderer
bool makeShadowMap (const STK::Camera &cam, const Viewport &vp, std::vector< std::shared_ptr< STK::GraphicsModel > > &models)
 
void updateFrustumPoints (CSMSceneRenderer::Frustum &f, const STK::Vector3f &center, const STK::Vector3f &view_dir, const STK::Vector3f &view_up)
 
void updateSplitDist (float nd, float fd)
 
void renderShadowMap (const STK::Camera &cam, const Viewport &vp, const Camera &shd_cam, const Viewport &shd_vp, std::vector< std::shared_ptr< STK::GraphicsModel > > &models)
 
bool initDepthFrameBuffer ()
 
void calcShadowCam (int split_i, const STK::Matrix4x4f &mv)
 
std::vector< std::shared_ptr< Uniform > > bindShadowMap (const Camera &cam)
 
void drawModels (const Camera &cam, const STK::Viewport &vp, const std::vector< std::shared_ptr< STK::GraphicsModel > > &models, const std::vector< std::shared_ptr< Uniform > > uniforms)
 
- Protected Member Functions inherited from STK::SceneRenderer
void updateLightUniforms (const Camera &cam)
 

Protected Attributes

std::shared_ptr< Maria3D::ModelManager_modelManager
 
bool _shadows = true
 
bool _wireframe = false
 
bool _show3DTiles = false
 
bool _forceFootprintMasking = false
 
bool _showPerformanceGraphs = true
 
std::shared_ptr< Maria3D::Globe_globe
 
std::shared_ptr< Maria3D::GlobeCamera_globeCam
 
std::shared_ptr< Maria3D::SkyRenderer_sky
 
std::shared_ptr< STK::PrecomputedScattering_pcs
 
std::shared_ptr< STK::FrameBufferFX_fbfx
 
std::shared_ptr< STK::Screen_screen
 
std::unique_ptr< STK::DynamicsWorld_collision
 
std::map< std::string, std::shared_ptr< Maria3D::PointSymbolUpdater > > _pointSymbolUpdaters
 
std::map< std::string, std::shared_ptr< Maria3D::PointSymbolRenderer > > _pointSymbolRenderer
 
std::shared_ptr< Maria::SymbolCache_symbolCache
 
std::shared_ptr< STK::GraphicsRender2D_gfxRender
 
std::shared_ptr< STK::PerformanceGraphs_perfGraphs
 
std::chrono::high_resolution_clock::time_point _startTime
 
std::shared_ptr< Maria3D::ModelInstanceRenderer_modelInstanceRenderer
 
std::shared_ptr< Maria3D::FootprintTextureManager_footprintTextureManager
 
std::shared_ptr< Maria3D::TileModelRenderer_tileModelRenderer
 
std::shared_ptr< STK::PerformanceGraphs::Graph_fpsGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_symUpdateGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_symRenderGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_globeUpdateGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_globeRedrawGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_modelRedrawGraph
 
std::shared_ptr< STK::PerformanceGraphs::Graph_labelsRedrawGraph
 
std::shared_ptr< FrameState_frameState
 
bool _dirty = false
 
bool _glInitialized = false
 
- Protected Attributes inherited from STK::CSMSceneRenderer
bool use_csm_shadows_
 
float csm_splits_ [4]
 
float csm_split_weight_
 
float csm_shd_near_
 
float csm_shd_far_
 
int csm_num_splits_
 
std::shared_ptr< STK::Camerashd_cam_ [4]
 
STK::Matrix4x4f shad_cpm_ [4]
 
Frustum f_ [4]
 
float far_bound_ [4]
 
GLuint depth_tex_
 
GLuint dummy_depth_tex_
 
GLuint depth_fb_
 
GLuint shd_map_unit_
 
int depth_map_size_
 
std::string shadow_map_program_name_
 
std::string shadow_map_tex_program_name_
 
std::shared_ptr< STK::ShaderProgramshadow_map_program_
 
std::shared_ptr< STK::ShaderProgramshadow_map_tex_program_
 
std::shared_ptr< STK::Uniformu_csm_num_splits_
 
std::shared_ptr< STK::Uniformu_csm_shadow_map_size_
 
std::shared_ptr< STK::Uniformu_csm_shadow_map_unit_
 
std::shared_ptr< STK::Uniformu_csm_far_bounds_
 
std::shared_ptr< STK::Uniformu_csm_proj_matrix0_
 
std::shared_ptr< STK::Uniformu_csm_proj_matrix1_
 
std::shared_ptr< STK::Uniformu_csm_proj_matrix2_
 
std::shared_ptr< STK::Uniformu_csm_proj_matrix3_
 
- Protected Attributes inherited from STK::SceneRenderer
std::shared_ptr< ShaderProgramManagerprg_mgr_
 
std::vector< std::shared_ptr< STK::GraphicsModel > > models_
 
std::shared_ptr< STK::Lightlight_
 
std::vector< std::shared_ptr< STK::Uniform > > global_uniforms_
 
std::shared_ptr< STK::Uniformu_light_dir_eye_
 
std::shared_ptr< STK::Uniformu_light_dir_world_
 

Detailed Description

SceneRenderer - Scene renderer. Handles correct rendering of a scene with a 3D globe, draw objects, tracks and 3D symbols.

Constructor & Destructor Documentation

◆ ~SceneRenderer()

SceneRenderer::~SceneRenderer ( )
overridevirtual

Reimplemented from STK::SceneRenderer.

Member Function Documentation

◆ add3DTileset()

bool SceneRenderer::add3DTileset ( const std::string &  id,
const std::string &  tilesetString,
const std::string &  basePath 
)

Add 3D tiles from the given tileset.json string.

◆ add3DTilesetsFromAssets()

bool SceneRenderer::add3DTilesetsFromAssets ( const std::shared_ptr< IModelDataProvider > &  dataProvider)

Initialize 3D tiles from the given asset model provider. Each tileset will be added with the assetID as id.

◆ add3DTilesetsFromService()

bool SceneRenderer::add3DTilesetsFromService ( const std::string &  servicePath)

Initialize 3D tiles from a given service by providing the service path.

◆ addPointSymbolStore()

void SceneRenderer::addPointSymbolStore ( const std::string &  id,
std::shared_ptr< Maria3D::StyledPointSymbolStore pointSymbolStore,
std::shared_ptr< Maria3D::PointSymbolRenderer pointSymbolRenderer,
int  forceUpdates 
)

Add a point symbol set to the scene. This will add the given set of tracks or draw object points to the scene, with optional elevation updates.

Parameters
calcElevationsIf true, each point will be placed relative to the surface elevation on which it stands.
forceUpdatesNumber of extra random points to update elevations for each frame. This is to ensure that all points will have their elevation values updated at regular intervals, since these values will change with camera movement.

◆ clear3DTiles()

void SceneRenderer::clear3DTiles ( )

Clear 3D tiles. Clear all the 3D tiles databases from memory. Note that this will not necessarily unload any models from the model manager.

◆ getPointSymbolsDirty()

bool SceneRenderer::getPointSymbolsDirty ( ) const

Check if point symbols layer needs a redraw.

◆ render()

void SceneRenderer::render ( const STK::Camera cam,
const STK::Viewport vp 
)
overridevirtual

Reimplemented from STK::CSMSceneRenderer.

◆ setLightDirection()

void SceneRenderer::setLightDirection ( const STK::Vector3f lightDir)

Set direction vector towards the light. This vector should be normalized, and given in geocentric coordinates.

◆ setModelLODScale()

void SceneRenderer::setModelLODScale ( double  lodScale)

Set LOD scale factor for 3D surface models. This scale factor is multiplied with the generic camera LOD scale.


The documentation for this class was generated from the following files: