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 4ccfb499bf4066dcfd98016f7bbe1cd8489f2469
Author: MAN-AT-ARMS <m4n4t4...@gmail.com>
Date:   Thu Dec 10 11:58:26 2015 -0500

    All: Rend2: Parse radius entries from misc_cubemap entities
---
 MP/code/rend2/tr_backend.c |  9 ++++++---
 MP/code/rend2/tr_bsp.c     | 20 +++++++++++++-------
 MP/code/rend2/tr_light.c   |  2 +-
 MP/code/rend2/tr_local.h   |  9 +++++++--
 MP/code/rend2/tr_main.c    |  2 +-
 MP/code/rend2/tr_shade.c   |  9 ++++-----
 SP/code/rend2/tr_backend.c |  9 ++++++---
 SP/code/rend2/tr_bsp.c     | 20 +++++++++++++-------
 SP/code/rend2/tr_light.c   |  2 +-
 SP/code/rend2/tr_local.h   |  9 +++++++--
 SP/code/rend2/tr_main.c    |  2 +-
 SP/code/rend2/tr_shade.c   |  9 ++++-----
 12 files changed, 64 insertions(+), 38 deletions(-)

diff --git a/MP/code/rend2/tr_backend.c b/MP/code/rend2/tr_backend.c
index fc82bc7..708a657 100644
--- a/MP/code/rend2/tr_backend.c
+++ b/MP/code/rend2/tr_backend.c
@@ -472,8 +472,9 @@ void RB_BeginDrawingView( void ) {
                        // FIXME: hack for cubemap testing
                        if (tr.renderCubeFbo && backEnd.viewParms.targetFbo == 
tr.renderCubeFbo)
                        {
+                               cubemap_t *cubemap = 
&tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex];
                                
//qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 
GL_TEXTURE_CUBE_MAP_POSITIVE_X + backEnd.viewParms.targetFboLayer, 
backEnd.viewParms.targetFbo->colorImage[0]->texnum, 0);
-                               qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, 
GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_CUBE_MAP_POSITIVE_X + 
backEnd.viewParms.targetFboLayer, 
tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex]->texnum, 0);
+                               qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, 
GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_CUBE_MAP_POSITIVE_X + 
backEnd.viewParms.targetFboLayer, cubemap->image->texnum, 0);
                        }
                }
        }
@@ -1577,9 +1578,11 @@ const void  *RB_DrawSurfs( const void *data ) {
 
        if (glRefConfig.framebufferObject && tr.renderCubeFbo && 
backEnd.viewParms.targetFbo == tr.renderCubeFbo)
        {
+               cubemap_t *cubemap = 
&tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex];
+
                FBO_Bind(NULL);
                GL_SelectTexture(TB_CUBEMAP);
-               
GL_BindToTMU(tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex], TB_CUBEMAP);
+               GL_BindToTMU(cubemap->image, TB_CUBEMAP);
                qglGenerateMipmapEXT(GL_TEXTURE_CUBE_MAP);
                GL_SelectTexture(0);
        }
@@ -1991,7 +1994,7 @@ const void *RB_PostProcess(const void *data)
                {
                        VectorSet4(dstBox, 0, glConfig.vidHeight - 256, 256, 
256);
                        //FBO_BlitFromTexture(tr.renderCubeImage, NULL, NULL, 
NULL, dstBox, &tr.testcubeShader, NULL, 0);
-                       FBO_BlitFromTexture(tr.cubemaps[cubemapIndex - 1], 
NULL, NULL, NULL, dstBox, &tr.testcubeShader, NULL, 0);
+                       FBO_BlitFromTexture(tr.cubemaps[cubemapIndex - 
1].image, NULL, NULL, NULL, dstBox, &tr.testcubeShader, NULL, 0);
                }
        }
 #endif
diff --git a/MP/code/rend2/tr_bsp.c b/MP/code/rend2/tr_bsp.c
index cd4a1b2..27f4242 100644
--- a/MP/code/rend2/tr_bsp.c
+++ b/MP/code/rend2/tr_bsp.c
@@ -3347,16 +3347,17 @@ void R_LoadCubemapEntities(char *cubemapEntityName)
                return;
 
        tr.numCubemaps = numCubemaps;
