From: divverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Sat, 6 Dec 2008 20:12:41 +0000 (+0000)
Subject: support r_ambient in "eeepc mode"
X-Git-Tag: xonotic-v0.1.0preview~2022
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b53a7c37644864050eb1ffae3c9a18a33889aa24;p=xonotic%2Fdarkplaces.git

support r_ambient in "eeepc mode"


git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8568 d7cf8633-e32d-0410-b094-e92efae38249
---

diff --git a/gl_rmain.c b/gl_rmain.c
index dab42fff..e47f2bda 100644
--- a/gl_rmain.c
+++ b/gl_rmain.c
@@ -5844,6 +5844,29 @@ static void RSurf_DrawBatch_GL11_ApplyColor(int texturenumsurfaces, msurface_t *
 	rsurface.lightmapcolor4f_bufferoffset = 0;
 }
 
+static void RSurf_DrawBatch_GL11_ApplyAmbient(int texturenumsurfaces, msurface_t **texturesurfacelist)
+{
+	int texturesurfaceindex;
+	int i;
+	float *c, *c2;
+	if (!rsurface.lightmapcolor4f)
+		return;
+	for (texturesurfaceindex = 0;texturesurfaceindex < texturenumsurfaces;texturesurfaceindex++)
+	{
+		const msurface_t *surface = texturesurfacelist[texturesurfaceindex];
+		for (i = 0, c = (rsurface.lightmapcolor4f + 4 * surface->num_firstvertex), c2 = (rsurface.array_color4f + 4 * surface->num_firstvertex);i < surface->num_vertices;i++, c += 4, c2 += 4)
+		{
+			c2[0] = c[0] + r_refdef.scene.ambient / 64.0;
+			c2[1] = c[1] + r_refdef.scene.ambient / 64.0;
+			c2[2] = c[2] + r_refdef.scene.ambient / 64.0;
+			c2[3] = c[3];
+		}
+	}
+	rsurface.lightmapcolor4f = rsurface.array_color4f;
+	rsurface.lightmapcolor4f_bufferobject = 0;
+	rsurface.lightmapcolor4f_bufferoffset = 0;
+}
+
 static void RSurf_DrawBatch_GL11_Lightmap(int texturenumsurfaces, msurface_t **texturesurfacelist, float r, float g, float b, float a, qboolean applycolor, qboolean applyfog)
 {
 	// TODO: optimize
@@ -6551,6 +6574,7 @@ static void R_ProcessTextureSurfaceList(int texturenumsurfaces, msurface_t **tex
 			rsurface.lightmapcolor4f_bufferobject = rsurface.modellightmapcolor4f_bufferobject;
 			rsurface.lightmapcolor4f_bufferoffset = rsurface.modellightmapcolor4f_bufferoffset;
 			GL_Color(c[0], c[1], c[2], c[3]);
+			RSurf_DrawBatch_GL11_ApplyAmbient(texturenumsurfaces, texturesurfacelist);
 			RSurf_DrawBatch_GL11_ApplyColor(texturenumsurfaces, texturesurfacelist, c[0], c[1], c[2], c[3]);
 
 			if (rsurface.texture->currentmaterialflags & MATERIALFLAG_MODELLIGHT)