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

smcv pushed a commit to branch debian/master
in repository openjk.

commit 47df6ee400c233addd41b8945edb5f5c2b6e3b64
Author: Ensiform <[email protected]>
Date:   Thu Feb 23 15:13:53 2017 -0600

    [MP/SP] Fix rendering of radar arrows
    
    This bug was unintentionally introduced during the fixing of RB_RotatePic 
similar to the bug previously introduced with rocket lock wedges. The arrow for 
players on the radar contain `rgbGen identity` which does not work with setting 
2d color (trap->SetColor) but due to how the code previously worked, it 
rendered correctly.
    
    Fixes #910
---
 code/rd-vanilla/tr_shader.cpp   | 19 +++++++++++++++++++
 codemp/rd-vanilla/tr_shader.cpp | 19 +++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/code/rd-vanilla/tr_shader.cpp b/code/rd-vanilla/tr_shader.cpp
index 0ebcdf6..12f12fe 100644
--- a/code/rd-vanilla/tr_shader.cpp
+++ b/code/rd-vanilla/tr_shader.cpp
@@ -42,6 +42,10 @@ static       texModInfo_t    
texMods[MAX_SHADER_STAGES][TR_MAX_TEXMODS];
 // retail JKA shader for gfx/2d/wedge.
 #define RETAIL_ROCKET_WEDGE_SHADER_HASH (1217042)
 
+// Hash value (generated using the generateHashValueForText function) for the 
original
+// retail JKA shader for gfx/menus/radar/arrow_w.
+#define RETAIL_ARROW_W_SHADER_HASH (1650186)
+
 
 #define FILE_HASH_SIZE         1024
 static shader_t*               sh_hashTable[FILE_HASH_SIZE];
@@ -2461,6 +2465,21 @@ Ghoul2 Insert End
                stages[0].stateBits |= GLS_SRCBLEND_SRC_ALPHA | 
GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA;
        }
 
+       // The basejka radar arrow contains an incorrect rgbGen of identity
+       // It only worked because the original code didn't check shaders at all,
+       // thus setcolor worked fine but with fixing RB_RotatePic it no longer
+       // functioned because rgbGen identity doesn't work with setcolor.
+       //
+       // We match against retail version of gfx/menus/radar/arrow_w by 
calculating
+       // the hash value of the shader text, and comparing it against a 
+       // precalculated value.
+       if ( shaderHash == RETAIL_ARROW_W_SHADER_HASH &&
+               Q_stricmp( shader.name, "gfx/menus/radar/arrow_w" ) == 0 )
+       {
+               stages[0].rgbGen = CGEN_VERTEX;
+               stages[0].alphaGen = AGEN_VERTEX;
+       }
+
        COM_EndParseSession();
        return qtrue;
 }
diff --git a/codemp/rd-vanilla/tr_shader.cpp b/codemp/rd-vanilla/tr_shader.cpp
index e7ecccc..326f039 100644
--- a/codemp/rd-vanilla/tr_shader.cpp
+++ b/codemp/rd-vanilla/tr_shader.cpp
@@ -37,6 +37,10 @@ static       texModInfo_t    
texMods[MAX_SHADER_STAGES][TR_MAX_TEXMODS];
 // retail JKA shader for gfx/2d/wedge.
 #define RETAIL_ROCKET_WEDGE_SHADER_HASH (1217042)
 
+// Hash value (generated using the generateHashValueForText function) for the 
original
+// retail JKA shader for gfx/menus/radar/arrow_w.
+#define RETAIL_ARROW_W_SHADER_HASH (1650186)
+
 #define FILE_HASH_SIZE         1024
 static shader_t*               hashTable[FILE_HASH_SIZE];
 
@@ -2363,6 +2367,21 @@ static qboolean ParseShader( const char **text )
                stages[0].stateBits |= GLS_SRCBLEND_SRC_ALPHA | 
GLS_DSTBLEND_ONE_MINUS_SRC_ALPHA;
        }
 
+       // The basejka radar arrow contains an incorrect rgbGen of identity
+       // It only worked because the original code didn't check shaders at all,
+       // thus setcolor worked fine but with fixing RB_RotatePic it no longer
+       // functioned because rgbGen identity doesn't work with setcolor.
+       //
+       // We match against retail version of gfx/menus/radar/arrow_w by 
calculating
+       // the hash value of the shader text, and comparing it against a 
+       // precalculated value.
+       if ( shaderHash == RETAIL_ARROW_W_SHADER_HASH &&
+               Q_stricmp( shader.name, "gfx/menus/radar/arrow_w" ) == 0 )
+       {
+               stages[0].rgbGen = CGEN_VERTEX;
+               stages[0].alphaGen = AGEN_VERTEX;
+       }
+
        return qtrue;
 }
 

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

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

Reply via email to