mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-28 23:39:43 +00:00
Merge branch 'shadersorffp' into 'master'
Log whether shaders or FFP are used for rendering See merge request OpenMW/openmw!3937
This commit is contained in:
commit
466f31a032
1 changed files with 49 additions and 6 deletions
|
@ -329,13 +329,56 @@ namespace MWRender
|
||||||
const SceneUtil::LightingMethod lightingMethod = Settings::shaders().mLightingMethod;
|
const SceneUtil::LightingMethod lightingMethod = Settings::shaders().mLightingMethod;
|
||||||
|
|
||||||
resourceSystem->getSceneManager()->setParticleSystemMask(MWRender::Mask_ParticleSystem);
|
resourceSystem->getSceneManager()->setParticleSystemMask(MWRender::Mask_ParticleSystem);
|
||||||
// Shadows and radial fog have problems with fixed-function mode.
|
|
||||||
bool forceShaders = Settings::fog().mRadialFog || Settings::fog().mExponentialFog
|
|
||||||
|| Settings::shaders().mSoftParticles || Settings::shaders().mForceShaders
|
|
||||||
|| Settings::shadows().mEnableShadows || lightingMethod != SceneUtil::LightingMethod::FFP || reverseZ
|
|
||||||
|| mSkyBlending || Stereo::getMultiview();
|
|
||||||
resourceSystem->getSceneManager()->setForceShaders(forceShaders);
|
|
||||||
|
|
||||||
|
// Figure out which pipeline must be used by default and inform the user
|
||||||
|
bool forceShaders = Settings::shaders().mForceShaders;
|
||||||
|
{
|
||||||
|
std::vector<std::string> requesters;
|
||||||
|
if (!forceShaders)
|
||||||
|
{
|
||||||
|
if (Settings::fog().mRadialFog)
|
||||||
|
requesters.push_back("radial fog");
|
||||||
|
if (Settings::fog().mExponentialFog)
|
||||||
|
requesters.push_back("exponential fog");
|
||||||
|
if (mSkyBlending)
|
||||||
|
requesters.push_back("sky blending");
|
||||||
|
if (Settings::shaders().mSoftParticles)
|
||||||
|
requesters.push_back("soft particles");
|
||||||
|
if (Settings::shadows().mEnableShadows)
|
||||||
|
requesters.push_back("shadows");
|
||||||
|
if (lightingMethod != SceneUtil::LightingMethod::FFP)
|
||||||
|
requesters.push_back("lighting method");
|
||||||
|
if (reverseZ)
|
||||||
|
requesters.push_back("reverse-Z depth buffer");
|
||||||
|
if (Stereo::getMultiview())
|
||||||
|
requesters.push_back("stereo multiview");
|
||||||
|
|
||||||
|
if (!requesters.empty())
|
||||||
|
forceShaders = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (forceShaders)
|
||||||
|
{
|
||||||
|
std::string message = "Using rendering with shaders by default";
|
||||||
|
if (requesters.empty())
|
||||||
|
{
|
||||||
|
message += " (forced)";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
message += ", requested by:";
|
||||||
|
for (size_t i = 0; i < requesters.size(); i++)
|
||||||
|
message += "\n - " + requesters[i];
|
||||||
|
}
|
||||||
|
Log(Debug::Info) << message;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log(Debug::Info) << "Using fixed-function rendering by default";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resourceSystem->getSceneManager()->setForceShaders(forceShaders);
|
||||||
// FIXME: calling dummy method because terrain needs to know whether lighting is clamped
|
// FIXME: calling dummy method because terrain needs to know whether lighting is clamped
|
||||||
resourceSystem->getSceneManager()->setClampLighting(Settings::shaders().mClampLighting);
|
resourceSystem->getSceneManager()->setClampLighting(Settings::shaders().mClampLighting);
|
||||||
resourceSystem->getSceneManager()->setAutoUseNormalMaps(Settings::shaders().mAutoUseObjectNormalMaps);
|
resourceSystem->getSceneManager()->setAutoUseNormalMaps(Settings::shaders().mAutoUseObjectNormalMaps);
|
||||||
|
|
Loading…
Reference in a new issue