aboutsummaryrefslogtreecommitdiffstats
path: root/src/world.cpp
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2016-03-08 08:42:20 -0500
committerClyne Sullivan <tullivan99@gmail.com>2016-03-08 08:42:20 -0500
commit82c75b0a97eba2f78206d3b97d47eaa580a82f0c (patch)
tree90116b676fc5b8cef16fbea8b07c4951dd645ea4 /src/world.cpp
parent02419534e3a0753abc74d8d15b1dc8ac0e3b31a7 (diff)
world lighting fixed
Diffstat (limited to 'src/world.cpp')
-rw-r--r--src/world.cpp15
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 );