Showing the changes to interface/src/Menu.cpp (1 of 55 files). Show all
Unified · Split
| @@ -62,7 +62,8 @@ Menu* Menu::getInstance() { · 61 unmodified lines | ||
| 62 | 62 | const ViewFrustumOffset DEFAULT_FRUSTUM_OFFSET = {-135.0f, 0.0f, 0.0f, 25.0f, 0.0f}; |
| 63 | 63 | const float DEFAULT_FACESHIFT_EYE_DEFLECTION = 0.25f; |
| 64 | 64 | const float DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER = 1.0f; |
| 65 | −const int FIVE_SECONDS_OF_FRAMES = 5 * 60; | |
| 65 | +const int ONE_SECOND_OF_FRAMES = 60; | |
| 66 | +const int FIVE_SECONDS_OF_FRAMES = 5 * ONE_SECOND_OF_FRAMES; | |
| 66 | 67 | |
| 67 | 68 | Menu::Menu() : |
| 68 | 69 | _actionHash(), |
| @@ -82,9 +83,9 @@ Menu::Menu() : · 13 unmodified lines | ||
| 82 | 83 | _lastAdjust(usecTimestampNow()), |
| 83 | 84 | _lastAvatarDetailDrop(usecTimestampNow()), |
| 84 | 85 | _fpsAverage(FIVE_SECONDS_OF_FRAMES), |
| 86 | + _fastFPSAverage(ONE_SECOND_OF_FRAMES), | |
| 85 | 87 | _loginAction(NULL), |
| 86 | 88 | _preferencesDialog(NULL) |
| 87 | − | |
| 88 | 89 | { |
| 89 | 90 | Application *appInstance = Application::getInstance(); |
| 90 | 91 | |
| @@ -1050,19 +1051,21 @@ void Menu::autoAdjustLOD(float currentFPS) { · 959 unmodified lines | ||
| 1050 | 1051 | currentFPS = ASSUMED_FPS; |
| 1051 | 1052 | } |
| 1052 | 1053 | _fpsAverage.updateAverage(currentFPS); |
| 1054 | + _fastFPSAverage.updateAverage(currentFPS); | |
| 1053 | 1055 | |
| 1054 | 1056 | quint64 now = usecTimestampNow(); |
| 1055 | 1057 | |
| 1056 | − if (_fpsAverage.getAverage() < ADJUST_LOD_DOWN_FPS) { | |
| 1057 | − if (now - _lastAvatarDetailDrop > ADJUST_LOD_DOWN_DELAY) { | |
| 1058 | + const quint64 ADJUST_AVATAR_LOD_DOWN_DELAY = 1000 * 1000; | |
| 1059 | + if (_fastFPSAverage.getAverage() < ADJUST_LOD_DOWN_FPS) { | |
| 1060 | + if (now - _lastAvatarDetailDrop > ADJUST_AVATAR_LOD_DOWN_DELAY) { | |
| 1058 | 1061 | // attempt to lower the detail in proportion to the fps difference |
| 1059 | 1062 | float targetFps = (ADJUST_LOD_DOWN_FPS + ADJUST_LOD_UP_FPS) * 0.5f; |
| 1060 | − _avatarLODDistanceMultiplier *= (targetFps / _fpsAverage.getAverage()); | |
| 1063 | + _avatarLODDistanceMultiplier *= (targetFps / _fastFPSAverage.getAverage()); | |
| 1061 | 1064 | _lastAvatarDetailDrop = now; |
| 1062 | 1065 | } |
| 1063 | − } else if (_fpsAverage.getAverage() > ADJUST_LOD_UP_FPS) { | |
| 1066 | + } else if (_fastFPSAverage.getAverage() > ADJUST_LOD_UP_FPS) { | |
| 1064 | 1067 | // let the detail level creep slowly upwards |
| 1065 | − const float DISTANCE_DECREASE_RATE = 0.01f; | |
| 1068 | + const float DISTANCE_DECREASE_RATE = 0.02f; | |
| 1066 | 1069 | const float MINIMUM_DISTANCE_MULTIPLIER = 0.1f; |
| 1067 | 1070 | _avatarLODDistanceMultiplier = qMax(MINIMUM_DISTANCE_MULTIPLIER, |
| 1068 | 1071 | _avatarLODDistanceMultiplier - DISTANCE_DECREASE_RATE); |