16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 03:09:18 +02:00

cab shadows stability fix

This commit is contained in:
tmj-fstate
2018-02-09 20:31:20 +01:00
parent ee8ba3c205
commit e9c4714780

View File

@@ -175,10 +175,12 @@ opengl_renderer::Init( GLFWwindow *Window ) {
light.id = GL_LIGHT1 + idx;
light.is_directional = false;
::glEnable( light.id ); // experimental intel chipset fix
::glLightf( light.id, GL_SPOT_CUTOFF, 7.5f );
::glLightf( light.id, GL_SPOT_EXPONENT, 7.5f );
::glLightf( light.id, GL_CONSTANT_ATTENUATION, 0.0f );
::glLightf( light.id, GL_LINEAR_ATTENUATION, 0.035f );
::glDisable( light.id ); // experimental intel chipset fix
m_lights.emplace_back( light );
}
@@ -412,12 +414,27 @@ opengl_renderer::Render() {
+= "frame: " + to_string( Timer::subsystem.gfx_color.average(), 2 ) + " msec (" + std::to_string( m_cellqueue.size() ) + " sectors) "
+= "gpu side: " + to_string( Timer::subsystem.gfx_swap.average(), 2 ) + " msec "
+= "(" + to_string( Timer::subsystem.gfx_color.average() + Timer::subsystem.gfx_swap.average(), 2 ) + " msec total)";
m_debugstatstext =
"drawcalls: " + to_string( m_debugstats.drawcalls )
+ "; dyn: " + to_string( m_debugstats.dynamics ) + " mod: " + to_string( m_debugstats.models ) + " sub: " + to_string( m_debugstats.submodels )
+ "; trk: " + to_string( m_debugstats.paths ) + " shp: " + to_string( m_debugstats.shapes )
+ " trc: " + to_string( m_debugstats.traction ) + " lin: " + to_string( m_debugstats.lines );
/*
float lightcutoff{},
lightexponent{},
lightconstant{},
lightlinear{};
::glGetLightfv( GL_LIGHT1, GL_SPOT_CUTOFF, &lightcutoff );
::glGetLightfv( GL_LIGHT1, GL_SPOT_EXPONENT, &lightexponent );
::glGetLightfv( GL_LIGHT1, GL_CONSTANT_ATTENUATION, &lightconstant );
::glGetLightfv( GL_LIGHT1, GL_LINEAR_ATTENUATION, &lightlinear );
m_debugstatstext =
"light1 cutoff: " + to_string( lightcutoff, 2 )
+ " exponent: " + to_string( lightexponent, 2 )
+ " constant attn: " + to_string( lightconstant, 2 )
+ " linear attn: " + to_string( lightlinear, 3 );
*/
++m_framestamp;
return true; // for now always succeed
@@ -889,7 +906,11 @@ opengl_renderer::setup_pass( renderpass_config &Config, rendermode const Mode, f
// ...transform coordinate change back to homogenous light space...
shadowmapadjustment /= m_shadowbuffersize * 0.5f;
// ... and bake the adjustment into the projection matrix
camera.projection() = glm::translate( glm::mat4{ 1.f }, glm::vec3{ shadowmapadjustment, 0.f } ) * camera.projection();
camera.projection() =
glm::translate(
glm::mat4{ 1.f },
glm::vec3{ shadowmapadjustment, 0.f } )
* camera.projection();
break;
}
@@ -913,13 +934,14 @@ opengl_renderer::setup_pass( renderpass_config &Config, rendermode const Mode, f
-maphalfsize, maphalfsize,
-maphalfsize, maphalfsize,
-Config.draw_range, Config.draw_range );
/*
// adjust the projection to sample complete shadow map texels
auto shadowmaptexel = glm::vec2 { camera.projection() * glm::mat4{ viewmatrix } * glm::vec4{ 0.f, 0.f, 0.f, 1.f } };
shadowmaptexel *= ( m_shadowbuffersize / 2 ) * 0.5f;
auto shadowmapadjustment = glm::round( shadowmaptexel ) - shadowmaptexel;
shadowmapadjustment /= ( m_shadowbuffersize / 2 ) * 0.5f;
camera.projection() = glm::translate( glm::mat4{ 1.f }, glm::vec3{ shadowmapadjustment, 0.f } ) * camera.projection();
*/
break;
}
case rendermode::reflections: {