-       tr.cubemapOrigins = ri.Hunk_Alloc( tr.numCubemaps * 
sizeof(*tr.cubemapOrigins), h_low);
-       tr.cubemaps = ri.Hunk_Alloc( tr.numCubemaps * sizeof(*tr.cubemaps), 
h_low);
+       tr.cubemaps = ri.Hunk_Alloc(tr.numCubemaps * sizeof(*tr.cubemaps), 
h_low);
+       memset(tr.cubemaps, 0, tr.numCubemaps * sizeof(*tr.cubemaps));
 
        numCubemaps = 0;
        while(R_ParseSpawnVars(spawnVarChars, sizeof(spawnVarChars), 
&numSpawnVars, spawnVars))
        {
                int i;
                qboolean isCubemap = qfalse;
-               qboolean positionSet = qfalse;
+               qboolean originSet = qfalse;
                vec3_t origin;
+               float parallaxRadius = 1000.0f;
 
                for (i = 0; i < numSpawnVars; i++)
                {
@@ -3366,14 +3367,19 @@ void R_LoadCubemapEntities(char *cubemapEntityName)
                        if (!Q_stricmp(spawnVars[i][0], "origin"))
                        {
                                sscanf(spawnVars[i][1], "%f %f %f", &origin[0], 
&origin[1], &origin[2]);
-                               positionSet = qtrue;
+                               originSet = qtrue;
+                       }
+                       else if (!Q_stricmp(spawnVars[i][0], "radius"))
+                       {
+                               sscanf(spawnVars[i][1], "%f", &parallaxRadius);
                        }
                }
 
-               if (isCubemap && positionSet)
+               if (isCubemap && originSet)
                {
                        //ri.Printf(PRINT_ALL, "cubemap at %f %f %f\n", 
origin[0], origin[1], origin[2]);
-                       VectorCopy(origin, tr.cubemapOrigins[numCubemaps]);
+                       VectorCopy(origin, tr.cubemaps[numCubemaps].origin);
+                       tr.cubemaps[numCubemaps].parallaxRadius = 
parallaxRadius;
                        numCubemaps++;
                }
        }
@@ -3419,7 +3425,7 @@ void R_RenderAllCubemaps(void)
 
        for (i = 0; i < tr.numCubemaps; i++)
        {
-               tr.cubemaps[i] = R_CreateImage(va("*cubeMap%d", i), NULL, 
CUBE_MAP_SIZE, CUBE_MAP_SIZE, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE | IMGFLAG_MIPMAP | IMGFLAG_CUBEMAP, GL_RGBA8);
+               tr.cubemaps[i].image = R_CreateImage(va("*cubeMap%d", i), NULL, 
CUBE_MAP_SIZE, CUBE_MAP_SIZE, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE | IMGFLAG_MIPMAP | IMGFLAG_CUBEMAP, GL_RGBA8);
        }
        
        ri.Printf(PRINT_ALL, "Total cubemaps: %d\n", tr.numCubemaps );
diff --git a/MP/code/rend2/tr_light.c b/MP/code/rend2/tr_light.c
index 71584cd..75a1fa1 100644
--- a/MP/code/rend2/tr_light.c
+++ b/MP/code/rend2/tr_light.c
@@ -496,7 +496,7 @@ int R_CubemapForPoint( vec3_t point )
                        vec3_t diff;
                        vec_t length;
 
-                       VectorSubtract(point, tr.cubemapOrigins[i], diff);
+                       VectorSubtract(point, tr.cubemaps[i].origin, diff);
                        length = DotProduct(diff, diff);
 
                        if (shortest > length)
diff --git a/MP/code/rend2/tr_local.h b/MP/code/rend2/tr_local.h
index a0e46c2..9d61c06 100644
--- a/MP/code/rend2/tr_local.h
+++ b/MP/code/rend2/tr_local.h
@@ -556,6 +556,12 @@ static ID_INLINE qboolean ShaderRequiresCPUDeforms(const 
shader_t * shader)
        return qfalse;
 }
 
