diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2016-03-08 08:42:20 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2016-03-08 08:42:20 -0500 |
commit | 82c75b0a97eba2f78206d3b97d47eaa580a82f0c (patch) | |
tree | 90116b676fc5b8cef16fbea8b07c4951dd645ea4 /src/world.cpp | |
parent | 02419534e3a0753abc74d8d15b1dc8ac0e3b31a7 (diff) |
world lighting fixed
Diffstat (limited to 'src/world.cpp')
-rw-r--r-- | src/world.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/world.cpp b/src/world.cpp index 4de6e39..0a84c20 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -407,6 +407,13 @@ draw( Player *p ) // world width in pixels int width = worldData.size() * HLINE; + // shade value for GLSL + float shadeAmbient = -worldShade / 50.0f + 0.5f; // -0.5f to 1.5f + if ( shadeAmbient < 0 ) + shadeAmbient = 0; + else if ( shadeAmbient > 0.9f ) + shadeAmbient = 1; + /* * Draw background images. */ @@ -459,7 +466,7 @@ draw( Player *p ) glEnable( GL_TEXTURE_2D ); bgTex->bindNext(); - safeSetColorA( 150 - shadeBackground, 150 - shadeBackground, 150 - shadeBackground, 220 ); + safeSetColorA( 150 + shadeBackground * 2, 150 + shadeBackground * 2, 150 + shadeBackground * 2, 255 ); glBegin( GL_QUADS ); for ( i = 0; i <= (int)(worldData.size() * HLINE / 1920); i++ ) { @@ -472,7 +479,7 @@ draw( Player *p ) for ( i = 0; i < 4; i++ ) { bgTex->bindNext(); - safeSetColorA( bgDraw[i][0] - shadeBackground, bgDraw[i][0] - shadeBackground, bgDraw[i][0] - shadeBackground, bgDraw[i][1] ); + safeSetColorA( bgDraw[i][0] + shadeBackground * 2, bgDraw[i][0] + shadeBackground * 2, bgDraw[i][0] + shadeBackground * 2, bgDraw[i][1] ); glBegin( GL_QUADS ); for( int j = worldStart; j <= -worldStart; j += 600 ){ @@ -534,7 +541,7 @@ draw( Player *p ) glUseProgram( shaderProgram ); glUniform1i( glGetUniformLocation( shaderProgram, "sampler"), 0 ); - glUniform1f( glGetUniformLocation( shaderProgram, "amb" ), -worldShade / 50.0f ); + glUniform1f( glGetUniformLocation( shaderProgram, "amb" ), shadeAmbient ); if ( p->light ) { pointArray[2 * (light.size() + 1) ] = (float)( p->loc.x + SCREEN_WIDTH / 2 ); @@ -1196,7 +1203,7 @@ void IndoorWorld::draw(Player *p){ glUseProgram( shaderProgram ); glUniform1i( glGetUniformLocation( shaderProgram, "sampler"), 0 ); - glUniform1f( glGetUniformLocation( shaderProgram, "amb" ), 0.5f - worldShade / 50.0f ); + glUniform1f( glGetUniformLocation( shaderProgram, "amb" ), 0.3f ); if ( p->light ) { pointArray[2 * (light.size() + 1) ] = (float)( p->loc.x + SCREEN_WIDTH / 2 ); |