This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit 536b5829c1a379e56f16adc0d1d21296cc494a03
Author: m4n4t4...@gmail.com 
<m4n4t4...@gmail.com@e65d2741-a53d-b2dc-ae96-bb75fa5e4c4a>
Date:   Thu Mar 20 11:48:26 2014 +0000

    All: Rend2: Use areamask and leaf cluster for PVS when VIS is missing
---
 MP/code/rend2/tr_bsp.c   |  2 --
 MP/code/rend2/tr_local.h |  2 --
 MP/code/rend2/tr_world.c | 45 +++++++++++++--------------------------------
 SP/code/rend2/tr_bsp.c   |  2 --
 SP/code/rend2/tr_local.h |  2 --
 SP/code/rend2/tr_world.c | 45 +++++++++++++--------------------------------
 6 files changed, 26 insertions(+), 72 deletions(-)

diff --git a/MP/code/rend2/tr_bsp.c b/MP/code/rend2/tr_bsp.c
index 71c4406..db88eb1 100644
--- a/MP/code/rend2/tr_bsp.c
+++ b/MP/code/rend2/tr_bsp.c
@@ -604,8 +604,6 @@ static void R_LoadVisibility( lump_t *l ) {
        byte    *buf;
 
        len = ( s_worldData.numClusters + 63 ) & ~63;
-       s_worldData.novis = ri.Hunk_Alloc( len, h_low );
-       memset( s_worldData.novis, 0xff, len );
 
        len = l->filelen;
        if ( !len ) {
diff --git a/MP/code/rend2/tr_local.h b/MP/code/rend2/tr_local.h
index 7f31447..f7f49f0 100644
--- a/MP/code/rend2/tr_local.h
+++ b/MP/code/rend2/tr_local.h
@@ -1287,8 +1287,6 @@ typedef struct {
        int clusterBytes;
        const byte  *vis;           // may be passed in by CM_LoadMap to save 
space
 
-       byte        *novis;         // clusterBytes of 0xff
-
        char        *entityString;
        char        *entityParsePoint;
 } world_t;
diff --git a/MP/code/rend2/tr_world.c b/MP/code/rend2/tr_world.c
index 5d19564..98e9b25 100644
--- a/MP/code/rend2/tr_world.c
+++ b/MP/code/rend2/tr_world.c
@@ -735,7 +735,7 @@ R_ClusterPVS
 */
 static const byte *R_ClusterPVS( int cluster ) {
        if ( !tr.world->vis || cluster < 0 || cluster >= tr.world->numClusters 
) {
-               return tr.world->novis;
+               return NULL;
        }
 
        return tr.world->vis + cluster * tr.world->clusterBytes;
@@ -772,29 +772,21 @@ static void R_MarkLeaves( void ) {
 
        for(i = 0; i < MAX_VISCOUNTS; i++)
        {
-               if(tr.visClusters[i] == cluster)
+               // if the areamask or r_showcluster was modified, invalidate 
all visclusters
+               // this caused doors to open into undrawn areas
+               if (tr.refdef.areamaskModified || r_showcluster->modified)
                {
-                       //tr.visIndex = i;
-                       break;
+                       tr.visClusters[i] = -2;
                }
-       }
-
-       // if r_showcluster was just turned on, remark everything
-       if(i != MAX_VISCOUNTS && !tr.refdef.areamaskModified && 
!r_showcluster->modified)// && !r_dynamicBspOcclusionCulling->modified)
-       {
-               if(tr.visClusters[i] != tr.visClusters[tr.visIndex] && 
r_showcluster->integer)
+               else if(tr.visClusters[i] == cluster)
                {
-                       ri.Printf(PRINT_ALL, "found cluster:%i  area:%i  
index:%i\n", cluster, leaf->area, i);
+                       if(tr.visClusters[i] != tr.visClusters[tr.visIndex] && 
r_showcluster->integer)
+                       {
+                               ri.Printf(PRINT_ALL, "found cluster:%i  area:%i 
 index:%i\n", cluster, leaf->area, i);
+                       }
+                       tr.visIndex = i;
+                       return;
                }
-               tr.visIndex = i;
-               return;
-       }
-
-       // if the areamask was modified, invalidate all visclusters
-       // this caused doors to open into undrawn areas
-       if (tr.refdef.areamaskModified)
-       {
-               memset(tr.visClusters, -2, sizeof(tr.visClusters));
        }
 
        tr.visIndex = (tr.visIndex + 1) % MAX_VISCOUNTS;
@@ -808,17 +800,6 @@ static void R_MarkLeaves( void ) {
                }
        }
 
-       // set all nodes to visible if there is no vis
-       // this caused some levels to simply not render
-       if (r_novis->integer || !tr.world->vis || tr.visClusters[tr.visIndex] 
== -1) {
-               for ( i = 0 ; i < tr.world->numnodes ; i++ ) {
-                       if ( tr.world->nodes[i].contents != CONTENTS_SOLID ) {
-                               tr.world->nodes[i].visCounts[tr.visIndex] = 
tr.visCounts[tr.visIndex];
-                       }
-               }
-               return;
-       }
-
        vis = R_ClusterPVS(tr.visClusters[tr.visIndex]);
 
        for ( i = 0,leaf = tr.world->nodes ; i < tr.world->numnodes ; i++, 
leaf++ ) {
@@ -828,7 +809,7 @@ static void R_MarkLeaves( void ) {
                }
 
                // check general pvs
-               if ( !( vis[cluster >> 3] & ( 1 << ( cluster & 7 ) ) ) ) {
+               if ( vis && !(vis[cluster>>3] & (1<<(cluster&7))) ) {
                        continue;
                }
 
diff --git a/SP/code/rend2/tr_bsp.c b/SP/code/rend2/tr_bsp.c
index 70b46b4..3dde8f9 100644
--- a/SP/code/rend2/tr_bsp.c
+++ b/SP/code/rend2/tr_bsp.c
@@ -603,8 +603,6 @@ static void R_LoadVisibility( lump_t *l ) {
        byte    *buf;
 
        len = ( s_worldData.numClusters + 63 ) & ~63;
-       s_worldData.novis = ri.Hunk_Alloc( len, h_low );
-       memset( s_worldData.novis, 0xff, len );
 
        len = l->filelen;
        if ( !len ) {
diff --git a/SP/code/rend2/tr_local.h b/SP/code/rend2/tr_local.h
index 33925f8..c1e743d 100644
--- a/SP/code/rend2/tr_local.h
+++ b/SP/code/rend2/tr_local.h
@@ -1293,8 +1293,6 @@ typedef struct {
        int clusterBytes;
        const byte  *vis;           // may be passed in by CM_LoadMap to save 
space
 
-       byte        *novis;         // clusterBytes of 0xff
-
        char        *entityString;
        char        *entityParsePoint;
 } world_t;
diff --git a/SP/code/rend2/tr_world.c b/SP/code/rend2/tr_world.c
index b80497c..135bca6 100644
--- a/SP/code/rend2/tr_world.c
+++ b/SP/code/rend2/tr_world.c
@@ -736,7 +736,7 @@ R_ClusterPVS
 */
 static const byte *R_ClusterPVS( int cluster ) {
        if ( !tr.world->vis || cluster < 0 || cluster >= tr.world->numClusters 
) {
-               return tr.world->novis;
+               return NULL;
        }
 
        return tr.world->vis + cluster * tr.world->clusterBytes;
@@ -773,29 +773,21 @@ static void R_MarkLeaves( void ) {
 
        for(i = 0; i < MAX_VISCOUNTS; i++)
        {
-               if(tr.visClusters[i] == cluster)
+               // if the areamask or r_showcluster was modified, invalidate 
all visclusters
+               // this caused doors to open into undrawn areas
+               if (tr.refdef.areamaskModified || r_showcluster->modified)
                {
-                       //tr.visIndex = i;
-                       break;
+                       tr.visClusters[i] = -2;
                }
-       }
-
-       // if r_showcluster was just turned on, remark everything
-       if(i != MAX_VISCOUNTS && !tr.refdef.areamaskModified && 
!r_showcluster->modified)// && !r_dynamicBspOcclusionCulling->modified)
-       {
-               if(tr.visClusters[i] != tr.visClusters[tr.visIndex] && 
r_showcluster->integer)
+               else if(tr.visClusters[i] == cluster)
                {
-                       ri.Printf(PRINT_ALL, "found cluster:%i  area:%i  
index:%i\n", cluster, leaf->area, i);
+                       if(tr.visClusters[i] != tr.visClusters[tr.visIndex] && 
r_showcluster->integer)
+                       {
+                               ri.Printf(PRINT_ALL, "found cluster:%i  area:%i 
 index:%i\n", cluster, leaf->area, i);
+                       }
+                       tr.visIndex = i;
+                       return;
                }
-               tr.visIndex = i;
-               return;
-       }
-
-       // if the areamask was modified, invalidate all visclusters
-       // this caused doors to open into undrawn areas
-       if (tr.refdef.areamaskModified)
-       {
-               memset(tr.visClusters, -2, sizeof(tr.visClusters));
        }
 
        tr.visIndex = (tr.visIndex + 1) % MAX_VISCOUNTS;
@@ -809,17 +801,6 @@ static void R_MarkLeaves( void ) {
                }
        }
 
-       // set all nodes to visible if there is no vis
-       // this caused some levels to simply not render
-       if (r_novis->integer || !tr.world->vis || tr.visClusters[tr.visIndex] 
== -1) {
-               for ( i = 0 ; i < tr.world->numnodes ; i++ ) {
-                       if ( tr.world->nodes[i].contents != CONTENTS_SOLID ) {
-                               tr.world->nodes[i].visCounts[tr.visIndex] = 
tr.visCounts[tr.visIndex];
-                       }
-               }
-               return;
-       }
-
        vis = R_ClusterPVS(tr.visClusters[tr.visIndex]);
 
        for ( i = 0,leaf = tr.world->nodes ; i < tr.world->numnodes ; i++, 
leaf++ ) {
@@ -829,7 +810,7 @@ static void R_MarkLeaves( void ) {
                }
 
                // check general pvs
-               if ( !( vis[cluster >> 3] & ( 1 << ( cluster & 7 ) ) ) ) {
+               if ( vis && !(vis[cluster>>3] & (1<<(cluster&7))) ) {
                        continue;
                }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/iortcw.git

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to