diff --git a/renderer.cpp b/renderer.cpp index a1bdf8d6..0eedf0db 100644 --- a/renderer.cpp +++ b/renderer.cpp @@ -210,18 +210,14 @@ opengl_renderer::Render() { World.Camera.SetMatrix( worldcamera ); m_camera.update_frustum( OpenGLMatrices.data( GL_PROJECTION ), worldcamera); ::glMultMatrixd(glm::value_ptr(glm::dmat4(glm::dmat3(worldcamera)))); + shader.bind(); active_shader = &shader; glDebug("rendering environment"); glDisable(GL_FRAMEBUFFER_SRGB); Render( &World.Environment ); glDebug("rendering world"); glEnable(GL_FRAMEBUFFER_SRGB); - shader.bind(); active_shader = &shader; - glm::vec3 transdiff = Global::daylight.direction * 50.0f; - glm::mat3 rotdiff = glm::inverse(glm::mat3(depthcam)) * glm::mat3(worldcamera); - glm::mat4 lv = depthproj * glm::translate(glm::mat4(rotdiff), transdiff); - - shader.set_lightview(lv); + shader.set_lightview(depthproj * depthcam); //to jest źle. nie uwzględnia przesunięcia to wiadomo, ale obrót też jest źle Render( &World.Ground ); glDebug("rendering cab"); diff --git a/shaders/blinnphong.frag b/shaders/blinnphong.frag index 01fd8593..cd4245e8 100644 --- a/shaders/blinnphong.frag +++ b/shaders/blinnphong.frag @@ -45,7 +45,7 @@ float calc_shadow() coords = coords * 0.5 + 0.5; float closest_depth = texture(shadowmap, coords.xy).r; float current_depth = coords.z; - float shadow = current_depth > closest_depth ? 0.0 : 1.0; + float shadow = (current_depth - 0.1) > closest_depth ? 0.0 : 1.0; return shadow; } diff --git a/shaders/lighting.vert b/shaders/lighting.vert index e5ddf030..4e3b3cae 100644 --- a/shaders/lighting.vert +++ b/shaders/lighting.vert @@ -20,6 +20,5 @@ void main() f_normal = modelviewnormal * v_normal; f_coord = v_coord; f_pos = vec3(modelview * vec4(v_vert, 1.0f)); - //f_light_pos = lightview * vec4(f_pos, 1.0f); f_light_pos = lightview * vec4(f_pos, 1.0f); } \ No newline at end of file