]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_shadow.c
some const fixes and type fixes found by gcc -combine
[xonotic/darkplaces.git] / r_shadow.c
index e3de2afb8a2a14b42a2f82a1bd644a4e27587809..0091ada67abbe8c956cf1593c111063d49ab09f4 100644 (file)
@@ -1051,7 +1051,7 @@ void R_Shadow_RenderMode_Begin(void)
                r_shadow_lightingrendermode = R_SHADOW_RENDERMODE_LIGHT_VERTEX;
 }
 
-void R_Shadow_RenderMode_ActiveLight(rtlight_t *rtlight)
+void R_Shadow_RenderMode_ActiveLight(const rtlight_t *rtlight)
 {
        rsurface.rtlight = rtlight;
 }
@@ -1550,8 +1550,11 @@ static void R_Shadow_RenderLighting_Light_GLSL(int firstvertex, int numvertices,
        }
        //R_Mesh_TexBindCubeMap(GL20TU_CUBE, R_GetTexture(rsurface.rtlight->currentcubemap));
        R_Mesh_TexBind(GL20TU_FOGMASK, R_GetTexture(r_texture_fogattenuation));
-       R_Mesh_TexBind(GL20TU_PANTS, R_GetTexture(rsurface.texture->currentskinframe->pants));
-       R_Mesh_TexBind(GL20TU_SHIRT, R_GetTexture(rsurface.texture->currentskinframe->shirt));
+       if(rsurface.texture->colormapping)
+       {
+               R_Mesh_TexBind(GL20TU_PANTS, R_GetTexture(rsurface.texture->currentskinframe->pants));
+               R_Mesh_TexBind(GL20TU_SHIRT, R_GetTexture(rsurface.texture->currentskinframe->shirt));
+       }
        R_Mesh_TexBind(GL20TU_ATTENUATION, R_GetTexture(r_shadow_attenuationgradienttexture));
        R_Mesh_TexCoordPointer(0, 2, rsurface.texcoordtexture2f, rsurface.texcoordtexture2f_bufferobject, rsurface.texcoordtexture2f_bufferoffset);
        R_Mesh_TexCoordPointer(1, 3, rsurface.svector3f, rsurface.svector3f_bufferobject, rsurface.svector3f_bufferoffset);
@@ -3414,14 +3417,12 @@ rtexture_t *R_Shadow_Cubemap(const char *basename)
        int i;
        for (i = 0;i < numcubemaps;i++)
                if (!strcasecmp(cubemaps[i].basename, basename))
-                       return cubemaps[i].texture;
+                       return cubemaps[i].texture ? cubemaps[i].texture : r_texture_whitecube;
        if (i >= MAX_CUBEMAPS)
                return r_texture_whitecube;
        numcubemaps++;
        strlcpy(cubemaps[i].basename, basename, sizeof(cubemaps[i].basename));
        cubemaps[i].texture = R_Shadow_LoadCubemap(cubemaps[i].basename);
-       if (!cubemaps[i].texture)
-               cubemaps[i].texture = r_texture_whitecube;
        return cubemaps[i].texture;
 }
 
@@ -3432,7 +3433,8 @@ void R_Shadow_FreeCubemaps(void)
        {
                if (developer_loading.integer)
                        Con_Printf("unloading cubemap \"%s\"\n", cubemaps[i].basename);
-               R_FreeTexture(cubemaps[i].texture);
+               if (cubemaps[i].texture)
+                       R_FreeTexture(cubemaps[i].texture);
        }
 
        numcubemaps = 0;