for (i = (SHADERPERMUTATION_MAX >> 1);;i>>=1)
{
if (!i)
+ {
+ Con_Printf("OpenGL 2.0 shaders disabled - unable to find a working shader permutation fallback on this driver (set r_glsl 1 if you want to try again)\n");
+ Cvar_SetValueQuick(&r_glsl, 0);
return 0; // no bit left to clear
+ }
// reduce i more quickly whenever it would not remove any bits
if (!(permutation & i))
continue;
t->specularscale = 0;
}
- t->currentpolygonfactor = r_refdef.polygonfactor;
- t->currentpolygonoffset = r_refdef.polygonoffset;
+ t->currentpolygonfactor = r_refdef.polygonfactor + t->basepolygonfactor;
+ t->currentpolygonoffset = r_refdef.polygonoffset + t->basepolygonoffset;
// submodels are biased to avoid z-fighting with world surfaces that they
// may be exactly overlapping (avoids z-fighting artifacts on certain
// doors and things in Quake maps)
if (ent->model->brush.submodel)
{
- t->currentpolygonfactor = r_refdef.polygonfactor + r_polygonoffset_submodel_factor.value;
- t->currentpolygonoffset = r_refdef.polygonoffset + r_polygonoffset_submodel_offset.value;
+ t->currentpolygonfactor += r_polygonoffset_submodel_factor.value;
+ t->currentpolygonoffset += r_polygonoffset_submodel_offset.value;
}
VectorClear(t->dlightcolor);