Make render scale configurable in ui for vulkan
This commit is contained in:
parent
8f061c6367
commit
e6f8dcfdb0
@ -337,6 +337,7 @@ namespace GE
|
|||||||
destroySwapChainRelated(false/*handle_surface*/);
|
destroySwapChainRelated(false/*handle_surface*/);
|
||||||
createSwapChainRelated(false/*handle_surface*/);
|
createSwapChainRelated(false/*handle_surface*/);
|
||||||
}
|
}
|
||||||
|
void updateRenderScale(float value);
|
||||||
uint32_t getGraphicsFamily() const { return m_graphics_family; }
|
uint32_t getGraphicsFamily() const { return m_graphics_family; }
|
||||||
unsigned getGraphicsQueueCount() const
|
unsigned getGraphicsQueueCount() const
|
||||||
{ return m_graphics_queue_count; }
|
{ return m_graphics_queue_count; }
|
||||||
|
@ -2413,6 +2413,25 @@ bool GEVulkanDriver::setRenderTarget(video::ITexture* texture,
|
|||||||
return true;
|
return true;
|
||||||
} // setRenderTarget
|
} // setRenderTarget
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
void GEVulkanDriver::updateRenderScale(float value)
|
||||||
|
{
|
||||||
|
if (getGEConfig()->m_render_scale == value)
|
||||||
|
return;
|
||||||
|
waitIdle();
|
||||||
|
setDisableWaitIdle(true);
|
||||||
|
destroySwapChainRelated(false/*handle_surface*/);
|
||||||
|
getGEConfig()->m_render_scale = value;
|
||||||
|
createSwapChainRelated(false/*handle_surface*/);
|
||||||
|
for (auto& dc : static_cast<GEVulkanSceneManager*>(
|
||||||
|
m_irrlicht_device->getSceneManager())->getDrawCalls())
|
||||||
|
dc.second = std::unique_ptr<GEVulkanDrawCall>(new GEVulkanDrawCall);
|
||||||
|
GEVulkanSkyBoxRenderer::destroy();
|
||||||
|
GEVulkan2dRenderer::destroy();
|
||||||
|
GEVulkan2dRenderer::init(this);
|
||||||
|
setDisableWaitIdle(false);
|
||||||
|
} // updateRenderScale
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace irr
|
namespace irr
|
||||||
|
@ -414,6 +414,8 @@ void IrrDriver::initDevice()
|
|||||||
#ifndef SERVER_ONLY
|
#ifndef SERVER_ONLY
|
||||||
GE::getGEConfig()->m_texture_compression =
|
GE::getGEConfig()->m_texture_compression =
|
||||||
UserConfigParams::m_texture_compression;
|
UserConfigParams::m_texture_compression;
|
||||||
|
GE::getGEConfig()->m_render_scale =
|
||||||
|
UserConfigParams::m_scale_rtts_factor;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -464,7 +464,10 @@ void OptionsScreenVideo::init()
|
|||||||
gfx->setActive(!in_game && CVS->isGLSL());
|
gfx->setActive(!in_game && CVS->isGLSL());
|
||||||
getWidget<ButtonWidget>("custom")->setActive(!in_game || !CVS->isGLSL());
|
getWidget<ButtonWidget>("custom")->setActive(!in_game || !CVS->isGLSL());
|
||||||
if (getWidget<SpinnerWidget>("scale_rtts")->isActivated())
|
if (getWidget<SpinnerWidget>("scale_rtts")->isActivated())
|
||||||
getWidget<SpinnerWidget>("scale_rtts")->setActive(!in_game);
|
{
|
||||||
|
getWidget<SpinnerWidget>("scale_rtts")->setActive(!in_game ||
|
||||||
|
GE::getDriver()->getDriverType() == video::EDT_VULKAN);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MOBILE_STK) || defined(__SWITCH__)
|
#if defined(MOBILE_STK) || defined(__SWITCH__)
|
||||||
@ -555,7 +558,8 @@ void OptionsScreenVideo::updateGfxSlider()
|
|||||||
setActive(UserConfigParams::m_dynamic_lights && CVS->isGLSL());
|
setActive(UserConfigParams::m_dynamic_lights && CVS->isGLSL());
|
||||||
// Same with Render resolution slider
|
// Same with Render resolution slider
|
||||||
getWidget<GUIEngine::SpinnerWidget>("scale_rtts")->
|
getWidget<GUIEngine::SpinnerWidget>("scale_rtts")->
|
||||||
setActive(UserConfigParams::m_dynamic_lights && CVS->isGLSL());
|
setActive((UserConfigParams::m_dynamic_lights && CVS->isGLSL()) ||
|
||||||
|
GE::getDriver()->getDriverType() == video::EDT_VULKAN);
|
||||||
|
|
||||||
updateTooltip();
|
updateTooltip();
|
||||||
#endif
|
#endif
|
||||||
@ -791,9 +795,11 @@ void OptionsScreenVideo::eventCallback(Widget* widget, const std::string& name,
|
|||||||
getWidget<GUIEngine::SpinnerWidget>("blur_level")->setActive(level >= 2);
|
getWidget<GUIEngine::SpinnerWidget>("blur_level")->setActive(level >= 2);
|
||||||
|
|
||||||
// Same with Render resolution slider
|
// Same with Render resolution slider
|
||||||
|
#ifndef SERVER_ONLY
|
||||||
getWidget<GUIEngine::SpinnerWidget>("scale_rtts")->
|
getWidget<GUIEngine::SpinnerWidget>("scale_rtts")->
|
||||||
setActive(UserConfigParams::m_dynamic_lights);
|
setActive(UserConfigParams::m_dynamic_lights ||
|
||||||
|
GE::getDriver()->getDriverType() == video::EDT_VULKAN);
|
||||||
|
#endif
|
||||||
UserConfigParams::m_animated_characters = m_presets[level].animatedCharacters;
|
UserConfigParams::m_animated_characters = m_presets[level].animatedCharacters;
|
||||||
UserConfigParams::m_particles_effects = m_presets[level].particles;
|
UserConfigParams::m_particles_effects = m_presets[level].particles;
|
||||||
setImageQuality(m_presets[level].image_quality);
|
setImageQuality(m_presets[level].image_quality);
|
||||||
@ -844,7 +850,10 @@ void OptionsScreenVideo::eventCallback(Widget* widget, const std::string& name,
|
|||||||
assert(level < (int)m_scale_rtts_custom_presets.size());
|
assert(level < (int)m_scale_rtts_custom_presets.size());
|
||||||
|
|
||||||
UserConfigParams::m_scale_rtts_factor = m_scale_rtts_custom_presets[level].value;
|
UserConfigParams::m_scale_rtts_factor = m_scale_rtts_custom_presets[level].value;
|
||||||
|
#ifndef SERVER_ONLY
|
||||||
|
if (GE::getVKDriver())
|
||||||
|
GE::getVKDriver()->updateRenderScale(UserConfigParams::m_scale_rtts_factor);
|
||||||
|
#endif
|
||||||
updateScaleRTTsSlider();
|
updateScaleRTTsSlider();
|
||||||
}
|
}
|
||||||
else if (name == "rememberWinpos")
|
else if (name == "rememberWinpos")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user