mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Added option to disable glow effect for 10fps boost for oculus
This commit is contained in:
parent
2727328729
commit
1cd2066e79
4 changed files with 38 additions and 9 deletions
|
@ -565,6 +565,8 @@ void Application::paintGL() {
|
||||||
bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
|
bool showWarnings = Menu::getInstance()->isOptionChecked(MenuOption::PipelineWarnings);
|
||||||
PerformanceWarning warn(showWarnings, "Application::paintGL()");
|
PerformanceWarning warn(showWarnings, "Application::paintGL()");
|
||||||
|
|
||||||
|
const bool glowEnabled = Menu::getInstance()->isOptionChecked(MenuOption::EnableGlowEffect);
|
||||||
|
|
||||||
// Set the desired FBO texture size. If it hasn't changed, this does nothing.
|
// Set the desired FBO texture size. If it hasn't changed, this does nothing.
|
||||||
// Otherwise, it must rebuild the FBOs
|
// Otherwise, it must rebuild the FBOs
|
||||||
if (OculusManager::isConnected()) {
|
if (OculusManager::isConnected()) {
|
||||||
|
@ -624,6 +626,11 @@ void Application::paintGL() {
|
||||||
updateShadowMap();
|
updateShadowMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//If we aren't using the glow shader, we have to clear the color and depth buffer
|
||||||
|
if (!glowEnabled) {
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
if (OculusManager::isConnected()) {
|
if (OculusManager::isConnected()) {
|
||||||
//When in mirror mode, use camera rotation. Otherwise, use body rotation
|
//When in mirror mode, use camera rotation. Otherwise, use body rotation
|
||||||
if (whichCamera.getMode() == CAMERA_MODE_MIRROR) {
|
if (whichCamera.getMode() == CAMERA_MODE_MIRROR) {
|
||||||
|
@ -633,12 +640,18 @@ void Application::paintGL() {
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (TV3DManager::isConnected()) {
|
} else if (TV3DManager::isConnected()) {
|
||||||
_glowEffect.prepare();
|
if (glowEnabled) {
|
||||||
|
_glowEffect.prepare();
|
||||||
|
}
|
||||||
TV3DManager::display(whichCamera);
|
TV3DManager::display(whichCamera);
|
||||||
_glowEffect.render();
|
if (glowEnabled) {
|
||||||
|
_glowEffect.render();
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
_glowEffect.prepare();
|
if (glowEnabled) {
|
||||||
|
_glowEffect.prepare();
|
||||||
|
}
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
glMatrixMode(GL_MODELVIEW);
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
@ -646,7 +659,9 @@ void Application::paintGL() {
|
||||||
displaySide(whichCamera);
|
displaySide(whichCamera);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
_glowEffect.render();
|
if (glowEnabled) {
|
||||||
|
_glowEffect.render();
|
||||||
|
}
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {
|
if (Menu::getInstance()->isOptionChecked(MenuOption::Mirror)) {
|
||||||
renderRearViewMirror(_mirrorViewRect);
|
renderRearViewMirror(_mirrorViewRect);
|
||||||
|
|
|
@ -332,6 +332,8 @@ Menu::Menu() :
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Stars, Qt::Key_Asterisk, true);
|
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Stars, Qt::Key_Asterisk, true);
|
||||||
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true);
|
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true);
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::EnableGlowEffect, 0, true);
|
||||||
addActionToQMenuAndActionHash(renderOptionsMenu,
|
addActionToQMenuAndActionHash(renderOptionsMenu,
|
||||||
MenuOption::GlowMode,
|
MenuOption::GlowMode,
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -351,6 +351,7 @@ namespace MenuOption {
|
||||||
const QString DontFadeOnVoxelServerChanges = "Don't Fade In/Out on Voxel Server Changes";
|
const QString DontFadeOnVoxelServerChanges = "Don't Fade In/Out on Voxel Server Changes";
|
||||||
const QString EchoLocalAudio = "Echo Local Audio";
|
const QString EchoLocalAudio = "Echo Local Audio";
|
||||||
const QString EchoServerAudio = "Echo Server Audio";
|
const QString EchoServerAudio = "Echo Server Audio";
|
||||||
|
const QString EnableGlowEffect = "Enable Glow Effect (Warning: Poor Oculus Performance)";
|
||||||
const QString Enable3DTVMode = "Enable 3DTV Mode";
|
const QString Enable3DTVMode = "Enable 3DTV Mode";
|
||||||
const QString EnableVRMode = "Enable VR Mode";
|
const QString EnableVRMode = "Enable VR Mode";
|
||||||
const QString ExpandMiscAvatarTiming = "Expand Misc MyAvatar Timing";
|
const QString ExpandMiscAvatarTiming = "Expand Misc MyAvatar Timing";
|
||||||
|
|
|
@ -266,8 +266,14 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
// PrioVR will only work if renderOverlay is called, calibration is connected to Application::renderingOverlay()
|
// PrioVR will only work if renderOverlay is called, calibration is connected to Application::renderingOverlay()
|
||||||
applicationOverlay.renderOverlay(true);
|
applicationOverlay.renderOverlay(true);
|
||||||
const bool displayOverlays = Menu::getInstance()->isOptionChecked(MenuOption::DisplayOculusOverlays);
|
const bool displayOverlays = Menu::getInstance()->isOptionChecked(MenuOption::DisplayOculusOverlays);
|
||||||
|
|
||||||
Application::getInstance()->getGlowEffect()->prepare();
|
//Bind our framebuffer object. If we are rendering the glow effect, we let the glow effect shader take care of it
|
||||||
|
if (Menu::getInstance()->isOptionChecked(MenuOption::EnableGlowEffect)) {
|
||||||
|
Application::getInstance()->getGlowEffect()->prepare();
|
||||||
|
} else {
|
||||||
|
Application::getInstance()->getTextureCache()->getPrimaryFramebufferObject()->bind();
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
}
|
||||||
|
|
||||||
ovrPosef eyeRenderPose[ovrEye_Count];
|
ovrPosef eyeRenderPose[ovrEye_Count];
|
||||||
|
|
||||||
|
@ -332,9 +338,14 @@ void OculusManager::display(const glm::quat &bodyOrientation, const glm::vec3 &p
|
||||||
//Full texture viewport for glow effect
|
//Full texture viewport for glow effect
|
||||||
glViewport(0, 0, _renderTargetSize.w, _renderTargetSize.h);
|
glViewport(0, 0, _renderTargetSize.w, _renderTargetSize.h);
|
||||||
|
|
||||||
//Bind the output texture from the glow shader
|
//Bind the output texture from the glow shader. If glow effect is disabled, we just grab the texture
|
||||||
QOpenGLFramebufferObject* fbo = Application::getInstance()->getGlowEffect()->render(true);
|
if (Menu::getInstance()->isOptionChecked(MenuOption::EnableGlowEffect)) {
|
||||||
glBindTexture(GL_TEXTURE_2D, fbo->texture());
|
QOpenGLFramebufferObject* fbo = Application::getInstance()->getGlowEffect()->render(true);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, fbo->texture());
|
||||||
|
} else {
|
||||||
|
Application::getInstance()->getTextureCache()->getPrimaryFramebufferObject()->release();
|
||||||
|
glBindTexture(GL_TEXTURE_2D, Application::getInstance()->getTextureCache()->getPrimaryFramebufferObject()->texture());
|
||||||
|
}
|
||||||
|
|
||||||
// restore our normal viewport
|
// restore our normal viewport
|
||||||
glViewport(0, 0, Application::getInstance()->getGLWidget()->width(), Application::getInstance()->getGLWidget()->height());
|
glViewport(0, 0, Application::getInstance()->getGLWidget()->width(), Application::getInstance()->getGLWidget()->height());
|
||||||
|
|
Loading…
Reference in a new issue