mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-05 10:59:47 -05:00
Fixed unforms problems when eclipses are activated. (#797)
* Fixed unforms problems when eclipses are activated.
This commit is contained in:
committed by
Alexander Bock
parent
55979fa2c8
commit
9325e7fac3
@@ -989,7 +989,7 @@ void RenderableGlobe::renderChunkGlobally(const Chunk& chunk, const RenderData&
|
||||
if (_generalProperties.eclipseShadowsEnabled &&
|
||||
!_ellipsoid.shadowConfigurationArray().empty())
|
||||
{
|
||||
calculateEclipseShadows(program, data);
|
||||
calculateEclipseShadows(program, data, ShadowCompType::GLOBAL_SHADOW);
|
||||
}
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@@ -1103,7 +1103,7 @@ void RenderableGlobe::renderChunkLocally(const Chunk& chunk, const RenderData& d
|
||||
if (_generalProperties.eclipseShadowsEnabled &&
|
||||
!_ellipsoid.shadowConfigurationArray().empty())
|
||||
{
|
||||
calculateEclipseShadows(program, data);
|
||||
calculateEclipseShadows(program, data, ShadowCompType::LOCAL_SHADOW);
|
||||
}
|
||||
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
@@ -1632,7 +1632,7 @@ float RenderableGlobe::getHeight(const glm::dvec3& position) const {
|
||||
}
|
||||
|
||||
void RenderableGlobe::calculateEclipseShadows(ghoul::opengl::ProgramObject& programObject,
|
||||
const RenderData& data)
|
||||
const RenderData& data, ShadowCompType stype)
|
||||
{
|
||||
constexpr const double KM_TO_M = 1000.0;
|
||||
|
||||
@@ -1747,16 +1747,22 @@ void RenderableGlobe::calculateEclipseShadows(ghoul::opengl::ProgramObject& prog
|
||||
counter++;
|
||||
}
|
||||
|
||||
programObject.setUniform(
|
||||
"inverseViewTransform",
|
||||
glm::inverse(data.camera.combinedViewMatrix())
|
||||
);
|
||||
programObject.setUniform("modelTransform", _cachedModelTransform);
|
||||
programObject.setUniform(
|
||||
if (stype == ShadowCompType::LOCAL_SHADOW) {
|
||||
programObject.setUniform(
|
||||
"inverseViewTransform",
|
||||
glm::inverse(data.camera.combinedViewMatrix())
|
||||
);
|
||||
}
|
||||
else if (stype == ShadowCompType::GLOBAL_SHADOW) {
|
||||
programObject.setUniform("modelTransform", _cachedModelTransform);
|
||||
}
|
||||
|
||||
// JCC: Removed in favor of: #define USE_ECLIPSE_HARD_SHADOWS #{useEclipseHardShadows}
|
||||
/*programObject.setUniform(
|
||||
"hardShadows",
|
||||
_generalProperties.eclipseHardShadows
|
||||
);
|
||||
programObject.setUniform("calculateEclipseShadows", true);
|
||||
);*/
|
||||
//programObject.setUniform("calculateEclipseShadows", true);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -68,6 +68,11 @@ struct Chunk {
|
||||
std::array<Chunk*, 4> children = { { nullptr, nullptr, nullptr, nullptr } };
|
||||
};
|
||||
|
||||
enum class ShadowCompType {
|
||||
GLOBAL_SHADOW,
|
||||
LOCAL_SHADOW
|
||||
};
|
||||
|
||||
/**
|
||||
* A RenderableGlobe is a globe modeled as an ellipsoid using a chunked LOD algorithm for
|
||||
* rendering.
|
||||
@@ -192,7 +197,7 @@ private:
|
||||
|
||||
|
||||
void calculateEclipseShadows(ghoul::opengl::ProgramObject& programObject,
|
||||
const RenderData& data);
|
||||
const RenderData& data, ShadowCompType stype);
|
||||
|
||||
void setCommonUniforms(ghoul::opengl::ProgramObject& programObject,
|
||||
const Chunk& chunk, const RenderData& data);
|
||||
|
||||
Reference in New Issue
Block a user