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

