Merge pull request #6767 from howard-stearns/pid-render-limits

render limits fixes
This commit is contained in:
Andrew Meadows 2016-01-05 10:17:04 -08:00
commit 43d8c14c16
4 changed files with 7 additions and 6 deletions

View file

@ -264,7 +264,7 @@ Item {
Text { Text {
color: root.fontColor; color: root.fontColor;
font.pixelSize: root.fontSize font.pixelSize: root.fontSize
visible: root.expanded visible: root.expanded && !root.showAcuity
text: root.lodStatsRenderText; text: root.lodStatsRenderText;
} }
} }

View file

@ -250,14 +250,14 @@ int LODManager::getRenderedCount() {
return lastRenderedCount; return lastRenderedCount;
} }
QString LODManager::getLODStatsRenderText() { QString LODManager::getLODStatsRenderText() {
QString label = getUseAcuity() ? "Renderable avatars: " : "Rendered objects: "; const QString label = "Rendered objects: ";
return label + QString::number(getRenderedCount()) + " w/in " + QString::number((int)getRenderDistance()) + "m"; return label + QString::number(getRenderedCount()) + " w/in " + QString::number((int)getRenderDistance()) + "m";
} }
// compare audoAdjustLOD() // compare audoAdjustLOD()
void LODManager::updatePIDRenderDistance(float targetFps, float measuredFps, float deltaTime, bool isThrottled) { void LODManager::updatePIDRenderDistance(float targetFps, float measuredFps, float deltaTime, bool isThrottled) {
float distance; float distance;
if (!isThrottled) { if (!isThrottled) {
_renderDistanceController.setMeasuredValueSetpoint(targetFps / 2.0f); // No problem updating in flight. _renderDistanceController.setMeasuredValueSetpoint(targetFps); // No problem updating in flight.
// The PID controller raises the controlled value when the measured value goes up. // The PID controller raises the controlled value when the measured value goes up.
// The measured value is frame rate. When the controlled value (1 / render cutoff distance) // The measured value is frame rate. When the controlled value (1 / render cutoff distance)
// goes up, the render cutoff distance gets closer, the number of rendered avatars is less, and frame rate // goes up, the render cutoff distance gets closer, the number of rendered avatars is less, and frame rate
@ -279,7 +279,7 @@ bool LODManager::shouldRender(const RenderArgs* args, const AABox& bounds) {
if (!getUseAcuity()) { if (!getUseAcuity()) {
const float scenerySize = 300; // meters const float scenerySize = 300; // meters
bool isRendered = (largestDimension > scenerySize) || // render scenery regardless of distance bool isRendered = (largestDimension > scenerySize) || // render scenery regardless of distance
(fabsf(distanceToCamera - largestDimension) < renderDistance); (distanceToCamera < renderDistance + largestDimension);
renderedCount += isRendered ? 1 : 0; renderedCount += isRendered ? 1 : 0;
return isRendered; return isRendered;
} }

View file

@ -65,7 +65,8 @@ void PreferencesDialog::changeUseAcuity() {
ui.desktopMinimumFPSSpin->setEnabled(useAcuity); ui.desktopMinimumFPSSpin->setEnabled(useAcuity);
ui.label_hmdMinimumFPSSpin->setEnabled(useAcuity); ui.label_hmdMinimumFPSSpin->setEnabled(useAcuity);
ui.hmdMinimumFPSSpin->setEnabled(useAcuity); ui.hmdMinimumFPSSpin->setEnabled(useAcuity);
ui.label_smallestReasonableRenderHorizon->setText(useAcuity ? "Minimum Avatar Display Distance (@half speed)" : "Minimum Display Distance (@half speed)"); ui.label_smallestReasonableRenderHorizon->setEnabled(!useAcuity);
ui.smallestReasonableRenderHorizon->setEnabled(!useAcuity);
Menu::getInstance()->getActionForOption(MenuOption::LodTools)->setEnabled(useAcuity); Menu::getInstance()->getActionForOption(MenuOption::LodTools)->setEnabled(useAcuity);
Menu::getInstance()->getSubMenuFromName(MenuOption::RenderResolution, Menu::getInstance()->getSubMenuFromName("Render", Menu::getInstance()->getMenu("Developer")))->setEnabled(useAcuity); Menu::getInstance()->getSubMenuFromName(MenuOption::RenderResolution, Menu::getInstance()->getSubMenuFromName("Render", Menu::getInstance()->getMenu("Developer")))->setEnabled(useAcuity);
} }

View file

@ -974,7 +974,7 @@
<string notr="true"/> <string notr="true"/>
</property> </property>
<property name="text"> <property name="text">
<string>Minimum Avatar Display Distance</string> <string>Minimum Display Distance</string>
</property> </property>
<property name="indent"> <property name="indent">
<number>0</number> <number>0</number>