diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ccde915ecc..e44f310700 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3507,14 +3507,6 @@ glm::vec3 Application::getSunDirection() { // FIXME, preprocessor guard this check to occur only in DEBUG builds static QThread * activeRenderingThread = nullptr; -float Application::getSizeScale() const { - return DependencyManager::get()->getOctreeSizeScale(); -} - -int Application::getBoundaryLevelAdjust() const { - return DependencyManager::get()->getBoundaryLevelAdjust(); -} - PickRay Application::computePickRay(float x, float y) const { vec2 pickPoint { x, y }; PickRay result; diff --git a/interface/src/Application.h b/interface/src/Application.h index 24e853eabb..3840e10c93 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -170,8 +170,6 @@ public: virtual ViewFrustum* getCurrentViewFrustum() { return getDisplayViewFrustum(); } virtual QThread* getMainThread() { return thread(); } - virtual float getSizeScale() const; - virtual int getBoundaryLevelAdjust() const; virtual PickRay computePickRay(float x, float y) const; virtual glm::vec3 getAvatarPosition() const; virtual void overrideEnvironmentData(const EnvironmentData& newData) { _environment.override(newData); } diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 4dec925530..c846757325 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -183,7 +183,6 @@ void LODManager::autoAdjustLOD(float currentFPS) { if (changed) { calculateAvatarLODDistanceMultiplier(); - _shouldRenderTableNeedsRebuilding = true; auto lodToolsDialog = DependencyManager::get()->getLodToolsDialog(); if (lodToolsDialog) { lodToolsDialog->reloadSliders(); @@ -294,7 +293,6 @@ bool LODManager::shouldRender(const RenderArgs* args, const AABox& bounds) { void LODManager::setOctreeSizeScale(float sizeScale) { _octreeSizeScale = sizeScale; calculateAvatarLODDistanceMultiplier(); - _shouldRenderTableNeedsRebuilding = true; } void LODManager::calculateAvatarLODDistanceMultiplier() { @@ -303,7 +301,6 @@ void LODManager::calculateAvatarLODDistanceMultiplier() { void LODManager::setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; - _shouldRenderTableNeedsRebuilding = true; } diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index d8fcc50cac..3566113519 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -135,9 +135,6 @@ private: SimpleMovingAverage _fpsAverageDownWindow = DOWN_SHIFT_SAMPLES_OF_FRAMES; SimpleMovingAverage _fpsAverageUpWindow = UP_SHIFT_SAMPLES_OF_FRAMES; - bool _shouldRenderTableNeedsRebuilding = true; - QMap _shouldRenderTable; - PIDController _renderDistanceController{}; SimpleMovingAverage _renderDistanceAverage{ 10 }; }; diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index c3e012d412..a2c1cf27c2 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -417,15 +417,6 @@ const FBXGeometry* EntityTreeRenderer::getCollisionGeometryForEntity(EntityItemP return result; } -float EntityTreeRenderer::getSizeScale() const { - return _viewState->getSizeScale(); -} - -int EntityTreeRenderer::getBoundaryLevelAdjust() const { - return _viewState->getBoundaryLevelAdjust(); -} - - void EntityTreeRenderer::processEraseMessage(ReceivedMessage& message, const SharedNodePointer& sourceNode) { std::static_pointer_cast(_tree)->processEraseMessage(message, sourceNode); } diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 09fe7a527c..2a3d688492 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -41,8 +41,6 @@ public: virtual char getMyNodeType() const { return NodeType::EntityServer; } virtual PacketType getMyQueryMessageType() const { return PacketType::EntityQuery; } virtual PacketType getExpectedPacketType() const { return PacketType::EntityData; } - virtual float getSizeScale() const; - virtual int getBoundaryLevelAdjust() const; virtual void setTree(OctreePointer newTree); void shutdown(); diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 4842197201..db44a5499b 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -321,7 +321,7 @@ OctreeElement::AppendState EntityTreeElement::appendElementData(OctreePacketData if (renderAccuracy <= 0.0f) { includeThisEntity = false; // too small, don't include it - #ifdef WANT_LOD_DEBUGGING + #if 1 //def WANT_LOD_DEBUGGING qDebug() << "skipping entity - TOO SMALL - \n" << "......id:" << entity->getID() << "\n" << "....name:" << entity->getName() << "\n" @@ -337,11 +337,10 @@ OctreeElement::AppendState EntityTreeElement::appendElementData(OctreePacketData } if (includeThisEntity) { - #ifdef WANT_LOD_DEBUGGING + #if 1 //def WANT_LOD_DEBUGGING qDebug() << "including entity - \n" << "......id:" << entity->getID() << "\n" << "....name:" << entity->getName() << "\n" - << "..bounds:" << entityBounds << "\n" << "....cell:" << getAACube(); #endif indexesOfEntitiesToInclude << i; diff --git a/libraries/octree/src/OctreeHeadlessViewer.cpp b/libraries/octree/src/OctreeHeadlessViewer.cpp index 3f761a0748..547b3ac32b 100644 --- a/libraries/octree/src/OctreeHeadlessViewer.cpp +++ b/libraries/octree/src/OctreeHeadlessViewer.cpp @@ -14,11 +14,7 @@ #include "OctreeLogging.h" #include "OctreeHeadlessViewer.h" -OctreeHeadlessViewer::OctreeHeadlessViewer() : - OctreeRenderer(), - _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE), - _boundaryLevelAdjust(0), - _maxPacketsPerSecond(DEFAULT_MAX_OCTREE_PPS) +OctreeHeadlessViewer::OctreeHeadlessViewer() : OctreeRenderer() { _viewFrustum.setProjection(glm::perspective(glm::radians(DEFAULT_FIELD_OF_VIEW_DEGREES), DEFAULT_ASPECT_RATIO, DEFAULT_NEAR_CLIP, DEFAULT_FAR_CLIP)); } @@ -57,9 +53,8 @@ void OctreeHeadlessViewer::queryOctree() { _octreeQuery.setCameraFarClip(_viewFrustum.getFarClip()); _octreeQuery.setCameraEyeOffsetPosition(glm::vec3()); _octreeQuery.setKeyholeRadius(_viewFrustum.getKeyholeRadius()); - - _octreeQuery.setOctreeSizeScale(getVoxelSizeScale()); - _octreeQuery.setBoundaryLevelAdjust(getBoundaryLevelAdjust()); + _octreeQuery.setOctreeSizeScale(_voxelSizeScale); + _octreeQuery.setBoundaryLevelAdjust(_boundaryLevelAdjust); // Iterate all of the nodes, and get a count of how many voxel servers we have... int totalServers = 0; diff --git a/libraries/octree/src/OctreeHeadlessViewer.h b/libraries/octree/src/OctreeHeadlessViewer.h index 82282dafaa..bdfebd82f6 100644 --- a/libraries/octree/src/OctreeHeadlessViewer.h +++ b/libraries/octree/src/OctreeHeadlessViewer.h @@ -59,7 +59,7 @@ public slots: // getters for LOD and PPS float getVoxelSizeScale() const { return _voxelSizeScale; } - int getBoundaryLevelAdjust() const override { return _boundaryLevelAdjust; } + int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } int getMaxPacketsPerSecond() const { return _maxPacketsPerSecond; } unsigned getOctreeElementsCount() const { return _tree->getOctreeElementsCount(); } @@ -68,9 +68,10 @@ private: ViewFrustum _viewFrustum; JurisdictionListener* _jurisdictionListener = nullptr; OctreeQuery _octreeQuery; - float _voxelSizeScale; - int _boundaryLevelAdjust; - int _maxPacketsPerSecond; + + float _voxelSizeScale { DEFAULT_OCTREE_SIZE_SCALE }; + int _boundaryLevelAdjust { 0 }; + int _maxPacketsPerSecond { DEFAULT_MAX_OCTREE_PPS }; }; #endif // hifi_OctreeHeadlessViewer_h diff --git a/libraries/octree/src/OctreeRenderer.h b/libraries/octree/src/OctreeRenderer.h index b5126ab6e6..198de7ceed 100644 --- a/libraries/octree/src/OctreeRenderer.h +++ b/libraries/octree/src/OctreeRenderer.h @@ -39,8 +39,6 @@ public: virtual PacketType getMyQueryMessageType() const = 0; virtual PacketType getExpectedPacketType() const = 0; virtual void renderElement(OctreeElementPointer element, RenderArgs* args) { } - virtual float getSizeScale() const { return DEFAULT_OCTREE_SIZE_SCALE; } - virtual int getBoundaryLevelAdjust() const { return 0; } virtual void setTree(OctreePointer newTree); diff --git a/libraries/octree/src/ViewFrustum.cpp b/libraries/octree/src/ViewFrustum.cpp index 126eea4f27..5674a4e882 100644 --- a/libraries/octree/src/ViewFrustum.cpp +++ b/libraries/octree/src/ViewFrustum.cpp @@ -758,9 +758,9 @@ float ViewFrustum::calculateRenderAccuracy(const AABox& bounds, float octreeSize const float maxScale = (float)TREE_SCALE; float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) / OCTREE_TO_MESH_RATIO; - static bool shouldRenderTableNeedsBuilding = true; + static std::once_flag once; static QMap shouldRenderTable; - if (shouldRenderTableNeedsBuilding) { + std::call_once(once, [&] { float SMALLEST_SCALE_IN_TABLE = 0.001f; // 1mm is plenty small float scale = maxScale; float factor = 1.0f; @@ -770,9 +770,7 @@ float ViewFrustum::calculateRenderAccuracy(const AABox& bounds, float octreeSize factor /= 2.0f; shouldRenderTable[scale] = factor; } - - shouldRenderTableNeedsBuilding = false; - } + }); float closestScale = maxScale; float visibleDistanceAtClosestScale = visibleDistanceAtMaxScale; diff --git a/libraries/render-utils/src/AbstractViewStateInterface.h b/libraries/render-utils/src/AbstractViewStateInterface.h index 39da33ee8f..1a4cfde16f 100644 --- a/libraries/render-utils/src/AbstractViewStateInterface.h +++ b/libraries/render-utils/src/AbstractViewStateInterface.h @@ -41,8 +41,6 @@ public: virtual QThread* getMainThread() = 0; - virtual float getSizeScale() const = 0; - virtual int getBoundaryLevelAdjust() const = 0; virtual PickRay computePickRay(float x, float y) const = 0; virtual glm::vec3 getAvatarPosition() const = 0;