From 88122d1dbbc9cef9c48bf78bc6222063aa8b50e6 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Thu, 11 Feb 2021 14:44:13 +0100 Subject: [PATCH] Adapt to new Ghoul; fix previously undetected errors in uniform setting --- ext/ghoul | 2 +- modules/base/rendering/renderablemodel.cpp | 6 ++---- .../rendering/renderableplanetprojection.cpp | 2 +- .../volume/rendering/basicvolumeraycaster.cpp | 4 ++-- modules/volume/tasks/generaterawvolumetask.cpp | 8 ++++++++ src/documentation/documentation.cpp | 17 ++++++++++------- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ext/ghoul b/ext/ghoul index 2f1bb7c483..6cc191d429 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit 2f1bb7c483f4792317b8f1a3da17e2270c0d0ae7 +Subproject commit 6cc191d4293a68faf559d090dd33e340b9137d63 diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index ec98dc83e8..274bdd1d6a 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -438,13 +438,11 @@ void RenderableModel::render(const RenderData& data, RendererTasks&) { ); _program->setUniform( _uniformCache.lightIntensities, - _lightIntensitiesBuffer.data(), - nLightSources + _lightIntensitiesBuffer ); _program->setUniform( _uniformCache.lightDirectionsViewSpace, - _lightDirectionsViewSpaceBuffer.data(), - nLightSources + _lightDirectionsViewSpaceBuffer ); _program->setUniform( _uniformCache.modelViewTransform, diff --git a/modules/spacecraftinstruments/rendering/renderableplanetprojection.cpp b/modules/spacecraftinstruments/rendering/renderableplanetprojection.cpp index 23ac686770..4c2f2479ee 100644 --- a/modules/spacecraftinstruments/rendering/renderableplanetprojection.cpp +++ b/modules/spacecraftinstruments/rendering/renderableplanetprojection.cpp @@ -481,7 +481,7 @@ void RenderablePlanetProjection::imageProjectGPU( if (_geometry->hasProperty("Radius")) { std::any r = _geometry->property("Radius")->get(); if (glm::vec3* radius = std::any_cast(&r)){ - _fboProgramObject->setUniform(_fboUniformCache.radius, radius); + _fboProgramObject->setUniform(_fboUniformCache.radius, *radius); } } else { diff --git a/modules/volume/rendering/basicvolumeraycaster.cpp b/modules/volume/rendering/basicvolumeraycaster.cpp index d4f8516134..ed547063ca 100644 --- a/modules/volume/rendering/basicvolumeraycaster.cpp +++ b/modules/volume/rendering/basicvolumeraycaster.cpp @@ -135,8 +135,8 @@ void BasicVolumeRaycaster::preRaycast(const RaycastData& data, int nClips = static_cast(clipNormals.size()); program.setUniform("nClips_" + id, nClips); - program.setUniform("clipNormals_" + id, clipNormals.data(), nClips); - program.setUniform("clipOffsets_" + id, clipOffsets.data(), nClips); + program.setUniform("clipNormals_" + id, clipNormals); + program.setUniform("clipOffsets_" + id, clipOffsets); program.setUniform("opacity_" + id, _opacity); program.setUniform("rNormalization_" + id, _rNormalization); program.setUniform("rUpperBound_" + id, _rUpperBound); diff --git a/modules/volume/tasks/generaterawvolumetask.cpp b/modules/volume/tasks/generaterawvolumetask.cpp index 68e889fc72..6de0d6af6a 100644 --- a/modules/volume/tasks/generaterawvolumetask.cpp +++ b/modules/volume/tasks/generaterawvolumetask.cpp @@ -101,11 +101,15 @@ void GenerateRawVolumeTask::perform(const Task::ProgressCallback& progressCallba ghoul::lua::LuaState state; ghoul::lua::runScript(state, _valueFunctionLua); +#if (defined(NDEBUG) || defined(DEBUG)) ghoul::lua::verifyStackSize(state, 1); +#endif int functionReference = luaL_ref(state, LUA_REGISTRYINDEX); +#if (defined(NDEBUG) || defined(DEBUG)) ghoul::lua::verifyStackSize(state, 0); +#endif glm::vec3 domainSize = _upperDomainBound - _lowerDomainBound; @@ -117,14 +121,18 @@ void GenerateRawVolumeTask::perform(const Task::ProgressCallback& progressCallba glm::vec3 coord = _lowerDomainBound + glm::vec3(cell) / glm::vec3(_dimensions) * domainSize; +#if (defined(NDEBUG) || defined(DEBUG)) ghoul::lua::verifyStackSize(state, 0); +#endif lua_rawgeti(state, LUA_REGISTRYINDEX, functionReference); lua_pushnumber(state, coord.x); lua_pushnumber(state, coord.y); lua_pushnumber(state, coord.z); +#if (defined(NDEBUG) || defined(DEBUG)) ghoul::lua::verifyStackSize(state, 4); +#endif if (lua_pcall(state, 3, 1, 0) != LUA_OK) { return; diff --git a/src/documentation/documentation.cpp b/src/documentation/documentation.cpp index ef1bfc8843..4cf633f28e 100644 --- a/src/documentation/documentation.cpp +++ b/src/documentation/documentation.cpp @@ -129,17 +129,20 @@ namespace openspace::documentation { const std::string DocumentationEntry::Wildcard = "*"; +std::string concatenate(const std::vector& offenses) { + std::string result = "Error in specification ("; + for (const TestResult::Offense& o : offenses) { + result += o.offender + ','; + } + result.back() = ')'; + return result; +} + SpecificationError::SpecificationError(TestResult res, std::string comp) - : ghoul::RuntimeError("Error in specification", std::move(comp)) + : ghoul::RuntimeError(concatenate(res.offenses), std::move(comp)) , result(std::move(res)) { ghoul_assert(!result.success, "Result's success must be false"); - - message += " ("; - for (const TestResult::Offense& o : result.offenses) { - message += o.offender + ','; - } - message.back() = ')'; } DocumentationEntry::DocumentationEntry(std::string k, std::shared_ptr v,