diff --git a/assets/shaders/terrain.frag b/assets/shaders/terrain.frag index 8fa878a9..14b702ff 100644 --- a/assets/shaders/terrain.frag +++ b/assets/shaders/terrain.frag @@ -32,9 +32,6 @@ uniform vec3 uAmbientColor; // Camera uniform vec3 uViewPos; -// HDR specular -uniform float uSpecularIntensity; - // Fog uniform vec3 uFogColor; uniform float uFogStart; @@ -78,14 +75,8 @@ void main() { diff = max(diff, 0.2); // Minimum light to prevent completely dark faces vec3 diffuse = diff * uLightColor * finalColor.rgb; - // Specular lighting (subtle for terrain) - vec3 viewDir = normalize(uViewPos - FragPos); - vec3 halfwayDir = normalize(lightDir + viewDir); - float spec = pow(max(dot(norm, halfwayDir), 0.0), 32.0); - vec3 specular = spec * uLightColor * uSpecularIntensity; - - // Combine lighting - vec3 result = ambient + diffuse + specular; + // Combine lighting (terrain is purely diffuse — no specular on ground) + vec3 result = ambient + diffuse; // Apply fog float distance = length(uViewPos - FragPos); diff --git a/src/rendering/renderer.cpp b/src/rendering/renderer.cpp index 3c61ad44..34df12e9 100644 --- a/src/rendering/renderer.cpp +++ b/src/rendering/renderer.cpp @@ -1176,9 +1176,9 @@ void Renderer::initPostProcess(int w, int h) { out vec4 FragColor; void main() { vec3 color = texture(uScene, vUV).rgb; - float exposure = 1.8; - color *= exposure; - vec3 mapped = color / (color + vec3(1.0)); + // Shoulder tonemap: identity below 0.9, soft rolloff above + vec3 excess = max(color - 0.9, 0.0); + vec3 mapped = min(color, vec3(0.9)) + 0.1 * excess / (excess + 0.1); FragColor = vec4(mapped, 1.0); } )"; diff --git a/src/rendering/terrain_renderer.cpp b/src/rendering/terrain_renderer.cpp index 857e87c3..c79e04ab 100644 --- a/src/rendering/terrain_renderer.cpp +++ b/src/rendering/terrain_renderer.cpp @@ -324,7 +324,6 @@ void TerrainRenderer::render(const Camera& camera) { // Set lighting shader->setUniform("uLightDir", glm::vec3(lightDir[0], lightDir[1], lightDir[2])); shader->setUniform("uLightColor", glm::vec3(lightColor[0], lightColor[1], lightColor[2])); - shader->setUniform("uSpecularIntensity", 0.5f); shader->setUniform("uAmbientColor", glm::vec3(ambientColor[0], ambientColor[1], ambientColor[2])); // Set camera position