+typedef struct cubemap_s {
+       vec3_t origin;
+       float parallaxRadius;
+       image_t *image;
+} cubemap_t;
+
 typedef struct corona_s {
        vec3_t origin;
        vec3_t color;               // range from 0.0 to 1.0, should be color 
normalized
@@ -1695,8 +1701,7 @@ typedef struct {
        int                             fatLightmapStep;
 
        int                     numCubemaps;
-       vec3_t                  *cubemapOrigins;
-       image_t                 **cubemaps;
+       cubemap_t               *cubemaps;
 
        trRefEntity_t           *currentEntity;
        trRefEntity_t worldEntity;                  // point currentEntity at 
this when rendering world
diff --git a/MP/code/rend2/tr_main.c b/MP/code/rend2/tr_main.c
index f7601e6..c5756f8 100644
--- a/MP/code/rend2/tr_main.c
+++ b/MP/code/rend2/tr_main.c
@@ -3142,7 +3142,7 @@ void R_RenderCubemapSide( int cubemapIndex, int 
cubemapSide, qboolean subscene )
 
        memset( &refdef, 0, sizeof( refdef ) );
        refdef.rdflags = 0;
-       VectorCopy(tr.cubemapOrigins[cubemapIndex], refdef.vieworg);
+       VectorCopy(tr.cubemaps[cubemapIndex].origin, refdef.vieworg);
 
        switch(cubemapSide)
        {
diff --git a/MP/code/rend2/tr_shade.c b/MP/code/rend2/tr_shade.c
index f4f3bb8..897501b 100644
--- a/MP/code/rend2/tr_shade.c
+++ b/MP/code/rend2/tr_shade.c
@@ -1672,15 +1672,14 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
                if (!(tr.viewParms.flags & VPF_NOCUBEMAPS) && 
input->cubemapIndex && r_cubeMapping->integer)
                {
                        vec4_t vec;
+                       cubemap_t *cubemap = &tr.cubemaps[input->cubemapIndex - 
1];
 
-                       GL_BindToTMU( tr.cubemaps[input->cubemapIndex - 1], 
TB_CUBEMAP);
+                       GL_BindToTMU( cubemap->image, TB_CUBEMAP);
 
-                       vec[0] = tr.cubemapOrigins[input->cubemapIndex - 1][0] 
- backEnd.viewParms.or.origin[0];
-                       vec[1] = tr.cubemapOrigins[input->cubemapIndex - 1][1] 
- backEnd.viewParms.or.origin[1];
-                       vec[2] = tr.cubemapOrigins[input->cubemapIndex - 1][2] 
- backEnd.viewParms.or.origin[2];
+                       VectorSubtract(cubemap->origin, 
backEnd.viewParms.or.origin, vec);
                        vec[3] = 1.0f;
 
-                       VectorScale4(vec, 1.0f / 1000.0f, vec);
+                       VectorScale4(vec, 1.0f / cubemap->parallaxRadius, vec);
 
                        GLSL_SetUniformVec4(sp, UNIFORM_CUBEMAPINFO, vec);
                }
diff --git a/SP/code/rend2/tr_backend.c b/SP/code/rend2/tr_backend.c
index 69f4f06..146f35d 100644
--- a/SP/code/rend2/tr_backend.c
+++ b/SP/code/rend2/tr_backend.c
@@ -477,8 +477,9 @@ void RB_BeginDrawingView( void ) {
                        // FIXME: hack for cubemap testing
                        if (tr.renderCubeFbo && backEnd.viewParms.targetFbo == 
tr.renderCubeFbo)
                        {
+                               cubemap_t *cubemap = 
&tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex];
                                
//qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, 
GL_TEXTURE_CUBE_MAP_POSITIVE_X + backEnd.viewParms.targetFboLayer, 
backEnd.viewParms.targetFbo->colorImage[0]->texnum, 0);
-                               qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, 
GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_CUBE_MAP_POSITIVE_X + 
backEnd.viewParms.targetFboLayer, 
tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex]->texnum, 0);
+                               qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, 
GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_CUBE_MAP_POSITIVE_X + 
backEnd.viewParms.targetFboLayer, cubemap->image->texnum, 0);
                        }
                }
        }
@@ -1830,9 +1831,11 @@ const void  *RB_DrawSurfs( const void *data ) {
 
        if (glRefConfig.framebufferObject && tr.renderCubeFbo && 
backEnd.viewParms.targetFbo == tr.renderCubeFbo)
        {
+               cubemap_t *cubemap = 
&tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex];
+
                FBO_Bind(NULL);
                GL_SelectTexture(TB_CUBEMAP);
-               
GL_BindToTMU(tr.cubemaps[backEnd.viewParms.targetFboCubemapIndex], TB_CUBEMAP);
+               GL_BindToTMU(cubemap->image, TB_CUBEMAP);
                qglGenerateMipmapEXT(GL_TEXTURE_CUBE_MAP);
                GL_SelectTexture(0);
        }
