From c5fbd74f5309bae2ee6bed07bc0c069f892d167f Mon Sep 17 00:00:00 2001 From: havoc Date: Wed, 5 Nov 2003 04:10:10 +0000 Subject: [PATCH] added r_ambient support to q3bsp rendering git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3624 d7cf8633-e32d-0410-b094-e92efae38249 --- gl_rsurf.c | 23 ++++++++++++++++++++--- model_brush.c | 6 +++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/gl_rsurf.c b/gl_rsurf.c index 3e237555..66657665 100644 --- a/gl_rsurf.c +++ b/gl_rsurf.c @@ -1832,7 +1832,7 @@ void R_Q3BSP_DrawFace_OpaqueWall_Pass_OpaqueGlow(entity_render_t *ent, q3mface_t R_Mesh_Draw(face->num_vertices, face->num_triangles, face->data_element3i); } -void R_Q3BSP_DrawFace_OpaqueWall_Pass_TextureLightmap(entity_render_t *ent, q3mface_t *face) +void R_Q3BSP_DrawFace_OpaqueWall_Pass_TextureLightmapCombine(entity_render_t *ent, q3mface_t *face) { rmeshstate_t m; memset(&m, 0, sizeof(m)); @@ -1916,6 +1916,21 @@ void R_Q3BSP_DrawFace_OpaqueWall_Pass_TextureVertex(entity_render_t *ent, q3mfac R_Mesh_Draw(face->num_vertices, face->num_triangles, face->data_element3i); } +void R_Q3BSP_DrawFace_OpaqueWall_Pass_AddTextureAmbient(entity_render_t *ent, q3mface_t *face) +{ + rmeshstate_t m; + memset(&m, 0, sizeof(m)); + GL_BlendFunc(GL_ONE, GL_ONE); + GL_DepthMask(true); + GL_DepthTest(true); + m.tex[0] = R_GetTexture(face->texture->skin.base); + m.pointer_texcoord[0] = face->data_texcoordtexture2f; + GL_Color(r_ambient.value * (1.0f / 128.0f), r_ambient.value * (1.0f / 128.0f), r_ambient.value * (1.0f / 128.0f), 1); + R_Mesh_State_Texture(&m); + GL_VertexPointer(face->data_vertex3f); + R_Mesh_Draw(face->num_vertices, face->num_triangles, face->data_element3i); +} + void R_Q3BSP_DrawFace(entity_render_t *ent, q3mface_t *face) { if (!face->num_triangles) @@ -1935,8 +1950,8 @@ void R_Q3BSP_DrawFace(entity_render_t *ent, q3mface_t *face) R_Q3BSP_DrawFace_OpaqueWall_Pass_OpaqueGlow(ent, face); else if (face->lightmaptexture) { - if (r_textureunits.integer >= 2) - R_Q3BSP_DrawFace_OpaqueWall_Pass_TextureLightmap(ent, face); + if (r_textureunits.integer >= 2 && gl_combine.integer) + R_Q3BSP_DrawFace_OpaqueWall_Pass_TextureLightmapCombine(ent, face); else { R_Q3BSP_DrawFace_OpaqueWall_Pass_Texture(ent, face); @@ -1951,6 +1966,8 @@ void R_Q3BSP_DrawFace(entity_render_t *ent, q3mface_t *face) if (face->texture->skin.glow) R_Q3BSP_DrawFace_OpaqueWall_Pass_Glow(ent, face); } + if (r_ambient.value) + R_Q3BSP_DrawFace_OpaqueWall_Pass_AddTextureAmbient(ent, face); if (face->texture->nativecontents & CONTENTSQ3_TRANSLUCENT) qglEnable(GL_CULL_FACE); } diff --git a/model_brush.c b/model_brush.c index c6722f26..f2f9e833 100644 --- a/model_brush.c +++ b/model_brush.c @@ -4178,9 +4178,9 @@ static void Mod_Q3BSP_LightPoint(model_t *model, const vec3_t p, vec3_t ambientc // FIXME: write this if (!model->brushq3.num_lightgrid) { - ambientcolor[0] += 128; - ambientcolor[1] += 128; - ambientcolor[2] += 128; + ambientcolor[0] = 1; + ambientcolor[1] = 1; + ambientcolor[2] = 1; return; } Matrix4x4_Transform(&model->brushq3.num_lightgrid_indexfromworld, p, transformed); -- 2.39.2