mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-09 21:21:19 -06:00
Merge pull request #389 from OpenSpace/feature/globe-normal-fix
Small Globe Normal Fix
This commit is contained in:
@@ -142,7 +142,9 @@ void ChunkRenderer::setCommonUniforms(ghoul::opengl::ProgramObject& programObjec
|
||||
chunk.owner().generalProperties().orenNayarRoughness);
|
||||
}
|
||||
|
||||
if (chunk.owner().generalProperties().useAccurateNormals) {
|
||||
if (chunk.owner().generalProperties().useAccurateNormals &&
|
||||
!_layerManager->layerGroup(layergroupid::HeightLayers).activeLayers().empty())
|
||||
{
|
||||
glm::dvec3 corner00 = chunk.owner().ellipsoid().cartesianSurfacePosition(
|
||||
chunk.surfacePatch().getCorner(Quad::SOUTH_WEST));
|
||||
glm::dvec3 corner10 = chunk.owner().ellipsoid().cartesianSurfacePosition(
|
||||
@@ -176,12 +178,6 @@ void ChunkRenderer::setCommonUniforms(ghoul::opengl::ProgramObject& programObjec
|
||||
programObject.setUniform("deltaPhi1", glm::length(deltaPhi1));
|
||||
programObject.setUniform("tileDelta", tileDelta);
|
||||
}
|
||||
|
||||
if (chunk.owner().generalProperties().performShading) {
|
||||
programObject.setUniform(
|
||||
"orenNayarRoughness",
|
||||
chunk.owner().generalProperties().orenNayarRoughness);
|
||||
}
|
||||
}
|
||||
|
||||
void ChunkRenderer::renderChunkGlobally(const Chunk& chunk, const RenderData& data){
|
||||
@@ -238,7 +234,7 @@ void ChunkRenderer::renderChunkGlobally(const Chunk& chunk, const RenderData& da
|
||||
}
|
||||
|
||||
if (chunk.owner().generalProperties().useAccurateNormals &&
|
||||
_layerManager->layerGroup(layergroupid::HeightLayers).activeLayers().size() > 0)
|
||||
!_layerManager->layerGroup(layergroupid::HeightLayers).activeLayers().empty())
|
||||
{
|
||||
// Apply an extra scaling to the height if the object is scaled
|
||||
programObject->setUniform(
|
||||
|
||||
@@ -43,13 +43,13 @@ uniform Layer HeightLayers[NUMLAYERS_HEIGHTMAP];
|
||||
uniform float heightScale;
|
||||
#endif // USE_HEIGHTMAP
|
||||
|
||||
#if USE_ACCURATE_NORMALS
|
||||
#if USE_ACCURATE_NORMALS && USE_HEIGHTMAP
|
||||
uniform float deltaTheta0;
|
||||
uniform float deltaTheta1;
|
||||
uniform float deltaPhi0;
|
||||
uniform float deltaPhi1;
|
||||
uniform float tileDelta;
|
||||
#endif //USE_ACCURATE_NORMALS
|
||||
#endif //USE_ACCURATE_NORMALS && USE_HEIGHTMAP
|
||||
|
||||
float getUntransformedTileHeight(vec2 uv, LevelWeights levelWeights) {
|
||||
float height = CHUNK_DEFAULT_HEIGHT;
|
||||
@@ -97,7 +97,7 @@ vec3 getTileNormal(vec2 uv, LevelWeights levelWeights, vec3 ellipsoidNormalCamer
|
||||
vec3 ellipsoidTangentThetaCameraSpace,
|
||||
vec3 ellipsoidTangentPhiCameraSpace)
|
||||
{
|
||||
#if USE_ACCURATE_NORMALS
|
||||
#if USE_ACCURATE_NORMALS && USE_HEIGHTMAP
|
||||
float deltaPhi = mix(deltaPhi0, deltaPhi1, uv.x);
|
||||
float deltaTheta = mix(deltaTheta0, deltaTheta1, uv.y);
|
||||
|
||||
@@ -112,7 +112,7 @@ vec3 getTileNormal(vec2 uv, LevelWeights levelWeights, vec3 ellipsoidNormalCamer
|
||||
vec3 diffPhi = deltaPhiVec + ellipsoidNormalCameraSpace * (height01 - height00);
|
||||
|
||||
return normalize(cross(diffTheta, diffPhi));
|
||||
#else // USE_ACCURATE_NORMALS
|
||||
#else // USE_ACCURATE_NORMALS && USE_HEIGHTMAP
|
||||
return ellipsoidNormalCameraSpace;
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user