diff --git a/modules/globebrowsing/rendering/chunkrenderer.cpp b/modules/globebrowsing/rendering/chunkrenderer.cpp index e17397c878..b2c50c29c6 100644 --- a/modules/globebrowsing/rendering/chunkrenderer.cpp +++ b/modules/globebrowsing/rendering/chunkrenderer.cpp @@ -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( diff --git a/modules/globebrowsing/shaders/tileheight.hglsl b/modules/globebrowsing/shaders/tileheight.hglsl index 31ae8b3a29..df7cb9673d 100644 --- a/modules/globebrowsing/shaders/tileheight.hglsl +++ b/modules/globebrowsing/shaders/tileheight.hglsl @@ -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 }