![]() |
Maria GDK 5.0.0.850
Documentation of native code in develop branch
|
#include <M3DSceneRenderer.h>
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 Globe > | getGlobe () const |
std::shared_ptr< Globe > | getGlobe () |
std::shared_ptr< Maria3D::SkyRenderer > | sky () |
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::GlobeCamera > | getGlobeCamera () |
std::shared_ptr< const Maria3D::GlobeCamera > | getGlobeCamera () 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::PointSymbolRenderer > | getPointSymbolRenderer (const std::string &id) const |
const std::shared_ptr< Maria::SymbolCache > & | getSymbolCache () const |
const std::shared_ptr< ModelManager > & | getModelManager () const |
std::shared_ptr< STK::ShaderProgramManager > | getShaderManager () const |
const std::shared_ptr< STK::Screen > & | getScreen () const |
const std::shared_ptr< STK::FontManager > & | getFontManager () 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< TileModelRenderer > | getTilesetRenderer () const |
void | setModelInstanceRenderer (const std::shared_ptr< ModelInstanceRenderer > &mir) |
void | setFootprintManager (const std::shared_ptr< FootprintTextureManager > &ftm) |
std::shared_ptr< ModelInstanceRenderer > | getModelInstanceRenderer () const |
void | setVolumePolygonsRenderer (const std::shared_ptr< Maria3D::VolumePolygonsRenderer > &polyRenderer) |
std::shared_ptr< VolumePolygonsRenderer > | getVolumePolygonsRenderer () const |
void | setSurfacePolygonsRenderer (const std::shared_ptr< Maria3D::SurfacePolygonsRenderer > &polyRenderer) |
std::shared_ptr< SurfacePolygonsRenderer > | getSurfacePolygonsRenderer () const |
void | setDrawObjectRenderer (const std::shared_ptr< Maria3D::DrawObjectRenderer > &drawObjectRenderer) |
std::shared_ptr< DrawObjectRenderer > | getDrawObjectRenderer () const |
void | setShowDrawObjects (bool showDrawObjects) |
bool | showDrawObjects () 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) |
const std::shared_ptr< Maria::GeoUnitsSetting > & | getGeoUnitsSetting () const |
void | setGeoUnitsSetting (const std::shared_ptr< Maria::GeoUnitsSetting > &geoUnitsSetting) |
void | setGeoUnitsSettingEnums (int positionFormat, int bearingType, int bearingUnit, int speedUnit, int distanceUnit, int elevationUnit) |
![]() | |
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) |
![]() | |
SceneRenderer (std::shared_ptr< STK::ShaderProgramManager > prg_mgr, std::shared_ptr< STK::Light > light=nullptr) | |
std::shared_ptr< ShaderProgramManager > | getShaderProgramManager () |
void | clear () |
void | addModel (std::shared_ptr< STK::GraphicsModel > model) |
std::shared_ptr< const STK::GraphicsModel > | getModel (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::Light > | getLight () 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< PointSymbolUpdater > | getPointSymbolUpdater (const std::string &id) const |
![]() | |
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 ¢er, 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) |
![]() | |
void | updateLightUniforms (const Camera &cam) |
Protected Attributes | |
std::shared_ptr< Maria3D::ModelManager > | _modelManager |
bool | _shadows = true |
bool | _wireframe = false |
bool | _show3DTiles = false |
bool | _showDrawObjects = true |
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::shared_ptr< STK::FontManager > | _fontManager |
std::shared_ptr< Maria::GeoUnitsSetting > | _geoUnitsSetting |
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< Maria3D::SurfacePolygonsRenderer > | _surfacePolyRenderer |
std::shared_ptr< Maria3D::VolumePolygonsRenderer > | _volumePolyRenderer |
std::shared_ptr< Maria3D::DrawObjectRenderer > | _drawObjectRenderer |
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 |
![]() | |
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::Camera > | shd_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::ShaderProgram > | shadow_map_program_ |
std::shared_ptr< STK::ShaderProgram > | shadow_map_tex_program_ |
std::shared_ptr< STK::Uniform > | u_csm_num_splits_ |
std::shared_ptr< STK::Uniform > | u_csm_shadow_map_size_ |
std::shared_ptr< STK::Uniform > | u_csm_shadow_map_unit_ |
std::shared_ptr< STK::Uniform > | u_csm_far_bounds_ |
std::shared_ptr< STK::Uniform > | u_csm_proj_matrix0_ |
std::shared_ptr< STK::Uniform > | u_csm_proj_matrix1_ |
std::shared_ptr< STK::Uniform > | u_csm_proj_matrix2_ |
std::shared_ptr< STK::Uniform > | u_csm_proj_matrix3_ |
![]() | |
std::shared_ptr< ShaderProgramManager > | prg_mgr_ |
std::vector< std::shared_ptr< STK::GraphicsModel > > | models_ |
std::shared_ptr< STK::Light > | light_ |
std::vector< std::shared_ptr< STK::Uniform > > | global_uniforms_ |
std::shared_ptr< STK::Uniform > | u_light_dir_eye_ |
std::shared_ptr< STK::Uniform > | u_light_dir_world_ |
SceneRenderer - Scene renderer. Handles correct rendering of a scene with a 3D globe, draw objects, tracks and 3D symbols.
|
overridevirtual |
Reimplemented from STK::SceneRenderer.
bool SceneRenderer::add3DTileset | ( | const std::string & | id, |
const std::string & | tilesetString, | ||
const std::string & | basePath | ||
) |
Add 3D tiles from the given tileset.json string.
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.
bool SceneRenderer::add3DTilesetsFromService | ( | const std::string & | servicePath | ) |
Initialize 3D tiles from a given service by providing the service path.
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.
calcElevations | If true, each point will be placed relative to the surface elevation on which it stands. |
forceUpdates | Number 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. |
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.
bool SceneRenderer::getPointSymbolsDirty | ( | ) | const |
Check if point symbols layer needs a redraw.
|
overridevirtual |
Reimplemented from STK::CSMSceneRenderer.
void SceneRenderer::setLightDirection | ( | const STK::Vector3f & | lightDir | ) |
Set direction vector towards the light. This vector should be normalized, and given in geocentric coordinates.
void SceneRenderer::setModelLODScale | ( | double | lodScale | ) |
Set LOD scale factor for 3D surface models. This scale factor is multiplied with the generic camera LOD scale.