diff --git a/src/render/opengl/OpenGLWater.cpp b/src/render/opengl/OpenGLWater.cpp index dddf6ec..6ef79b5 100644 --- a/src/render/opengl/OpenGLWater.cpp +++ b/src/render/opengl/OpenGLWater.cpp @@ -4,6 +4,9 @@ #include "OpenGLShaderProgram.h" #include "OpenGLSharedState.h" #include "WaterRenderer.h" +#include "Scenery.h" +#include "WaterDefinition.h" +#include "SurfaceMaterial.h" OpenGLWater::OpenGLWater(OpenGLRenderer *renderer): OpenGLPart(renderer) @@ -34,6 +37,9 @@ void OpenGLWater::update() { double water_height = renderer->getWaterRenderer()->getHeightInfo().max_height; renderer->getSharedState()->set("waterHeight", water_height); + + Color water_color = renderer->getScenery()->getWater()->material->_rgb; + renderer->getSharedState()->set("waterColor", water_color); } void OpenGLWater::render() diff --git a/src/render/opengl/shaders/water.frag b/src/render/opengl/shaders/water.frag index 9ef198a..a4318fc 100644 --- a/src/render/opengl/shaders/water.frag +++ b/src/render/opengl/shaders/water.frag @@ -1,6 +1,8 @@ +uniform vec4 waterColor; + void main(void) { - gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); + gl_FragColor = waterColor; float yoffset = GROUND_OFFSET - waterHeight; vec3 camera = vec3(cameraLocation.x, max(cameraLocation.y + yoffset, 0.0), cameraLocation.z);