]> git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
added r_ambient support to q3bsp rendering
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 5 Nov 2003 04:10:10 +0000 (04:10 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Wed, 5 Nov 2003 04:10:10 +0000 (04:10 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@3624 d7cf8633-e32d-0410-b094-e92efae38249

gl_rsurf.c
model_brush.c

index 3e237555beb2ac7c1276c5f9ce367f205f96e94f..66657665ca88e2afcff0361c4be5a0baa3cccd22 100644 (file)
@@ -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);
 }
index c6722f2645b8bcc8a143c1099ac8539ad654d7ae..f2f9e833a498cdcb5143684d6ef363f74acfe66c 100644 (file)
@@ -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);