t->currentmaterialflags |= MATERIALFLAG_SHORTDEPTHRANGE;
if (ent->flags & RENDER_VIEWMODEL)
t->currentmaterialflags |= MATERIALFLAG_SHORTDEPTHRANGE;
- if (t->backgroundnumskinframes && !(t->currentmaterialflags & MATERIALFLAG_BLENDED))
- t->currentmaterialflags |= MATERIALFLAG_VERTEXTEXTUREBLEND;
- if (t->currentmaterialflags & (MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST))
- t->currentmaterialflags |= MATERIALFLAG_SORTTRANSPARENT;
- if (t->currentmaterialflags & (MATERIALFLAG_REFRACTION | MATERIALFLAG_WATER))
- t->currentmaterialflags &= ~MATERIALFLAG_SORTTRANSPARENT;
+ if (t->currentmaterialflags & MATERIALFLAG_BLENDED)
+ {
+ if (t->currentmaterialflags & (MATERIALFLAG_REFRACTION | MATERIALFLAG_WATERSHADER))
+ t->currentmaterialflags &= ~MATERIALFLAG_BLENDED;
+ }
+ else
+ {
+ if (t->backgroundnumskinframes)
+ t->currentmaterialflags |= MATERIALFLAG_VERTEXTEXTUREBLEND;
+ t->currentmaterialflags &= ~(MATERIALFLAG_REFRACTION | MATERIALFLAG_WATERSHADER);
+ }
// make sure that the waterscroll matrix is used on water surfaces when
// there is no tcmod
static void R_DrawTextureSurfaceList_Sky(int texturenumsurfaces, msurface_t **texturesurfacelist)
{
// transparent sky would be ridiculous
- if ((rsurface.texture->currentmaterialflags & MATERIALFLAG_SORTTRANSPARENT))
+ if (rsurface.texture->currentmaterialflags & MATERIALFLAGMASK_DEPTHSORTED)
return;
if (rsurface.mode != RSURFMODE_SKY)
{
;
continue;
}
- if (rsurface.texture->currentmaterialflags & MATERIALFLAG_SORTTRANSPARENT)
+ if (rsurface.texture->currentmaterialflags & MATERIALFLAGMASK_DEPTHSORTED)
{
// transparent surfaces get pushed off into the transparent queue
const msurface_t *surface = surfacelist[i];
// now figure out what to do with this particular range of surfaces
if (rsurface.texture->currentmaterialflags & (MATERIALFLAG_WALL | MATERIALFLAG_WATER))
{
- if (rsurface.texture->currentmaterialflags & MATERIALFLAG_SORTTRANSPARENT)
+ if (rsurface.texture->currentmaterialflags & MATERIALFLAGMASK_DEPTHSORTED)
{
vec3_t tempcenter, center;
for (l = k;l < kend;l++)
#define MATERIALFLAG_REFRACTION 524288
// render reflection
#define MATERIALFLAG_REFLECTION 1048576
-// render water, comprising refraction and reflection (note: this is always opaque, the shader does the alpha effect)
-#define MATERIALFLAG_SORTTRANSPARENT 2097152
// use model lighting on this material (q1bsp lightmap sampling or q3bsp lightgrid, implies FULLBRIGHT is false)
#define MATERIALFLAG_MODELLIGHT 4194304
// add directional model lighting to this material (q3bsp lightgrid only)
#define MATERIALFLAG_MODELLIGHT_DIRECTIONAL 8388608
+// combined mask of all attributes that require depth sorted rendering
+#define MATERIALFLAGMASK_DEPTHSORTED (MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST)
typedef struct medge_s
{