@@ -2244,7 +2247,7 @@ const void *RB_PostProcess(const void *data)
                {
                        VectorSet4(dstBox, 0, glConfig.vidHeight - 256, 256, 
256);
                        //FBO_BlitFromTexture(tr.renderCubeImage, NULL, NULL, 
NULL, dstBox, &tr.testcubeShader, NULL, 0);
-                       FBO_BlitFromTexture(tr.cubemaps[cubemapIndex - 1], 
NULL, NULL, NULL, dstBox, &tr.testcubeShader, NULL, 0);
+                       FBO_BlitFromTexture(tr.cubemaps[cubemapIndex - 
1].image, NULL, NULL, NULL, dstBox, &tr.testcubeShader, NULL, 0);
                }
        }
 #endif
diff --git a/SP/code/rend2/tr_bsp.c b/SP/code/rend2/tr_bsp.c
index c8c2c2c..8fc2987 100644
--- a/SP/code/rend2/tr_bsp.c
+++ b/SP/code/rend2/tr_bsp.c
@@ -3334,16 +3334,17 @@ void R_LoadCubemapEntities(char *cubemapEntityName)
                return;
 
        tr.numCubemaps = numCubemaps;
-       tr.cubemapOrigins = ri.Hunk_Alloc( tr.numCubemaps * 
sizeof(*tr.cubemapOrigins), h_low);
-       tr.cubemaps = ri.Hunk_Alloc( tr.numCubemaps * sizeof(*tr.cubemaps), 
h_low);
+       tr.cubemaps = ri.Hunk_Alloc(tr.numCubemaps * sizeof(*tr.cubemaps), 
h_low);
+       memset(tr.cubemaps, 0, tr.numCubemaps * sizeof(*tr.cubemaps));
 
        numCubemaps = 0;
        while(R_ParseSpawnVars(spawnVarChars, sizeof(spawnVarChars), 
&numSpawnVars, spawnVars))
        {
                int i;
                qboolean isCubemap = qfalse;
-               qboolean positionSet = qfalse;
+               qboolean originSet = qfalse;
                vec3_t origin;
+               float parallaxRadius = 1000.0f;
 
                for (i = 0; i < numSpawnVars; i++)
                {
@@ -3353,14 +3354,19 @@ void R_LoadCubemapEntities(char *cubemapEntityName)
                        if (!Q_stricmp(spawnVars[i][0], "origin"))
                        {
                                sscanf(spawnVars[i][1], "%f %f %f", &origin[0], 
&origin[1], &origin[2]);
-                               positionSet = qtrue;
+                               originSet = qtrue;
+                       }
+                       else if (!Q_stricmp(spawnVars[i][0], "radius"))
+                       {
+                               sscanf(spawnVars[i][1], "%f", &parallaxRadius);
                        }
                }
 
-               if (isCubemap && positionSet)
+               if (isCubemap && originSet)
                {
                        //ri.Printf(PRINT_ALL, "cubemap at %f %f %f\n", 
origin[0], origin[1], origin[2]);
-                       VectorCopy(origin, tr.cubemapOrigins[numCubemaps]);
+                       VectorCopy(origin, tr.cubemaps[numCubemaps].origin);
+                       tr.cubemaps[numCubemaps].parallaxRadius = 
parallaxRadius;
                        numCubemaps++;
                }
        }
@@ -3406,7 +3412,7 @@ void R_RenderAllCubemaps(void)
 
        for (i = 0; i < tr.numCubemaps; i++)
        {
-               tr.cubemaps[i] = R_CreateImage(va("*cubeMap%d", i), NULL, 
CUBE_MAP_SIZE, CUBE_MAP_SIZE, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE | IMGFLAG_MIPMAP | IMGFLAG_CUBEMAP, GL_RGBA8);
+               tr.cubemaps[i].image = R_CreateImage(va("*cubeMap%d", i), NULL, 
CUBE_MAP_SIZE, CUBE_MAP_SIZE, IMGTYPE_COLORALPHA, IMGFLAG_NO_COMPRESSION | 
IMGFLAG_CLAMPTOEDGE | IMGFLAG_MIPMAP | IMGFLAG_CUBEMAP, GL_RGBA8);
        }
 
        ri.Printf(PRINT_ALL, "Total cubemaps: %d\n", tr.numCubemaps );
