void R_UpdateTextureInfo(const entity_render_t *ent, texture_t *t)
{
+ texture_t *texture = t;
model_t *model = ent->model;
int s = ent->skinnum;
if ((unsigned int)s >= (unsigned int)model->numskins)
s = model->skinscenes[s].firstframe;
}
if (s > 0)
- t = t->currentframe = t + s * model->num_surfaces;
+ t = t + s * model->num_surfaces;
if (t->animated)
- t = t->currentframe = t->anim_frames[ent->frame != 0][(t->anim_total[ent->frame != 0] >= 2) ? ((int)(r_refdef.time * 5.0f) % t->anim_total[ent->frame != 0]) : 0];
+ t = t->anim_frames[ent->frame != 0][(t->anim_total[ent->frame != 0] >= 2) ? ((int)(r_refdef.time * 5.0f) % t->anim_total[ent->frame != 0]) : 0];
+ texture->currentframe = t;
t->currentmaterialflags = t->basematerialflags;
t->currentalpha = ent->alpha;
if (t->basematerialflags & MATERIALFLAG_WATERALPHA)
qboolean lightmodel = false;
rtexture_t *basetexture;
rmeshstate_t m;
- texture = texture->currentframe;
if (texture->currentmaterialflags & MATERIALFLAG_NODRAW)
return;
c_faces += texturenumsurfaces;
m.texrgbscale[1] = 2;
m.pointer_color = varray_color4f;
R_Mesh_State(&m);
- colorscale = 1;
+ // transparent is not affected by r_lightmapintensity
+ if (!(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT))
+ colorscale = r_lightmapintensity;
+ else
+ colorscale = 1;
r = ent->colormod[0] * colorscale;
g = ent->colormod[1] * colorscale;
b = ent->colormod[2] * colorscale;
GL_LockArrays(0, 0);
}
}
- else if (dolightmap && !(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT))
+ else if (dolightmap && !(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT) && !lightmodel)
{
// single texture
GL_BlendFunc(GL_ONE, GL_ZERO);
R_Mesh_TexBind(0, R_GetTexture(surface->lightmaptexture));
R_Mesh_ColorPointer(NULL);
}
- else //if (r == 1 && g == 1 && b == 1)
+ else
{
R_Mesh_TexBind(0, R_GetTexture(r_texture_white));
R_Mesh_ColorPointer(surface->groupmesh->data_lightmapcolor4f);
if (waterscrolling)
m.texmatrix[0] = r_waterscrollmatrix;
m.pointer_color = varray_color4f;
- colorscale = 1;
+ colorscale = 2;
if (gl_combine.integer)
{
- m.texrgbscale[0] = 4;
- colorscale *= 0.25f;
+ m.texrgbscale[0] = 2;
+ colorscale = 1;
}
+ // transparent is not affected by r_lightmapintensity
+ if (!(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT))
+ colorscale *= r_lightmapintensity;
R_Mesh_State(&m);
r = ent->colormod[0] * colorscale;
g = ent->colormod[1] * colorscale;
colorscale = 1;
if (gl_combine.integer)
{
- m.texrgbscale[0] = 4;
- colorscale *= 0.25f;
+ m.texrgbscale[0] = 2;
+ colorscale *= 0.5f;
}
+ // transparent is not affected by r_lightmapintensity
+ if (!(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT))
+ colorscale *= r_lightmapintensity;
R_Mesh_State(&m);
r = ent->colormod[0] * colorpants[0] * colorscale;
g = ent->colormod[1] * colorpants[1] * colorscale;
colorscale = 1;
if (gl_combine.integer)
{
- m.texrgbscale[0] = 4;
- colorscale *= 0.25f;
+ m.texrgbscale[0] = 2;
+ colorscale *= 0.5f;
}
+ // transparent is not affected by r_lightmapintensity
+ if (!(texture->currentmaterialflags & MATERIALFLAG_TRANSPARENT))
+ colorscale *= r_lightmapintensity;
R_Mesh_State(&m);
r = ent->colormod[0] * colorshirt[0] * colorscale;
g = ent->colormod[1] * colorshirt[1] * colorscale;
colorscale = 1;
if (gl_combine.integer)
{
- m.texrgbscale[0] = 4;
- colorscale *= 0.25f;
+ m.texrgbscale[0] = 2;
+ colorscale *= 0.5f;
}
R_Mesh_State(&m);
base = r_ambient.value * (1.0f / 64.0f);
numsurfacelist = 0;
}
t = surface->texture;
- f = t->currentmaterialflags & flagsmask;
texture = t->currentframe;
+ f = texture->currentmaterialflags & flagsmask;
}
if (f && surface->num_triangles)
{
numsurfacelist = 0;
}
t = surface->texture;
- f = t->currentmaterialflags & flagsmask;
texture = t->currentframe;
+ f = texture->currentmaterialflags & flagsmask;
}
if (f && surface->num_triangles)
{