]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_rmain.c
added backface culling optimization to cl_decals_newsystem, this helps
[xonotic/darkplaces.git] / gl_rmain.c
index 0fbb9ad729a7da8cf483b9b230d73f65461cadae..758673f6daa1bcdc53d6f49ecc4e9b9c43d3c715 100644 (file)
@@ -10404,6 +10404,9 @@ static void R_DecalSystem_SpawnTriangle(decalsystem_t *decalsystem, const float
        decal->texcoord2f[1][1] = t1[1];
        decal->texcoord2f[2][0] = t2[0];
        decal->texcoord2f[2][1] = t2[1];
+       TriangleNormal(v0, v1, v2, decal->plane);
+       VectorNormalize(decal->plane);
+       decal->plane[3] = DotProduct(v0, decal->plane);
 }
 
 extern cvar_t cl_decals_bias;
@@ -10857,6 +10860,10 @@ static void R_DrawModelDecals_Entity(entity_render_t *ent)
                if (surfacevisible && !surfacevisible[decal->surfaceindex])
                        continue;
 
+               // skip backfaces
+               if (decal->triangleindex < 0 && DotProduct(r_refdef.view.origin, decal->plane) < decal->plane[3])
+                       continue;
+
                // update color values for fading decals
                if (decal->lived >= cl_decals_time.value)
                        alpha = 1 - faderate * (decal->lived - cl_decals_time.value);