diff --git a/SP/code/rend2/tr_light.c b/SP/code/rend2/tr_light.c
index a24b626..b2b6df2 100644
--- a/SP/code/rend2/tr_light.c
+++ b/SP/code/rend2/tr_light.c
@@ -497,7 +497,7 @@ int R_CubemapForPoint( vec3_t point )
                        vec3_t diff;
                        vec_t length;
 
-                       VectorSubtract(point, tr.cubemapOrigins[i], diff);
+                       VectorSubtract(point, tr.cubemaps[i].origin, diff);
                        length = DotProduct(diff, diff);
 
                        if (shortest > length)
diff --git a/SP/code/rend2/tr_local.h b/SP/code/rend2/tr_local.h
index e48ad8e..8ffa3f1 100644
--- a/SP/code/rend2/tr_local.h
+++ b/SP/code/rend2/tr_local.h
@@ -559,6 +559,12 @@ static ID_INLINE qboolean ShaderRequiresCPUDeforms(const 
shader_t * shader)
        return qfalse;
 }
 
+typedef struct cubemap_s {
+       vec3_t origin;
+       float parallaxRadius;
+       image_t *image;
+} cubemap_t;
+
 typedef struct corona_s {
        vec3_t origin;
        vec3_t color;               // range from 0.0 to 1.0, should be color 
normalized
@@ -1709,8 +1715,7 @@ typedef struct {
        int                             fatLightmapStep;
 
        int                     numCubemaps;
-       vec3_t                  *cubemapOrigins;
-       image_t                 **cubemaps;
+       cubemap_t               *cubemaps;
 
        trRefEntity_t           *currentEntity;
        trRefEntity_t worldEntity;                  // point currentEntity at 
this when rendering world
diff --git a/SP/code/rend2/tr_main.c b/SP/code/rend2/tr_main.c
index d5981a3..785b4d6 100644
--- a/SP/code/rend2/tr_main.c
+++ b/SP/code/rend2/tr_main.c
@@ -3190,7 +3190,7 @@ void R_RenderCubemapSide( int cubemapIndex, int 
cubemapSide, qboolean subscene )
 
        memset( &refdef, 0, sizeof( refdef ) );
        refdef.rdflags = 0;
-       VectorCopy(tr.cubemapOrigins[cubemapIndex], refdef.vieworg);
+       VectorCopy(tr.cubemaps[cubemapIndex].origin, refdef.vieworg);
 
        switch(cubemapSide)
        {
diff --git a/SP/code/rend2/tr_shade.c b/SP/code/rend2/tr_shade.c
index 7a0f724..855396f 100644
--- a/SP/code/rend2/tr_shade.c
+++ b/SP/code/rend2/tr_shade.c
@@ -1667,15 +1667,14 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
                if (!(tr.viewParms.flags & VPF_NOCUBEMAPS) && 
input->cubemapIndex && r_cubeMapping->integer)
                {
                        vec4_t vec;
+                       cubemap_t *cubemap = &tr.cubemaps[input->cubemapIndex - 
1];
 
-                       GL_BindToTMU( tr.cubemaps[input->cubemapIndex - 1], 
TB_CUBEMAP);
+                       GL_BindToTMU( cubemap->image, TB_CUBEMAP);
 
-                       vec[0] = tr.cubemapOrigins[input->cubemapIndex - 1][0] 
- backEnd.viewParms.or.origin[0];
-                       vec[1] = tr.cubemapOrigins[input->cubemapIndex - 1][1] 
- backEnd.viewParms.or.origin[1];
-                       vec[2] = tr.cubemapOrigins[input->cubemapIndex - 1][2] 
- backEnd.viewParms.or.origin[2];
+                       VectorSubtract(cubemap->origin, 
backEnd.viewParms.or.origin, vec);
                        vec[3] = 1.0f;
 
-                       VectorScale4(vec, 1.0f / 1000.0f, vec);
+                       VectorScale4(vec, 1.0f / cubemap->parallaxRadius, vec);
 
                        GLSL_SetUniformVec4(sp, UNIFORM_CUBEMAPINFO, vec);
                }

-- 
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