History

Merge pull request #2657 from ey6es/master

Added tools to adjust avatar LOD to LOD tools dialog. Closes #2624.

AndrewMeadows committed 12 years ago

Commit 7dc8f2a2 parents fbafbf4 873620e5 files · +115 −21Browse files

Showing the changes to interface/src/Menu.cpp (1 of 5 files). Show all

Unified · Split

interface/src/Menu.cpp+31−20
@@ -78,6 +78,9 @@ Menu::Menu() : · 77 unmodified lines
7878 _lodToolsDialog(NULL),
7979 _maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM),
8080 _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE),
81+ _automaticAvatarLOD(true),
82+ _avatarLODDecreaseFPS(DEFAULT_ADJUST_AVATAR_LOD_DOWN_FPS),
83+ _avatarLODIncreaseFPS(ADJUST_LOD_UP_FPS),
8184 _avatarLODDistanceMultiplier(DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER),
8285 _boundaryLevelAdjust(0),
8386 _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS),
@@ -273,7 +276,7 @@ Menu::Menu() : · 189 unmodified lines
273276 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true);
274277 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::BuckyBalls, 0, true);
275278 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Particles, 0, true);
276−
279+ addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools()));
277280
278281 QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options");
279282
@@ -286,7 +289,6 @@ Menu::Menu() : · 6 unmodified lines
286289
287290 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelTextures);
288291 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::AmbientOcclusion);
289− addActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools()));
290292 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges);
291293 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DisableAutoAdjustLOD);
292294
@@ -415,6 +417,11 @@ void Menu::loadSettings(QSettings* settings) { · 122 unmodified lines
415417 _maxVoxels = loadSetting(settings, "maxVoxels", DEFAULT_MAX_VOXELS_PER_SYSTEM);
416418 _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS);
417419 _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE);
420+ _automaticAvatarLOD = settings->value("automaticAvatarLOD", true).toBool();
421+ _avatarLODDecreaseFPS = loadSetting(settings, "avatarLODDecreaseFPS", DEFAULT_ADJUST_AVATAR_LOD_DOWN_FPS);
422+ _avatarLODIncreaseFPS = loadSetting(settings, "avatarLODIncreaseFPS", ADJUST_LOD_UP_FPS);
423+ _avatarLODDistanceMultiplier = loadSetting(settings, "avatarLODDistanceMultiplier",
424+ DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER);
418425 _boundaryLevelAdjust = loadSetting(settings, "boundaryLevelAdjust", 0);
419426 _snapshotsLocation = settings->value("snapshotsLocation",
420427 QStandardPaths::writableLocation(QStandardPaths::DesktopLocation)).toString();
@@ -456,6 +463,10 @@ void Menu::saveSettings(QSettings* settings) { · 35 unmodified lines
456463 settings->setValue("maxVoxels", _maxVoxels);
457464 settings->setValue("maxVoxelsPPS", _maxVoxelPacketsPerSecond);
458465 settings->setValue("voxelSizeScale", _voxelSizeScale);
466+ settings->setValue("automaticAvatarLOD", _automaticAvatarLOD);
467+ settings->setValue("avatarLODDecreaseFPS", _avatarLODDecreaseFPS);
468+ settings->setValue("avatarLODIncreaseFPS", _avatarLODIncreaseFPS);
469+ settings->setValue("avatarLODDistanceMultiplier", _avatarLODDistanceMultiplier);
459470 settings->setValue("boundaryLevelAdjust", _boundaryLevelAdjust);
460471 settings->setValue("snapshotsLocation", _snapshotsLocation);
461472 settings->beginGroup("View Frustum Offset Camera");
@@ -1161,27 +1172,27 @@ void Menu::autoAdjustLOD(float currentFPS) { · 699 unmodified lines
11611172
11621173 quint64 now = usecTimestampNow();
11631174
1164− const float ADJUST_AVATAR_LOD_DOWN_FPS = 30.0f;
11651175 const quint64 ADJUST_AVATAR_LOD_DOWN_DELAY = 1000 * 1000;
1166− if (_fastFPSAverage.getAverage() < ADJUST_AVATAR_LOD_DOWN_FPS) {
1167− if (now - _lastAvatarDetailDrop > ADJUST_AVATAR_LOD_DOWN_DELAY) {
1168− // attempt to lower the detail in proportion to the fps difference
1169− float targetFps = (ADJUST_AVATAR_LOD_DOWN_FPS + ADJUST_LOD_UP_FPS) * 0.5f;
1170− float averageFps = _fastFPSAverage.getAverage();
1171− const float MAXIMUM_MULTIPLIER_SCALE = 2.0f;
1172− const float MAXIMUM_DISTANCE_MULTIPLIER = 15.0f;
1173− _avatarLODDistanceMultiplier = qMin(MAXIMUM_DISTANCE_MULTIPLIER, _avatarLODDistanceMultiplier *
1174− (averageFps < EPSILON ? MAXIMUM_MULTIPLIER_SCALE : qMin(MAXIMUM_MULTIPLIER_SCALE, targetFps / averageFps)));
1175− _lastAvatarDetailDrop = now;
1176+ if (_automaticAvatarLOD) {
1177+ if (_fastFPSAverage.getAverage() < _avatarLODDecreaseFPS) {
1178+ if (now - _lastAvatarDetailDrop > ADJUST_AVATAR_LOD_DOWN_DELAY) {
1179+ // attempt to lower the detail in proportion to the fps difference
1180+ float targetFps = (_avatarLODDecreaseFPS + _avatarLODIncreaseFPS) * 0.5f;
1181+ float averageFps = _fastFPSAverage.getAverage();
1182+ const float MAXIMUM_MULTIPLIER_SCALE = 2.0f;
1183+ _avatarLODDistanceMultiplier = qMin(MAXIMUM_AVATAR_LOD_DISTANCE_MULTIPLIER, _avatarLODDistanceMultiplier *
1184+ (averageFps < EPSILON ? MAXIMUM_MULTIPLIER_SCALE :
1185+ qMin(MAXIMUM_MULTIPLIER_SCALE, targetFps / averageFps)));
1186+ _lastAvatarDetailDrop = now;
1187+ }
1188+ } else if (_fastFPSAverage.getAverage() > _avatarLODIncreaseFPS) {
1189+ // let the detail level creep slowly upwards
1190+ const float DISTANCE_DECREASE_RATE = 0.05f;
1191+ _avatarLODDistanceMultiplier = qMax(MINIMUM_AVATAR_LOD_DISTANCE_MULTIPLIER,
1192+ _avatarLODDistanceMultiplier - DISTANCE_DECREASE_RATE);
11761193 }
1177− } else if (_fastFPSAverage.getAverage() > ADJUST_LOD_UP_FPS) {
1178− // let the detail level creep slowly upwards
1179− const float DISTANCE_DECREASE_RATE = 0.05f;
1180− const float MINIMUM_DISTANCE_MULTIPLIER = 0.1f;
1181− _avatarLODDistanceMultiplier = qMax(MINIMUM_DISTANCE_MULTIPLIER,
1182− _avatarLODDistanceMultiplier - DISTANCE_DECREASE_RATE);
11831194 }
1184−
1195+
11851196 bool changed = false;
11861197 quint64 elapsed = now - _lastAdjust;
11871198

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t