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 22ede07efed45e0b8afba364214a4883f4d89400
Author: MAN-AT-ARMS <m4n4t4...@gmail.com>
Date:   Sat Nov 14 22:15:18 2015 -0500

    All: Rend2: Implement refEntity_t fadeStartTime and fadeEndTime
---
 MP/code/rend2/tr_shade.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++--
 SP/code/rend2/tr_shade.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 102 insertions(+), 4 deletions(-)

diff --git a/MP/code/rend2/tr_shade.c b/MP/code/rend2/tr_shade.c
index 6aeb285..b5d6709 100644
--- a/MP/code/rend2/tr_shade.c
+++ b/MP/code/rend2/tr_shade.c
@@ -1387,14 +1387,63 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
                        GLSL_SetUniformFloat(sp, UNIFORM_FOGEYET, eyeT);
                }
 
-               GL_State( pStage->stateBits );
-
                {
                        vec4_t baseColor;
                        vec4_t vertColor;
+                       int fadeStart, fadeEnd;
 
                        ComputeShaderColors(pStage, baseColor, vertColor, 
pStage->stateBits);
 
+                       //----(SA)      fading model stuff
+                       if ( backEnd.currentEntity )
+                       {
+                               fadeStart = 
backEnd.currentEntity->e.fadeStartTime;
+                       }
+                       else
+                       {
+                               fadeStart = 0;
+                       }
+
+                       if ( fadeStart )
+                       {
+                               fadeEnd = backEnd.currentEntity->e.fadeEndTime;
+
+                               if ( fadeStart > tr.refdef.time )
+                               {
+                                       // has not started to fade yet
+                                       GL_State( pStage->stateBits );
+                               }
+                               else
+                               {
+                                       unsigned int tempState;
+                                       float alphaval;
+
+                                       if ( fadeEnd < tr.refdef.time )
+                                       {
+                                               // entity faded out completely
+                                               continue;
+                                       }
+
+                                       alphaval = (float)( fadeEnd - 
tr.refdef.time ) / (float)( fadeEnd - fadeStart );
+
+                                       tempState = pStage->stateBits;
+                                       // remove the current blend, and don't 
write to Z buffer
+                                       tempState &= ~( GLS_SRCBLEND_BITS | 
GLS_DSTBLEND_BITS | GLS_DEPTHMASK_TRUE );
+                                       // set the blend to src_alpha, 
dst_one_minus_src_alpha
+                                       tempState |= ( GLS_SRCBLEND_SRC_ALPHA | 
GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA );
+                                       GL_State( tempState );
+                                       GL_Cull( CT_FRONT_SIDED );
+                                       // modulate the alpha component of each 
vertex in the render list
+                                       baseColor[3] *= alphaval;
+                                       vertColor[3] *= alphaval;
+                               }
+                       }
+                       else
+                       {
+                               GL_State( pStage->stateBits );
+                       }
+                       //----(SA)      end
+
                        if ((backEnd.refdef.colorScale != 1.0f) && 
!(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
                        {
                                // use VectorScale to only scale first three 
values, not alpha
diff --git a/SP/code/rend2/tr_shade.c b/SP/code/rend2/tr_shade.c
index 21b8c07..8976b43 100644
--- a/SP/code/rend2/tr_shade.c
+++ b/SP/code/rend2/tr_shade.c
@@ -1381,14 +1381,63 @@ static void RB_IterateStagesGeneric( shaderCommands_t 
*input )
                        GLSL_SetUniformFloat(sp, UNIFORM_FOGEYET, eyeT);
                }
 
-               GL_State( pStage->stateBits );
-
                {
                        vec4_t baseColor;
                        vec4_t vertColor;
+                       int fadeStart, fadeEnd;
 
                        ComputeShaderColors(pStage, baseColor, vertColor, 
pStage->stateBits);
 
+                       //----(SA)      fading model stuff
+                       if ( backEnd.currentEntity )
+                       {
+                               fadeStart = 
backEnd.currentEntity->e.fadeStartTime;
+                       }
+                       else
+                       {
+                               fadeStart = 0;
+                       }
+
+                       if ( fadeStart )
+                       {
+                               fadeEnd = backEnd.currentEntity->e.fadeEndTime;
+
+                               if ( fadeStart > tr.refdef.time )
+                               {
+                                       // has not started to fade yet
+                                       GL_State( pStage->stateBits );
+                               }
+                               else
+                               {
+                                       unsigned int tempState;
+                                       float alphaval;
+
+                                       if ( fadeEnd < tr.refdef.time )
+                                       {
+                                               // entity faded out completely
+                                               continue;
+                                       }
+
+                                       alphaval = (float)( fadeEnd - 
tr.refdef.time ) / (float)( fadeEnd - fadeStart );
+
+                                       tempState = pStage->stateBits;
+                                       // remove the current blend, and don't 
write to Z buffer
+                                       tempState &= ~( GLS_SRCBLEND_BITS | 
GLS_DSTBLEND_BITS | GLS_DEPTHMASK_TRUE );
+                                       // set the blend to src_alpha, 
dst_one_minus_src_alpha
+                                       tempState |= ( GLS_SRCBLEND_SRC_ALPHA | 
GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA );
+                                       GL_State( tempState );
+                                       GL_Cull( CT_FRONT_SIDED );
+                                       // modulate the alpha component of each 
vertex in the render list
+                                       baseColor[3] *= alphaval;
+                                       vertColor[3] *= alphaval;
+                               }
+                       }
+                       else
+                       {
+                               GL_State( pStage->stateBits );
+                       }
+                       //----(SA)      end
+
                        if ((backEnd.refdef.colorScale != 1.0f) && 
!(backEnd.refdef.rdflags & RDF_NOWORLDMODEL))
                        {
                                // use VectorScale to only scale first three 
values, not alpha

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