+ m.tex[0] = R_GetTexture(texture->skin.base);
+ colorscale = r_colorscale;
+ if (gl_combine.integer)
+ {
+ m.texrgbscale[0] = 4;
+ colorscale *= 0.25f;
+ }
+ base = ent->effects & EF_FULLBRIGHT ? 2.0f : r_ambient.value * (1.0f / 64.0f);
+ R_Mesh_State(&m);
+ GL_UseColorArray();
+ for (mesh = surf->mesh;mesh;mesh = mesh->chain)
+ {
+ R_Mesh_GetSpace(mesh->numverts);
+ R_Mesh_CopyVertex3f(mesh->vertex3f, mesh->numverts);
+ R_Mesh_CopyTexCoord2f(0, mesh->texcoordtexture2f, mesh->numverts);
+ R_FillColors(varray_color4f, mesh->numverts, base, base, base, currentalpha);
+ if (!(ent->effects & EF_FULLBRIGHT))
+ {
+ if (surf->dlightframe == r_framecount)
+ RSurf_LightSeparate_Vertex3f_Color4f(&ent->inversematrix, surf->dlightbits, mesh->numverts, mesh->vertex3f, varray_color4f, 1);
+ if (surf->flags & SURF_LIGHTMAP)
+ RSurf_AddLightmapToVertexColors_Color4f(mesh->lightmapoffsets, varray_color4f, mesh->numverts, surf->samples, ((surf->extents[0]>>4)+1)*((surf->extents[1]>>4)+1)*3, surf->styles);
+ }
+ RSurf_FogColors_Vertex3f_Color4f(mesh->vertex3f, varray_color4f, colorscale, mesh->numverts, modelorg);
+ R_Mesh_Draw(mesh->numverts, mesh->numtriangles, mesh->element3i);
+ }
+}
+
+static void RSurfShader_Wall_Pass_Glow(const entity_render_t *ent, const msurface_t *surf, const texture_t *texture, int rendertype, float currentalpha)
+{
+ const surfmesh_t *mesh;
+ rmeshstate_t m;
+ float modelorg[3];
+ Matrix4x4_Transform(&ent->inversematrix, r_origin, modelorg);
+ memset(&m, 0, sizeof(m));
+ m.blendfunc1 = GL_SRC_ALPHA;
+ m.blendfunc2 = GL_ONE;
+ m.tex[0] = R_GetTexture(texture->skin.glow);
+ R_Mesh_State(&m);
+ GL_UseColorArray();
+ for (mesh = surf->mesh;mesh;mesh = mesh->chain)
+ {
+ R_Mesh_GetSpace(mesh->numverts);
+ R_Mesh_CopyVertex3f(mesh->vertex3f, mesh->numverts);
+ R_Mesh_CopyTexCoord2f(0, mesh->texcoordtexture2f, mesh->numverts);
+ RSurf_FoggedColors_Vertex3f_Color4f(mesh->vertex3f, varray_color4f, 1, 1, 1, currentalpha, r_colorscale, mesh->numverts, modelorg);
+ R_Mesh_Draw(mesh->numverts, mesh->numtriangles, mesh->element3i);
+ }
+}
+
+static void RSurfShader_Wall_Pass_Fog(const entity_render_t *ent, const msurface_t *surf, const texture_t *texture, int rendertype, float currentalpha)
+{
+ const surfmesh_t *mesh;
+ rmeshstate_t m;
+ float modelorg[3];
+ Matrix4x4_Transform(&ent->inversematrix, r_origin, modelorg);
+ memset(&m, 0, sizeof(m));
+ m.blendfunc1 = GL_SRC_ALPHA;
+ m.blendfunc2 = GL_ONE;
+ m.tex[0] = R_GetTexture(texture->skin.fog);
+ R_Mesh_State(&m);
+ GL_UseColorArray();