diff options
author | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-06-04 17:12:50 +0000 |
---|---|---|
committer | taw27 <taw27@84d2e878-0bd5-11dd-ad15-13eda11d74c5> | 2008-06-04 17:12:50 +0000 |
commit | f30bb8be1f801d66590699e317fae455e35af3eb (patch) | |
tree | 70fb459c8ff2933fa5adbf05a2cf372c55c5b947 /src/render.c | |
parent | 347c83d7467af1f21e7a85088936aa7a6da13cc3 (diff) |
More matching non-shader graphics to shader graphics
git-svn-id: svn://cook.msm.cam.ac.uk:745/thrust3d/thrust3d@70 84d2e878-0bd5-11dd-ad15-13eda11d74c5
Diffstat (limited to 'src/render.c')
-rw-r--r-- | src/render.c | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/src/render.c b/src/render.c index 580c7ad..d64f2cf 100644 --- a/src/render.c +++ b/src/render.c @@ -325,6 +325,8 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC glMaterialfv(GL_FRONT, GL_EMISSION, black); glColor3f(1.0, 1.0, 1.0); } + + /* Set specular colour and shininess if required */ if ( p->attribs & ATTRIB_SHINY ) { GLfloat white[] = {1.0, 1.0, 1.0, 1.0}; glMaterialfv(GL_FRONT, GL_SPECULAR, white); @@ -404,7 +406,7 @@ static int render_model_instance_draw(ModelInstance *instance, Uint32 t, RenderC if ( r->fbos ) { glBindTexture(GL_TEXTURE_2D, r->fbotex); glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD); if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_enabled"), 1); if ( r->shaders ) glUniform1i(glGetUniformLocation(r->lighting_program, "texture_emits"), 1); } @@ -530,13 +532,13 @@ static void render_setup_lighting(Game *game) { pos[1] = 0.8; pos[2] = 4.0; pos[3] = 0.0; - diffuse[0] = 0.1; - diffuse[1] = 0.1; - diffuse[2] = 0.1; + diffuse[0] = 0.2; + diffuse[1] = 0.2; + diffuse[2] = 0.2; diffuse[3] = 1.0; - specular[0] = 0.01; - specular[1] = 0.01; - specular[2] = 0.01; + specular[0] = 0.8; + specular[1] = 0.8; + specular[2] = 0.8; specular[3] = 1.0; ambient[0] = 0.0; ambient[1] = 0.0; @@ -548,6 +550,27 @@ static void render_setup_lighting(Game *game) { glLightfv(GL_LIGHT1, GL_AMBIENT, ambient); glEnable(GL_LIGHT1); + pos[0] = -1.0; + pos[1] = 0.8; + pos[2] = 4.0; + pos[3] = 0.0; + diffuse[0] = 0.3; + diffuse[1] = 0.3; + diffuse[2] = 0.3; + diffuse[3] = 1.0; + specular[0] = 1.0; + specular[1] = 1.0; + specular[2] = 1.0; + specular[3] = 1.0; + ambient[0] = 0.0; + ambient[1] = 0.0; + ambient[2] = 0.0; + ambient[3] = 1.0; + glLightfv(GL_LIGHT2, GL_POSITION, pos); + glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT2, GL_SPECULAR, specular); + glLightfv(GL_LIGHT2, GL_AMBIENT, ambient); + } void render_set_wireframe(int wireframe) { @@ -711,18 +734,18 @@ void render_draw(Game *game, Uint32 t) { render_draw_stuff(game, t); /* Finally, draw the lander */ - GLfloat pos[] = { -1.0, 0.8, 4.0, 0.0 }; - GLfloat diffuse[] = { 0.4, 0.4, 0.4, 1.0 }; - GLfloat specular[] = { 0.1, 0.1, 0.1, 1.0 }; - glLightfv(GL_LIGHT2, GL_POSITION, pos); - glLightfv(GL_LIGHT2, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT2, GL_SPECULAR, specular); glEnable(GL_LIGHT2); + glDisable(GL_LIGHT0); + glDisable(GL_LIGHT1); + GLfloat amb[] = { 0.3, 0.3, 0.3, 1.0 }; + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, amb); glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); + if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "fill_light_enabled"), 1); render_model_instance_draw(game->lander, t, r, NULL); + if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "fill_light_enabled"), 0); glPopClientAttrib(); if ( r->shaders ) glUniform1i(glGetUniformLocation(game->render->lighting_program, "texture_enabled"), 0); render_draw_line(game->lander->x, game->lander->y, game->lander->z, game->lander->x, game->lander->y, game->lander->z-200.0); |