From eb616452ec1baed9ffc74b84e7318738969a6670 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 5 Aug 2019 17:54:46 -0700 Subject: [PATCH 01/12] An afternounwatchign code --- interface/src/LODManager.cpp | 10 ++++++---- interface/src/ui/LodToolsDialog.cpp | 2 +- libraries/octree/src/OctreeUtils.cpp | 4 ++-- scripts/developer/utilities/render/lod.qml | 3 ++- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 0cf795e35b..24043f4124 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -175,6 +175,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { float LODManager::getLODAngleHalfTan() const { return getPerspectiveAccuracyAngleTan(_octreeSizeScale, _boundaryLevelAdjust); + } float LODManager::getLODAngle() const { return 2.0f * atanf(getLODAngleHalfTan()); @@ -184,9 +185,9 @@ float LODManager::getLODAngleDeg() const { } void LODManager::setLODAngleDeg(float lodAngle) { - auto newSolidAngle = std::max(0.5f, std::min(lodAngle, 90.f)); - auto halTan = glm::tan(glm::radians(newSolidAngle * 0.5f)); - auto octreeSizeScale = TREE_SCALE * OCTREE_TO_MESH_RATIO / halTan; + auto newSolidAngle = std::max(0.001f, std::min(lodAngle, 90.f)); + auto halfTan = glm::tan(glm::radians(newSolidAngle * 0.5f)); + auto octreeSizeScale = /*TREE_SCALE * OCTREE_TO_MESH_RATIO */ (sqrtf(3.0f) * 0.5f) / halfTan; setOctreeSizeScale(octreeSizeScale); } @@ -294,7 +295,8 @@ QString LODManager::getLODFeedbackText() { } // distance feedback float octreeSizeScale = getOctreeSizeScale(); - float relativeToDefault = octreeSizeScale / DEFAULT_OCTREE_SIZE_SCALE; + // float relativeToDefault = octreeSizeScale / DEFAULT_OCTREE_SIZE_SCALE; + float relativeToDefault = octreeSizeScale / MAX_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; int relativeToTwentyTwenty = 20 / relativeToDefault; QString result; diff --git a/interface/src/ui/LodToolsDialog.cpp b/interface/src/ui/LodToolsDialog.cpp index e2f2d9e011..b2d0131d3b 100644 --- a/interface/src/ui/LodToolsDialog.cpp +++ b/interface/src/ui/LodToolsDialog.cpp @@ -93,7 +93,7 @@ void LodToolsDialog::updateAutomaticLODAdjust() { void LodToolsDialog::sizeScaleValueChanged(int value) { auto lodManager = DependencyManager::get(); - float realValue = value * TREE_SCALE; + float realValue = value /** TREE_SCALE*/; lodManager->setOctreeSizeScale(realValue); _feedback->setText(lodManager->getLODFeedbackText()); diff --git a/libraries/octree/src/OctreeUtils.cpp b/libraries/octree/src/OctreeUtils.cpp index 7ed9c2ed3c..788f6da85f 100644 --- a/libraries/octree/src/OctreeUtils.cpp +++ b/libraries/octree/src/OctreeUtils.cpp @@ -65,8 +65,8 @@ float boundaryDistanceForRenderLevel(unsigned int renderLevel, float voxelSizeSc } float getPerspectiveAccuracyAngleTan(float octreeSizeScale, int boundaryLevelAdjust) { - const float maxScale = (float)TREE_SCALE; - float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) / OCTREE_TO_MESH_RATIO; + const float maxScale = sqrtf(3.0f) * 0.5f; //(float)TREE_SCALE; + float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) /* / OCTREE_TO_MESH_RATIO*/; return (maxScale / visibleDistanceAtMaxScale); } diff --git a/scripts/developer/utilities/render/lod.qml b/scripts/developer/utilities/render/lod.qml index 892b43d8be..6497fb967e 100644 --- a/scripts/developer/utilities/render/lod.qml +++ b/scripts/developer/utilities/render/lod.qml @@ -80,7 +80,7 @@ Item { valueVar: LODManager["lodAngleDeg"] valueVarSetter: (function (v) { LODManager["lodAngleDeg"] = v }) max: 90.0 - min: 0.5 + min: 0.01 integral: false anchors.left: parent.left @@ -239,6 +239,7 @@ Item { object: LODManager valueScale: 1.0 valueUnit: "deg" + valueNumDigits: 2 plots: [ { prop: "lodAngleDeg", From bc3acfa3c0c4123292653433e0acfacf3e14c2b6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 5 Aug 2019 18:59:29 -0700 Subject: [PATCH 02/12] Clean up and re-name to reflect what uses octreeSizeScale and what uses visibilityDistance --- .../qml/hifi/dialogs/TabletLODTools.qml | 13 ++--- interface/src/Application.cpp | 2 +- interface/src/LODManager.cpp | 29 +++++++--- interface/src/LODManager.h | 6 +- interface/src/ui/LodToolsDialog.cpp | 13 ++--- libraries/octree/src/OctreeConstants.h | 5 +- libraries/octree/src/OctreeUtils.cpp | 57 +++---------------- libraries/octree/src/OctreeUtils.h | 13 +---- 8 files changed, 49 insertions(+), 89 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml index bb3d668850..cd99b75a61 100644 --- a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml +++ b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml @@ -27,11 +27,8 @@ Rectangle { HifiConstants { id: hifi } - readonly property real treeScale: 32768; // ~20 miles.. This is the number of meters of the 0.0 to 1.0 voxel universe - readonly property real halfTreeScale: treeScale / 2; - - // This controls the LOD. Larger number will make smaller voxels visible at greater distance. - readonly property real defaultOctreeSizeScale: treeScale * 400.0 + // This controls the LOD. Larger number will make smaller objects visible at greater distance. + readonly property real defaultMaxVisibilityDistance: 400.0 Column { anchors.margins: 10 @@ -89,10 +86,10 @@ Rectangle { anchors.right: parent.right minimumValue: 5 maximumValue: 2000 - value: LODManager.getOctreeSizeScale() / treeScale + value: defaultMaxVisibilityDistance tickmarksEnabled: false onValueChanged: { - LODManager.setOctreeSizeScale(value * treeScale); + LODManager.setVisibilityDistanceForUnitElement(value); whatYouCanSeeLabel.text = LODManager.getLODFeedbackText() } } @@ -106,7 +103,7 @@ Rectangle { colorScheme: root.colorScheme height: 30 onClicked: { - slider.value = defaultOctreeSizeScale/treeScale + slider.value = defaultMaxVisibilityDistance adjustCheckbox.checked = false LODManager.setAutomaticLODAdjust(adjustCheckbox.checked); } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8789fcde1c..5f4850485f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6817,7 +6817,7 @@ void Application::updateRenderArgs(float deltaTime) { _viewFrustum.setProjection(adjustedProjection); _viewFrustum.calculate(); } - appRenderArgs._renderArgs = RenderArgs(_graphicsEngine.getGPUContext(), lodManager->getOctreeSizeScale(), + appRenderArgs._renderArgs = RenderArgs(_graphicsEngine.getGPUContext(), lodManager->getVisibilityDistance(), lodManager->getBoundaryLevelAdjust(), lodManager->getLODAngleHalfTan(), RenderArgs::DEFAULT_RENDER_MODE, RenderArgs::MONO, RenderArgs::DEFERRED, RenderArgs::RENDER_DEBUG_NONE); appRenderArgs._renderArgs._scene = getMain3DScene(); diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 24043f4124..2b303aed74 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -94,7 +94,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { } // Previous values for output - float oldOctreeSizeScale = getOctreeSizeScale(); + float oldVisibilityDistance = getVisibilityDistance(); float oldLODAngle = getLODAngleDeg(); // Target fps is slightly overshooted by 5hz @@ -165,7 +165,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { // And now add the output of the controller to the LODAngle where we will guarantee it is in the proper range setLODAngleDeg(oldLODAngle + output); - if (oldOctreeSizeScale != _octreeSizeScale) { + if (oldVisibilityDistance != _visibilityDistance) { auto lodToolsDialog = DependencyManager::get()->getLodToolsDialog(); if (lodToolsDialog) { lodToolsDialog->reloadSliders(); @@ -174,7 +174,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { } float LODManager::getLODAngleHalfTan() const { - return getPerspectiveAccuracyAngleTan(_octreeSizeScale, _boundaryLevelAdjust); + return getPerspectiveAccuracyAngleTan(_visibilityDistance, _boundaryLevelAdjust); } float LODManager::getLODAngle() const { @@ -184,11 +184,19 @@ float LODManager::getLODAngleDeg() const { return glm::degrees(getLODAngle()); } +float LODManager::getVisibilityDistance() const { + return _visibilityDistance; +} + +void LODManager::setVisibilityDistance(float distance) { + _visibilityDistance = distance; +} + void LODManager::setLODAngleDeg(float lodAngle) { auto newSolidAngle = std::max(0.001f, std::min(lodAngle, 90.f)); auto halfTan = glm::tan(glm::radians(newSolidAngle * 0.5f)); - auto octreeSizeScale = /*TREE_SCALE * OCTREE_TO_MESH_RATIO */ (sqrtf(3.0f) * 0.5f) / halfTan; - setOctreeSizeScale(octreeSizeScale); + auto visibilityDistance = UNIT_ELEMENT_MAX_EXTENT / halfTan; + setVisibilityDistance(visibilityDistance); } void LODManager::setSmoothScale(float t) { @@ -268,7 +276,11 @@ bool LODManager::shouldRender(const RenderArgs* args, const AABox& bounds) { }; void LODManager::setOctreeSizeScale(float sizeScale) { - _octreeSizeScale = sizeScale; + setVisibilityDistance(sizeScale / TREE_SCALE); +} + +float LODManager::getOctreeSizeScale() const { + return getVisibilityDistance() * TREE_SCALE; } void LODManager::setBoundaryLevelAdjust(int boundaryLevelAdjust) { @@ -294,9 +306,8 @@ QString LODManager::getLODFeedbackText() { } break; } // distance feedback - float octreeSizeScale = getOctreeSizeScale(); - // float relativeToDefault = octreeSizeScale / DEFAULT_OCTREE_SIZE_SCALE; - float relativeToDefault = octreeSizeScale / MAX_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; + float visibilityDistance = getVisibilityDistance(); + float relativeToDefault = visibilityDistance / DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; int relativeToTwentyTwenty = 20 / relativeToDefault; QString result; diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 649e0e8e34..fbf38ee638 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -145,7 +145,7 @@ public: * @function LODManager.getOctreeSizeScale * @returns {number} */ - Q_INVOKABLE float getOctreeSizeScale() const { return _octreeSizeScale; } + Q_INVOKABLE float getOctreeSizeScale() const; /**jsdoc * @function LODManager.setBoundaryLevelAdjust @@ -198,6 +198,8 @@ public: void setLODAngleDeg(float lodAngle); float getLODAngleHalfTan() const; float getLODAngle() const; + float getVisibilityDistance() const; + void setVisibilityDistance(float distance); float getPidKp() const; float getPidKi() const; @@ -254,7 +256,7 @@ private: float _desktopTargetFPS { LOD_OFFSET_FPS + LOD_DEFAULT_QUALITY_LEVEL * LOD_MAX_LIKELY_DESKTOP_FPS }; float _hmdTargetFPS { LOD_OFFSET_FPS + LOD_DEFAULT_QUALITY_LEVEL * LOD_MAX_LIKELY_HMD_FPS }; - float _octreeSizeScale = DEFAULT_OCTREE_SIZE_SCALE; + float _visibilityDistance = DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; int _boundaryLevelAdjust = 0; glm::vec4 _pidCoefs{ 1.0f, 0.0f, 0.0f, 1.0f }; // Kp, Ki, Kd, Kv diff --git a/interface/src/ui/LodToolsDialog.cpp b/interface/src/ui/LodToolsDialog.cpp index b2d0131d3b..b25b9bc5a6 100644 --- a/interface/src/ui/LodToolsDialog.cpp +++ b/interface/src/ui/LodToolsDialog.cpp @@ -64,7 +64,7 @@ LodToolsDialog::LodToolsDialog(QWidget* parent) : _lodSize->setTickPosition(QSlider::TicksBelow); _lodSize->setFixedWidth(SLIDER_WIDTH); _lodSize->setPageStep(PAGE_STEP_LOD_SIZE); - int sliderValue = lodManager->getOctreeSizeScale() / TREE_SCALE; + int sliderValue = lodManager->getVisibilityDistance(); _lodSize->setValue(sliderValue); form->addRow("Level of Detail:", _lodSize); connect(_lodSize,SIGNAL(valueChanged(int)),this,SLOT(sizeScaleValueChanged(int))); @@ -81,7 +81,7 @@ LodToolsDialog::LodToolsDialog(QWidget* parent) : void LodToolsDialog::reloadSliders() { auto lodManager = DependencyManager::get(); - _lodSize->setValue(lodManager->getOctreeSizeScale() / TREE_SCALE); + _lodSize->setValue(lodManager->getVisibilityDistance()); _feedback->setText(lodManager->getLODFeedbackText()); } @@ -93,15 +93,14 @@ void LodToolsDialog::updateAutomaticLODAdjust() { void LodToolsDialog::sizeScaleValueChanged(int value) { auto lodManager = DependencyManager::get(); - float realValue = value /** TREE_SCALE*/; - lodManager->setOctreeSizeScale(realValue); + lodManager->setVisibilityDistance(value); _feedback->setText(lodManager->getLODFeedbackText()); } void LodToolsDialog::resetClicked(bool checked) { - int sliderValue = DEFAULT_OCTREE_SIZE_SCALE / TREE_SCALE; + int sliderValue = DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; _lodSize->setValue(sliderValue); _manualLODAdjust->setChecked(false); @@ -124,8 +123,8 @@ void LodToolsDialog::closeEvent(QCloseEvent* event) { lodManager->setAutomaticLODAdjust(true); // if the user adjusted the LOD above "normal" then always revert back to default - if (lodManager->getOctreeSizeScale() > DEFAULT_OCTREE_SIZE_SCALE) { - lodManager->setOctreeSizeScale(DEFAULT_OCTREE_SIZE_SCALE); + if (lodManager->getVisibilityDistance() > DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT) { + lodManager->setVisibilityDistance(DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT); } #endif } diff --git a/libraries/octree/src/OctreeConstants.h b/libraries/octree/src/OctreeConstants.h index 062d4e1ef2..26f0246538 100644 --- a/libraries/octree/src/OctreeConstants.h +++ b/libraries/octree/src/OctreeConstants.h @@ -21,8 +21,9 @@ const int TREE_SCALE = 32768; // ~20 miles.. This is the number of meters of the const int HALF_TREE_SCALE = TREE_SCALE / 2; // This controls the LOD. Larger number will make smaller voxels visible at greater distance. -const float MAX_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT = 400.0f; // max distance where a 1x1x1 cube is visible for 20:20 vision -const float DEFAULT_OCTREE_SIZE_SCALE = TREE_SCALE * MAX_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; +const float DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT = 400.0f; // max distance where a 1x1x1 cube is visible for 20:20 vision +const float UNIT_ELEMENT_MAX_EXTENT = sqrt(3.0f) / 2.0f; // A unit cube tilted on its edge will have its edge jutting out sqrt(3)/2 units from the center +const float DEFAULT_OCTREE_SIZE_SCALE = TREE_SCALE * DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; // Since entities like models live inside of octree cells, and they themselves can have very small mesh parts, // we want to have some constant that controls have big a mesh part must be to render even if the octree cell itself diff --git a/libraries/octree/src/OctreeUtils.cpp b/libraries/octree/src/OctreeUtils.cpp index 788f6da85f..2a1f520819 100644 --- a/libraries/octree/src/OctreeUtils.cpp +++ b/libraries/octree/src/OctreeUtils.cpp @@ -18,64 +18,21 @@ #include #include -float calculateRenderAccuracy(const glm::vec3& position, - const AABox& bounds, - float octreeSizeScale, - int boundaryLevelAdjust) { - float largestDimension = bounds.getLargestDimension(); - - const float maxScale = (float)TREE_SCALE; - float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) / OCTREE_TO_MESH_RATIO; - - static std::once_flag once; - static QMap shouldRenderTable; - std::call_once(once, [&] { - float SMALLEST_SCALE_IN_TABLE = 0.001f; // 1mm is plenty small - float scale = maxScale; - float factor = 1.0f; - - while (scale > SMALLEST_SCALE_IN_TABLE) { - scale /= 2.0f; - factor /= 2.0f; - shouldRenderTable[scale] = factor; - } - }); - - float closestScale = maxScale; - float visibleDistanceAtClosestScale = visibleDistanceAtMaxScale; - QMap::const_iterator lowerBound = shouldRenderTable.lowerBound(largestDimension); - if (lowerBound != shouldRenderTable.constEnd()) { - closestScale = lowerBound.key(); - visibleDistanceAtClosestScale = visibleDistanceAtMaxScale * lowerBound.value(); - } - - if (closestScale < largestDimension) { - visibleDistanceAtClosestScale *= 2.0f; - } - - // FIXME - for now, it's either visible or not visible. We want to adjust this to eventually return - // a floating point for objects that have small angular size to indicate that they may be rendered - // with lower preciscion - float distanceToCamera = glm::length(bounds.calcCenter() - position); - return (distanceToCamera <= visibleDistanceAtClosestScale) ? 1.0f : 0.0f; -} - float boundaryDistanceForRenderLevel(unsigned int renderLevel, float voxelSizeScale) { return voxelSizeScale / powf(2.0f, renderLevel); } -float getPerspectiveAccuracyAngleTan(float octreeSizeScale, int boundaryLevelAdjust) { - const float maxScale = sqrtf(3.0f) * 0.5f; //(float)TREE_SCALE; - float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) /* / OCTREE_TO_MESH_RATIO*/; - return (maxScale / visibleDistanceAtMaxScale); +float getPerspectiveAccuracyAngleTan(float visibilityDistance, int boundaryLevelAdjust) { + float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, visibilityDistance); + return UNIT_ELEMENT_MAX_EXTENT / visibleDistanceAtMaxScale; // TODO: consider renaming this function to half tangent because we're taking into account a factor of 1/2 } -float getPerspectiveAccuracyAngle(float octreeSizeScale, int boundaryLevelAdjust) { - return atan(getPerspectiveAccuracyAngleTan(octreeSizeScale, boundaryLevelAdjust)); +float getPerspectiveAccuracyAngle(float visibilityDistance, int boundaryLevelAdjust) { + return atan(getPerspectiveAccuracyAngleTan(visibilityDistance, boundaryLevelAdjust)); } -float getOrthographicAccuracySize(float octreeSizeScale, int boundaryLevelAdjust) { +float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) { // Smallest visible element is 1cm const float smallestSize = 0.01f; - return (smallestSize * MAX_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT) / boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale); + return (smallestSize * DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT) / boundaryDistanceForRenderLevel(boundaryLevelAdjust, visibilityDistance); } diff --git a/libraries/octree/src/OctreeUtils.h b/libraries/octree/src/OctreeUtils.h index eedbfe8bda..4ac3937cd0 100644 --- a/libraries/octree/src/OctreeUtils.h +++ b/libraries/octree/src/OctreeUtils.h @@ -20,18 +20,11 @@ class AABox; class AACube; class QJsonDocument; -/// renderAccuracy represents a floating point "visibility" of an object based on it's view from the camera. At a simple -/// level it returns 0.0f for things that are so small for the current settings that they could not be visible. -float calculateRenderAccuracy(const glm::vec3& position, - const AABox& bounds, - float octreeSizeScale = DEFAULT_OCTREE_SIZE_SCALE, - int boundaryLevelAdjust = 0); - float boundaryDistanceForRenderLevel(unsigned int renderLevel, float voxelSizeScale); -float getPerspectiveAccuracyAngleTan(float octreeSizeScale, int boundaryLevelAdjust); -float getPerspectiveAccuracyAngle(float octreeSizeScale, int boundaryLevelAdjust); -float getOrthographicAccuracySize(float octreeSizeScale, int boundaryLevelAdjust); +float getPerspectiveAccuracyAngleTan(float visibilityDistance, int boundaryLevelAdjust); +float getPerspectiveAccuracyAngle(float visibilityDistance, int boundaryLevelAdjust); +float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust); // MIN_ELEMENT_ANGULAR_DIAMETER = angular diameter of 1x1x1m cube at 400m = sqrt(3) / 400 = 0.0043301 radians ~= 0.25 degrees const float MIN_ELEMENT_ANGULAR_DIAMETER = 0.0043301f; // radians From 6db6890bac157e687cc63a7099422d602a0a1074 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 6 Aug 2019 15:54:24 -0700 Subject: [PATCH 03/12] Deprecate LODManager script properties: boundaryLevelAdjust and octreeSizeScale --- interface/src/LODManager.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index fbf38ee638..facda81724 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -59,6 +59,7 @@ class LODManager : public QObject, public Dependency { Q_PROPERTY(float lodQualityLevel READ getLODQualityLevel WRITE setLODQualityLevel NOTIFY lodQualityLevelChanged) + // Deprecated Q_PROPERTY(bool automaticLODAdjust READ getAutomaticLODAdjust WRITE setAutomaticLODAdjust NOTIFY autoLODChanged) Q_PROPERTY(float presentTime READ getPresentTime) @@ -138,24 +139,28 @@ public: /**jsdoc * @function LODManager.setOctreeSizeScale * @param {number} sizeScale + * @deprecated This function is deprecated and will be removed. Use the {@link LODManager.lodAngleDeg} property instead. */ Q_INVOKABLE void setOctreeSizeScale(float sizeScale); /**jsdoc * @function LODManager.getOctreeSizeScale * @returns {number} + * @deprecated This function is deprecated and will be removed. Use the {@link LODManager.lodAngleDeg} property instead. */ Q_INVOKABLE float getOctreeSizeScale() const; /**jsdoc * @function LODManager.setBoundaryLevelAdjust * @param {number} boundaryLevelAdjust + * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE void setBoundaryLevelAdjust(int boundaryLevelAdjust); /**jsdoc * @function LODManager.getBoundaryLevelAdjust * @returns {number} + * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } From 0d5260bccc38a8c2682ebd0ac54b290ac8da471e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 6 Aug 2019 16:35:41 -0700 Subject: [PATCH 04/12] More LOD renaming with focus on angles --- interface/src/Application.cpp | 2 +- interface/src/LODManager.cpp | 6 +++--- interface/src/LODManager.h | 2 +- libraries/octree/src/OctreeUtils.cpp | 12 ++++++------ libraries/octree/src/OctreeUtils.h | 6 +++--- libraries/render/src/render/DrawSceneOctree.cpp | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5f4850485f..90ca03d6c6 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6818,7 +6818,7 @@ void Application::updateRenderArgs(float deltaTime) { _viewFrustum.calculate(); } appRenderArgs._renderArgs = RenderArgs(_graphicsEngine.getGPUContext(), lodManager->getVisibilityDistance(), - lodManager->getBoundaryLevelAdjust(), lodManager->getLODAngleHalfTan(), RenderArgs::DEFAULT_RENDER_MODE, + lodManager->getBoundaryLevelAdjust(), lodManager->getLODHalfAngleTan(), RenderArgs::DEFAULT_RENDER_MODE, RenderArgs::MONO, RenderArgs::DEFERRED, RenderArgs::RENDER_DEBUG_NONE); appRenderArgs._renderArgs._scene = getMain3DScene(); diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 2b303aed74..1de003adcd 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -173,12 +173,12 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { } } -float LODManager::getLODAngleHalfTan() const { - return getPerspectiveAccuracyAngleTan(_visibilityDistance, _boundaryLevelAdjust); +float LODManager::getLODHalfAngleTan() const { + return getPerspectiveAccuracyHalfAngleTan(_visibilityDistance, _boundaryLevelAdjust); } float LODManager::getLODAngle() const { - return 2.0f * atanf(getLODAngleHalfTan()); + return 2.0f * atanf(getLODHalfAngleTan()); } float LODManager::getLODAngleDeg() const { return glm::degrees(getLODAngle()); diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index facda81724..46dde807db 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -201,7 +201,7 @@ public: float getLODAngleDeg() const; void setLODAngleDeg(float lodAngle); - float getLODAngleHalfTan() const; + float getLODHalfAngleTan() const; float getLODAngle() const; float getVisibilityDistance() const; void setVisibilityDistance(float distance); diff --git a/libraries/octree/src/OctreeUtils.cpp b/libraries/octree/src/OctreeUtils.cpp index 2a1f520819..34a92c694b 100644 --- a/libraries/octree/src/OctreeUtils.cpp +++ b/libraries/octree/src/OctreeUtils.cpp @@ -18,17 +18,17 @@ #include #include -float boundaryDistanceForRenderLevel(unsigned int renderLevel, float voxelSizeScale) { - return voxelSizeScale / powf(2.0f, renderLevel); +float boundaryDistanceForRenderLevel(unsigned int renderLevel, float visibilityDistance) { + return visibilityDistance / powf(2.0f, renderLevel); } -float getPerspectiveAccuracyAngleTan(float visibilityDistance, int boundaryLevelAdjust) { +float getPerspectiveAccuracyHalfAngleTan(float visibilityDistance, int boundaryLevelAdjust) { float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, visibilityDistance); - return UNIT_ELEMENT_MAX_EXTENT / visibleDistanceAtMaxScale; // TODO: consider renaming this function to half tangent because we're taking into account a factor of 1/2 + return UNIT_ELEMENT_MAX_EXTENT / visibleDistanceAtMaxScale; } -float getPerspectiveAccuracyAngle(float visibilityDistance, int boundaryLevelAdjust) { - return atan(getPerspectiveAccuracyAngleTan(visibilityDistance, boundaryLevelAdjust)); +float getPerspectiveAccuracyHalfAngle(float visibilityDistance, int boundaryLevelAdjust) { + return atan(getPerspectiveAccuracyHalfAngleTan(visibilityDistance, boundaryLevelAdjust)); } float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) { diff --git a/libraries/octree/src/OctreeUtils.h b/libraries/octree/src/OctreeUtils.h index 4ac3937cd0..8bf8bea587 100644 --- a/libraries/octree/src/OctreeUtils.h +++ b/libraries/octree/src/OctreeUtils.h @@ -20,10 +20,10 @@ class AABox; class AACube; class QJsonDocument; -float boundaryDistanceForRenderLevel(unsigned int renderLevel, float voxelSizeScale); +float boundaryDistanceForRenderLevel(unsigned int renderLevel, float visibilityDistance); -float getPerspectiveAccuracyAngleTan(float visibilityDistance, int boundaryLevelAdjust); -float getPerspectiveAccuracyAngle(float visibilityDistance, int boundaryLevelAdjust); +float getPerspectiveAccuracyHalfAngleTan(float visibilityDistance, int boundaryLevelAdjust); +float getPerspectiveAccuracyHalfAngle(float visibilityDistance, int boundaryLevelAdjust); float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust); // MIN_ELEMENT_ANGULAR_DIAMETER = angular diameter of 1x1x1m cube at 400m = sqrt(3) / 400 = 0.0043301 radians ~= 0.25 degrees diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp index b10c3fef8d..493ed01c3f 100644 --- a/libraries/render/src/render/DrawSceneOctree.cpp +++ b/libraries/render/src/render/DrawSceneOctree.cpp @@ -120,7 +120,7 @@ void DrawSceneOctree::run(const RenderContextPointer& renderContext, const ItemS // Draw the LOD Reticle { - float angle = glm::degrees(getPerspectiveAccuracyAngle(args->_sizeScale, args->_boundaryLevelAdjust)); + float angle = glm::degrees(getPerspectiveAccuracyHalfAngle(args->_sizeScale, args->_boundaryLevelAdjust)); Transform crosshairModel; crosshairModel.setTranslation(glm::vec3(0.0, 0.0, -1000.0)); crosshairModel.setScale(1000.0f * tanf(glm::radians(angle))); // Scaling at the actual tan of the lod angle => Multiplied by TWO From 9c16fcfdef8942c85c560030cf26f4adba5d86f0 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 7 Aug 2019 17:23:04 -0700 Subject: [PATCH 05/12] Make the LOD half angle the definitive LOD variable --- interface/src/LODManager.cpp | 15 +++++++++------ interface/src/LODManager.h | 3 ++- libraries/octree/src/OctreeUtils.cpp | 9 +++++++++ libraries/octree/src/OctreeUtils.h | 2 ++ 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 1de003adcd..36aca19b88 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -12,7 +12,6 @@ #include "LODManager.h" #include -#include #include #include @@ -165,7 +164,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { // And now add the output of the controller to the LODAngle where we will guarantee it is in the proper range setLODAngleDeg(oldLODAngle + output); - if (oldVisibilityDistance != _visibilityDistance) { + if (oldLODAngle != getLODAngleDeg()) { auto lodToolsDialog = DependencyManager::get()->getLodToolsDialog(); if (lodToolsDialog) { lodToolsDialog->reloadSliders(); @@ -174,22 +173,26 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { } float LODManager::getLODHalfAngleTan() const { - return getPerspectiveAccuracyHalfAngleTan(_visibilityDistance, _boundaryLevelAdjust); + return tan(_lodHalfAngle); } float LODManager::getLODAngle() const { - return 2.0f * atanf(getLODHalfAngleTan()); + return 2.0f * _lodHalfAngle; } float LODManager::getLODAngleDeg() const { return glm::degrees(getLODAngle()); } float LODManager::getVisibilityDistance() const { - return _visibilityDistance; + float systemDistance = getVisibilityDistanceFromHalfAngle(_lodHalfAngle); + // Maintain behavior with deprecated _boundaryLevelAdjust property + return systemDistance * powf(2.0f, _boundaryLevelAdjust); } void LODManager::setVisibilityDistance(float distance) { - _visibilityDistance = distance; + // Maintain behavior with deprecated _boundaryLevelAdjust property + float userDistance = distance / powf(2.0f, _boundaryLevelAdjust); + _lodHalfAngle = getHalfAngleFromVisibilityDistance(userDistance); } void LODManager::setLODAngleDeg(float lodAngle) { diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 46dde807db..86ab19e439 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -261,7 +262,7 @@ private: float _desktopTargetFPS { LOD_OFFSET_FPS + LOD_DEFAULT_QUALITY_LEVEL * LOD_MAX_LIKELY_DESKTOP_FPS }; float _hmdTargetFPS { LOD_OFFSET_FPS + LOD_DEFAULT_QUALITY_LEVEL * LOD_MAX_LIKELY_HMD_FPS }; - float _visibilityDistance = DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; + float _lodHalfAngle = getHalfAngleFromVisibilityDistance(DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT); int _boundaryLevelAdjust = 0; glm::vec4 _pidCoefs{ 1.0f, 0.0f, 0.0f, 1.0f }; // Kp, Ki, Kd, Kv diff --git a/libraries/octree/src/OctreeUtils.cpp b/libraries/octree/src/OctreeUtils.cpp index 34a92c694b..9fc246496a 100644 --- a/libraries/octree/src/OctreeUtils.cpp +++ b/libraries/octree/src/OctreeUtils.cpp @@ -31,6 +31,15 @@ float getPerspectiveAccuracyHalfAngle(float visibilityDistance, int boundaryLeve return atan(getPerspectiveAccuracyHalfAngleTan(visibilityDistance, boundaryLevelAdjust)); } +float getVisibilityDistanceFromHalfAngle(float halfAngle) { + float halfAngleTan = tan(halfAngle); + return UNIT_ELEMENT_MAX_EXTENT / halfAngleTan; +} + +float getHalfAngleFromVisibilityDistance(float visibilityDistance) { + return UNIT_ELEMENT_MAX_EXTENT / visibilityDistance; +} + float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) { // Smallest visible element is 1cm const float smallestSize = 0.01f; diff --git a/libraries/octree/src/OctreeUtils.h b/libraries/octree/src/OctreeUtils.h index 8bf8bea587..73d7e12a39 100644 --- a/libraries/octree/src/OctreeUtils.h +++ b/libraries/octree/src/OctreeUtils.h @@ -24,6 +24,8 @@ float boundaryDistanceForRenderLevel(unsigned int renderLevel, float visibilityD float getPerspectiveAccuracyHalfAngleTan(float visibilityDistance, int boundaryLevelAdjust); float getPerspectiveAccuracyHalfAngle(float visibilityDistance, int boundaryLevelAdjust); +float getVisibilityDistanceFromHalfAngle(float halfAngle); +float getHalfAngleFromVisibilityDistance(float visibilityDistance); float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust); // MIN_ELEMENT_ANGULAR_DIAMETER = angular diameter of 1x1x1m cube at 400m = sqrt(3) / 400 = 0.0043301 radians ~= 0.25 degrees From 1571c2be2771c68ba8edbba3b3b875002ad780d8 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 8 Aug 2019 11:12:07 -0700 Subject: [PATCH 06/12] Fix LOD math --- interface/src/LODManager.cpp | 11 ++++------- libraries/octree/src/OctreeUtils.cpp | 3 ++- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index 36aca19b88..ee7051bbbe 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -92,8 +92,7 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { return; } - // Previous values for output - float oldVisibilityDistance = getVisibilityDistance(); + // Previous value for output float oldLODAngle = getLODAngleDeg(); // Target fps is slightly overshooted by 5hz @@ -174,7 +173,6 @@ void LODManager::autoAdjustLOD(float realTimeDelta) { float LODManager::getLODHalfAngleTan() const { return tan(_lodHalfAngle); - } float LODManager::getLODAngle() const { return 2.0f * _lodHalfAngle; @@ -196,10 +194,9 @@ void LODManager::setVisibilityDistance(float distance) { } void LODManager::setLODAngleDeg(float lodAngle) { - auto newSolidAngle = std::max(0.001f, std::min(lodAngle, 90.f)); - auto halfTan = glm::tan(glm::radians(newSolidAngle * 0.5f)); - auto visibilityDistance = UNIT_ELEMENT_MAX_EXTENT / halfTan; - setVisibilityDistance(visibilityDistance); + auto newLODAngleDeg = std::max(0.001f, std::min(lodAngle, 90.f)); + auto newLODHalfAngle = glm::radians(newLODAngleDeg * 0.5); + _lodHalfAngle = newLODHalfAngle; } void LODManager::setSmoothScale(float t) { diff --git a/libraries/octree/src/OctreeUtils.cpp b/libraries/octree/src/OctreeUtils.cpp index 9fc246496a..2aae73c566 100644 --- a/libraries/octree/src/OctreeUtils.cpp +++ b/libraries/octree/src/OctreeUtils.cpp @@ -37,7 +37,8 @@ float getVisibilityDistanceFromHalfAngle(float halfAngle) { } float getHalfAngleFromVisibilityDistance(float visibilityDistance) { - return UNIT_ELEMENT_MAX_EXTENT / visibilityDistance; + float halfAngleTan = UNIT_ELEMENT_MAX_EXTENT / visibilityDistance; + return atan(halfAngleTan); } float getOrthographicAccuracySize(float visibilityDistance, int boundaryLevelAdjust) { From 71bc1a4258d862a801d6b8eda8310f00cf913dc2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 8 Aug 2019 11:12:42 -0700 Subject: [PATCH 07/12] Make simplifiedUI default to 20:20 vision --- scripts/simplifiedUI/ui/simplifiedUI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index f4f2627c66..46e10847f9 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -533,7 +533,7 @@ function maybeUpdateOutputDeviceMutedOverlay() { var oldAutomaticLODAdjust; var oldLODAngleDeg; var SIMPLIFIED_UI_AUTO_LOD_ADJUST = false; -var SIMPLIFIED_UI_LOD_ANGLE_DEG = 0.5; +var SIMPLIFIED_UI_LOD_ANGLE_DEG = 0.248; function modifyLODSettings() { oldAutomaticLODAdjust = LODManager.automaticLODAdjust; oldLODAngleDeg = LODManager.lodAngleDeg; From 99a774c89c2782e951f3aef0bcafefc27c9f27f2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 8 Aug 2019 13:00:58 -0700 Subject: [PATCH 08/12] Do not display high viewing distance as 20:0 vision --- interface/src/LODManager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index ee7051bbbe..adc790b876 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -311,7 +311,9 @@ QString LODManager::getLODFeedbackText() { int relativeToTwentyTwenty = 20 / relativeToDefault; QString result; - if (relativeToDefault > 1.01f) { + if (relativeToTwentyTwenty < 1) { + result = QString("%2 times further than average vision%3").arg(relativeToDefault, 0, 'f', 3).arg(granularityFeedback); + } else if (relativeToDefault > 1.01f) { result = QString("20:%1 or %2 times further than average vision%3").arg(relativeToTwentyTwenty).arg(relativeToDefault, 0, 'f', 2).arg(granularityFeedback); } else if (relativeToDefault > 0.99f) { result = QString("20:20 or the default distance for average vision%1").arg(granularityFeedback); From 8347d9d23e58d555b34736759f3e1a5a5963ed83 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 8 Aug 2019 13:59:50 -0700 Subject: [PATCH 09/12] Update LODManager setter in TabletLODTools.qml --- interface/resources/qml/hifi/dialogs/TabletLODTools.qml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml index cd99b75a61..e4d21e5aa9 100644 --- a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml +++ b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml @@ -29,6 +29,12 @@ Rectangle { // This controls the LOD. Larger number will make smaller objects visible at greater distance. readonly property real defaultMaxVisibilityDistance: 400.0 + readonly property real unitElementMaxExtent: Math.sqrt(3.0) * 0.5 + + function lodAngleDegToVisibilityDistance(var lodAngleDeg) { + var lodAngleRadians = lodAngleDeg * Math.PI / 180.0; + return unitElementMaxExtent / tan(lodAngleRadians); + } Column { anchors.margins: 10 @@ -89,7 +95,7 @@ Rectangle { value: defaultMaxVisibilityDistance tickmarksEnabled: false onValueChanged: { - LODManager.setVisibilityDistanceForUnitElement(value); + LODManager.setLODAngleDeg(lodAngleDegToVisibilityDistance(value)); whatYouCanSeeLabel.text = LODManager.getLODFeedbackText() } } From 49f1ecb1bfe1c70a1a4f9c7e89804885c6c95dec Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 9 Aug 2019 11:12:35 -0700 Subject: [PATCH 10/12] Fix new bugs in TabletLODTools.qml --- .../resources/qml/hifi/dialogs/TabletLODTools.qml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml index e4d21e5aa9..ed0545e6ad 100644 --- a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml +++ b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml @@ -31,9 +31,10 @@ Rectangle { readonly property real defaultMaxVisibilityDistance: 400.0 readonly property real unitElementMaxExtent: Math.sqrt(3.0) * 0.5 - function lodAngleDegToVisibilityDistance(var lodAngleDeg) { - var lodAngleRadians = lodAngleDeg * Math.PI / 180.0; - return unitElementMaxExtent / tan(lodAngleRadians); + function visibilityDistanceToLODAngleDeg(visibilityDistance) { + var lodHalfAngle = Math.atan(unitElementMaxExtent / visibilityDistance); + var lodAngle = lodHalfAngle * 2.0; + return lodAngle * 180.0 / Math.PI; } Column { @@ -74,7 +75,7 @@ Rectangle { id: adjustCheckbox boxSize: 20 anchors.verticalCenter: parent.verticalCenter - onCheckedChanged: LODManager.setAutomaticLODAdjust(!checked); + onCheckedChanged: LODManager.setAutomaticLODAdjust(!adjustCheckbox.checked); } } @@ -95,7 +96,7 @@ Rectangle { value: defaultMaxVisibilityDistance tickmarksEnabled: false onValueChanged: { - LODManager.setLODAngleDeg(lodAngleDegToVisibilityDistance(value)); + LODManager.lodAngleDeg = visibilityDistanceToLODAngleDeg(slider.value); whatYouCanSeeLabel.text = LODManager.getLODFeedbackText() } } From 07ea79689ea089e4e64231f22cf36f327f9e6c9f Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 9 Aug 2019 13:34:55 -0700 Subject: [PATCH 11/12] Fix build warnings --- interface/src/LODManager.cpp | 2 +- libraries/octree/src/OctreeConstants.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/LODManager.cpp b/interface/src/LODManager.cpp index adc790b876..3e47d88f3c 100644 --- a/interface/src/LODManager.cpp +++ b/interface/src/LODManager.cpp @@ -195,7 +195,7 @@ void LODManager::setVisibilityDistance(float distance) { void LODManager::setLODAngleDeg(float lodAngle) { auto newLODAngleDeg = std::max(0.001f, std::min(lodAngle, 90.f)); - auto newLODHalfAngle = glm::radians(newLODAngleDeg * 0.5); + auto newLODHalfAngle = glm::radians(newLODAngleDeg * 0.5f); _lodHalfAngle = newLODHalfAngle; } diff --git a/libraries/octree/src/OctreeConstants.h b/libraries/octree/src/OctreeConstants.h index 26f0246538..de681402c4 100644 --- a/libraries/octree/src/OctreeConstants.h +++ b/libraries/octree/src/OctreeConstants.h @@ -22,7 +22,7 @@ const int HALF_TREE_SCALE = TREE_SCALE / 2; // This controls the LOD. Larger number will make smaller voxels visible at greater distance. const float DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT = 400.0f; // max distance where a 1x1x1 cube is visible for 20:20 vision -const float UNIT_ELEMENT_MAX_EXTENT = sqrt(3.0f) / 2.0f; // A unit cube tilted on its edge will have its edge jutting out sqrt(3)/2 units from the center +const float UNIT_ELEMENT_MAX_EXTENT = sqrtf(3.0f) / 2.0f; // A unit cube tilted on its edge will have its edge jutting out sqrt(3)/2 units from the center const float DEFAULT_OCTREE_SIZE_SCALE = TREE_SCALE * DEFAULT_VISIBILITY_DISTANCE_FOR_UNIT_ELEMENT; // Since entities like models live inside of octree cells, and they themselves can have very small mesh parts, From 16593ec3c9bf7a939570e4daa4ac7c9801ec276b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 9 Aug 2019 16:32:31 -0700 Subject: [PATCH 12/12] Remove invalid deprecated comment --- interface/src/LODManager.h | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/LODManager.h b/interface/src/LODManager.h index 86ab19e439..3dafa8c800 100644 --- a/interface/src/LODManager.h +++ b/interface/src/LODManager.h @@ -60,7 +60,6 @@ class LODManager : public QObject, public Dependency { Q_PROPERTY(float lodQualityLevel READ getLODQualityLevel WRITE setLODQualityLevel NOTIFY lodQualityLevelChanged) - // Deprecated Q_PROPERTY(bool automaticLODAdjust READ getAutomaticLODAdjust WRITE setAutomaticLODAdjust NOTIFY autoLODChanged) Q_PROPERTY(float presentTime READ getPresentTime)