From a987b017178e78e94137b9e7a2d9e5c889d7d579 Mon Sep 17 00:00:00 2001 From: "glassmancody.info" Date: Mon, 23 May 2022 19:44:39 -0700 Subject: [PATCH 1/2] don't resize user defined samplers to power of 2 --- components/fx/technique.cpp | 1 + 1 file changed, 1 insertion(+) 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); From ee6e60005b887fc8649cb7548132f1ca14cda392 Mon Sep 17 00:00:00 2001 From: "glassmancody.info" Date: Mon, 23 May 2022 21:27:32 -0700 Subject: [PATCH 2/2] remove log spam on failures --- apps/openmw/mwrender/pingpongcanvas.cpp | 10 +++++++++- apps/openmw/mwrender/pingpongcanvas.hpp | 2 ++ apps/openmw/mwrender/postprocessor.cpp | 5 ++++- 3 files changed, 15 insertions(+), 2 deletions(-) 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;