diff --git a/apps/openmw/mwrender/pingpongcanvas.cpp b/apps/openmw/mwrender/pingpongcanvas.cpp index 9592a8bbba..157e325ee5 100644 --- a/apps/openmw/mwrender/pingpongcanvas.cpp +++ b/apps/openmw/mwrender/pingpongcanvas.cpp @@ -103,7 +103,15 @@ namespace MWRender if (filtered.empty() || !bufferData.postprocessing) { if (bufferData.postprocessing) - Log(Debug::Error) << "Critical error, postprocess shaders failed to compile. Using default shader."; + { + if (!mLoggedLastError) + { + Log(Debug::Error) << "Critical error, postprocess shaders failed to compile. Using default shader."; + mLoggedLastError = true; + } + } + else + mLoggedLastError = false; mFallbackStateSet->setTextureAttributeAndModes(0, bufferData.sceneTex); diff --git a/apps/openmw/mwrender/pingpongcanvas.hpp b/apps/openmw/mwrender/pingpongcanvas.hpp index bb39f9bcf3..9a3906a006 100644 --- a/apps/openmw/mwrender/pingpongcanvas.hpp +++ b/apps/openmw/mwrender/pingpongcanvas.hpp @@ -82,6 +82,8 @@ namespace MWRender mutable std::optional mQueuedDispatchArray; mutable size_t mQueuedDispatchFrameId; + + mutable bool mLoggedLastError = false; }; } diff --git a/apps/openmw/mwrender/postprocessor.cpp b/apps/openmw/mwrender/postprocessor.cpp index 78016ceceb..61468df7da 100644 --- a/apps/openmw/mwrender/postprocessor.cpp +++ b/apps/openmw/mwrender/postprocessor.cpp @@ -378,7 +378,7 @@ namespace MWRender const auto lastWriteTime = std::filesystem::last_write_time(mTechniqueFileMap[technique->getName()]); const bool isDirty = technique->setLastModificationTime(lastWriteTime); - if (technique->isValid() && !isDirty) + if (!isDirty) continue; if (technique->compile()) @@ -671,6 +671,9 @@ namespace MWRender bool PostProcessor::disableTechnique(std::shared_ptr technique, bool dirty) { + if (Misc::StringUtils::ciEqual(technique->getName(), "main")) + return false; + auto it = std::find(mTechniques.begin(), mTechniques.end(), technique); if (it == std::end(mTechniques)) return false; diff --git a/components/fx/technique.cpp b/components/fx/technique.cpp index 8090a27b76..019744e70d 100644 --- a/components/fx/technique.cpp +++ b/components/fx/technique.cpp @@ -510,6 +510,7 @@ namespace fx if (proxy.internal_format.has_value()) sampler->setSourceFormat(proxy.internal_format.value()); sampler->setName(std::string{mBlockName}); + sampler->setResizeNonPowerOfTwoHint(false); mTextures.emplace_back(sampler);