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

smcv pushed a commit to annotated tag 1.5a
in repository iortcw.

commit dfb114b62a06701111a0a0390373d24fcdea6414
Author: MAN-AT-ARMS <[email protected]>
Date:   Sat May 21 15:55:07 2016 -0400

    All: Rend2: Speed up surface merging
---
 MP/code/rend2/tr_bsp.c | 29 +++++++++++------------------
 SP/code/rend2/tr_bsp.c | 29 +++++++++++------------------
 2 files changed, 22 insertions(+), 36 deletions(-)

diff --git a/MP/code/rend2/tr_bsp.c b/MP/code/rend2/tr_bsp.c
index 7461051..155ebc9 100644
--- a/MP/code/rend2/tr_bsp.c
+++ b/MP/code/rend2/tr_bsp.c
@@ -2353,12 +2353,6 @@ static void R_CreateWorldVaos(void)
                // -1 represents 0, -2 represents 1, and so on
                s_worldData.viewSurfaces = 
ri.Hunk_Alloc(sizeof(*s_worldData.viewSurfaces) * s_worldData.nummarksurfaces, 
h_low);
 
-               // copy view surfaces into mark surfaces
-               for (i = 0; i < s_worldData.nummarksurfaces; i++)
-               {
-                       s_worldData.viewSurfaces[i] = 
s_worldData.marksurfaces[i];
-               }
-
                // actually merge surfaces
                mergedSurf = s_worldData.mergedSurfaces;
                for(firstSurf = lastSurf = surfacesSorted; firstSurf < 
surfacesSorted + numSortedSurfaces; firstSurf = lastSurf)
@@ -2419,23 +2413,22 @@ static void R_CreateWorldVaos(void)
                        mergedSurf->cubemapIndex  =  (*firstSurf)->cubemapIndex;
                        mergedSurf->shader        =  (*firstSurf)->shader;
 
-                       // redirect view surfaces to this surf
+                       // change surfacesViewCount[] from leaf index to 
viewSurface index - 1 so we can redirect later
+                       // subtracting 2 (viewSurface index - 1) to avoid 
collision with -1 (no leaf)
                        for (currSurf = firstSurf; currSurf < lastSurf; 
currSurf++)
-                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -2;
-
-                       for (k = 0; k < s_worldData.nummarksurfaces; k++)
-                       {
-                               if 
(s_worldData.surfacesViewCount[s_worldData.marksurfaces[k]] == -2)
-                                       s_worldData.viewSurfaces[k] = 
-((int)(mergedSurf - s_worldData.mergedSurfaces) + 1);
-                       }
-
-                       for (currSurf = firstSurf; currSurf < lastSurf; 
currSurf++)
-                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -1;
+                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -((int)(mergedSurf - s_worldData.mergedSurfaces)) - 2;
 
                        mergedSurf++;
                }
 
-               ri.Printf(PRINT_ALL, "Processed %d mergeable surfaces into %d 
merged, %d unmerged\n", 
+               // direct viewSurfaces to merged and unmerged surfaces
+               for (i = 0; i < s_worldData.nummarksurfaces; i++)
+               {
+                       int viewSurfaceIndex = 
s_worldData.surfacesViewCount[s_worldData.marksurfaces[i]] + 1;
+                       s_worldData.viewSurfaces[i] = (viewSurfaceIndex < 0) ? 
viewSurfaceIndex : s_worldData.marksurfaces[i];
+               }
+
+               ri.Printf(PRINT_ALL, "Processed %d mergeable surfaces into %d 
merged, %d unmerged\n",
                        numSortedSurfaces, numMergedSurfaces, 
numUnmergedSurfaces);
        }
 
diff --git a/SP/code/rend2/tr_bsp.c b/SP/code/rend2/tr_bsp.c
index 73d89da..5289f3d 100644
--- a/SP/code/rend2/tr_bsp.c
+++ b/SP/code/rend2/tr_bsp.c
@@ -2341,12 +2341,6 @@ static void R_CreateWorldVaos(void)
                // -1 represents 0, -2 represents 1, and so on
                s_worldData.viewSurfaces = 
ri.Hunk_Alloc(sizeof(*s_worldData.viewSurfaces) * s_worldData.nummarksurfaces, 
h_low);
 
-               // copy view surfaces into mark surfaces
-               for (i = 0; i < s_worldData.nummarksurfaces; i++)
-               {
-                       s_worldData.viewSurfaces[i] = 
s_worldData.marksurfaces[i];
-               }
-
                // actually merge surfaces
                mergedSurf = s_worldData.mergedSurfaces;
                for(firstSurf = lastSurf = surfacesSorted; firstSurf < 
surfacesSorted + numSortedSurfaces; firstSurf = lastSurf)
@@ -2407,23 +2401,22 @@ static void R_CreateWorldVaos(void)
                        mergedSurf->cubemapIndex  =  (*firstSurf)->cubemapIndex;
                        mergedSurf->shader        =  (*firstSurf)->shader;
 
-                       // redirect view surfaces to this surf
+                       // change surfacesViewCount[] from leaf index to 
viewSurface index - 1 so we can redirect later
+                       // subtracting 2 (viewSurface index - 1) to avoid 
collision with -1 (no leaf)
                        for (currSurf = firstSurf; currSurf < lastSurf; 
currSurf++)
-                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -2;
-
-                       for (k = 0; k < s_worldData.nummarksurfaces; k++)
-                       {
-                               if 
(s_worldData.surfacesViewCount[s_worldData.marksurfaces[k]] == -2)
-                                       s_worldData.viewSurfaces[k] = 
-((int)(mergedSurf - s_worldData.mergedSurfaces) + 1);
-                       }
-
-                       for (currSurf = firstSurf; currSurf < lastSurf; 
currSurf++)
-                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -1;
+                               s_worldData.surfacesViewCount[*currSurf - 
s_worldData.surfaces] = -((int)(mergedSurf - s_worldData.mergedSurfaces)) - 2;
 
                        mergedSurf++;
                }
 
-               ri.Printf(PRINT_ALL, "Processed %d mergeable surfaces into %d 
merged, %d unmerged\n", 
+               // direct viewSurfaces to merged and unmerged surfaces
+               for (i = 0; i < s_worldData.nummarksurfaces; i++)
+               {
+                       int viewSurfaceIndex = 
s_worldData.surfacesViewCount[s_worldData.marksurfaces[i]] + 1;
+                       s_worldData.viewSurfaces[i] = (viewSurfaceIndex < 0) ? 
viewSurfaceIndex : s_worldData.marksurfaces[i];
+               }
+
+               ri.Printf(PRINT_ALL, "Processed %d mergeable surfaces into %d 
merged, %d unmerged\n",
                        numSortedSurfaces, numMergedSurfaces, 
numUnmergedSurfaces);
        }
 

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

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

Reply via email to