Merge branch 'regressionfixesofdubiousauthenticity' into 'master'

Rendering regression fixes of dubious authenticity (#7587, #7720)

Closes #7587 and #7720

See merge request OpenMW/openmw!3979
fix-osga-rotate-wildly
psi29a 2 months ago
commit c8560c63eb

@ -111,6 +111,7 @@
Bug #7557: Terrain::ChunkManager::createChunk is called twice for the same position, lod on initial loading
Bug #7573: Drain Fatigue can't bring fatigue below zero by default
Bug #7585: Difference in interior lighting between OpenMW with legacy lighting method enabled and vanilla Morrowind
Bug #7587: Quick load related crash
Bug #7603: Scripts menu size is not updated properly
Bug #7604: Goblins Grunt becomes idle once injured
Bug #7609: ForceGreeting should not open dialogue for werewolves

@ -346,7 +346,7 @@ namespace MWRender
for (auto& technique : mTechniques)
{
if (technique->getStatus() == fx::Technique::Status::File_Not_exists)
if (!technique || technique->getStatus() == fx::Technique::Status::File_Not_exists)
continue;
const auto lastWriteTime = std::filesystem::last_write_time(mTechniqueFileMap[technique->getName()]);
@ -564,7 +564,7 @@ namespace MWRender
for (const auto& technique : mTechniques)
{
if (!technique->isValid())
if (!technique || !technique->isValid())
continue;
if (technique->getGLSLVersion() > mGLSLVersion)
@ -718,7 +718,7 @@ namespace MWRender
PostProcessor::Status PostProcessor::disableTechnique(std::shared_ptr<fx::Technique> technique, bool dirty)
{
if (technique->getLocked())
if (!technique || technique->getLocked())
return Status_Error;
auto it = std::find(mTechniques.begin(), mTechniques.end(), technique);
@ -734,6 +734,9 @@ namespace MWRender
bool PostProcessor::isTechniqueEnabled(const std::shared_ptr<fx::Technique>& technique) const
{
if (!technique)
return false;
if (auto it = std::find(mTechniques.begin(), mTechniques.end(), technique); it == mTechniques.end())
return false;
@ -815,7 +818,7 @@ namespace MWRender
void PostProcessor::disableDynamicShaders()
{
for (auto& technique : mTechniques)
if (technique->getDynamic())
if (technique && technique->getDynamic())
disableTechnique(technique);
}

@ -243,7 +243,7 @@ namespace MWRender
osg::ref_ptr<osg::StateSet> stateset = quad->getOrCreateStateSet();
Shader::ShaderManager& shaderMgr = mResourceSystem->getSceneManager()->getShaderManager();
stateset->setAttributeAndModes(shaderMgr.getProgram("360"), osg::StateAttribute::ON);
stateset->setAttributeAndModes(shaderMgr.getProgram("s360"), osg::StateAttribute::ON);
stateset->addUniform(new osg::Uniform("cubeMap", 0));
stateset->addUniform(new osg::Uniform("mapping", static_cast<int>(screenshotMapping)));

Loading…
Cancel
Save