[iortcw] 339/497: Rend2: Fix player on fire effect

2017-09-08 Thread Simon McVittie
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 a3a0a23ad620e8fee7b9eb7caa7be7196813411f
Author: Zack Middleton 
Date:   Thu May 7 23:38:05 2015 -0500

Rend2: Fix player on fire effect

Add support for alphaGen normalzfade, except the zombie effect part.
Add support for negative deform wave frequency only effecting Z using amount
based on fireRiseDir.
---
 MP/code/rend2/glsl/generic_vp.glsl |  55 +++
 MP/code/rend2/tr_glsl.c|   9 ++-
 MP/code/rend2/tr_local.h   |   4 ++
 MP/code/rend2/tr_shade.c   | 136 +
 MP/code/rend2/tr_shader.c  |   1 +
 SP/code/rend2/glsl/generic_vp.glsl |  55 +++
 SP/code/rend2/tr_glsl.c|   9 ++-
 SP/code/rend2/tr_local.h   |   4 ++
 SP/code/rend2/tr_shade.c   | 136 +
 SP/code/rend2/tr_shader.c  |   1 +
 10 files changed, 408 insertions(+), 2 deletions(-)

diff --git a/MP/code/rend2/glsl/generic_vp.glsl 
b/MP/code/rend2/glsl/generic_vp.glsl
index e04b201..1cc6484 100644
--- a/MP/code/rend2/glsl/generic_vp.glsl
+++ b/MP/code/rend2/glsl/generic_vp.glsl
@@ -43,6 +43,10 @@ uniform mat4   u_ModelViewProjectionMatrix;
 uniform vec4   u_BaseColor;
 uniform vec4   u_VertColor;
 
+#if defined(USE_DEFORM_VERTEXES) || defined(USE_RGBAGEN)
+uniform vec3   u_FireRiseDir;
+#endif
+
 #if defined(USE_RGBAGEN)
 uniform intu_ColorGen;
 uniform intu_AlphaGen;
@@ -50,6 +54,8 @@ uniform vec3   u_AmbientLight;
 uniform vec3   u_DirectedLight;
 uniform vec3   u_ModelLightDir;
 uniform float  u_PortalRange;
+uniform float  u_ZFadeLowest;
+uniform float  u_ZFadeHighest;
 #endif
 
 #if defined(USE_VERTEX_ANIMATION)
@@ -68,6 +74,20 @@ vec3 DeformPosition(const vec3 pos, const vec3 normal, const 
vec2 st)
float frequency = u_DeformParams[3];
float spread =u_DeformParams[4];
 
+   // a negative frequency is for Z deformation based on normal
+   float zDeformScale = 0;
+   if (frequency < 0)
+   {
+   zDeformScale = 1;
+   frequency *= -1;
+
+   if (frequency > 999)
+   {
+   frequency -= 999;
+   zDeformScale = -1;
+   }
+   }
+
if (u_DeformGen == DGEN_BULGE)
{
phase *= st.x;
@@ -105,6 +125,20 @@ vec3 DeformPosition(const vec3 pos, const vec3 normal, 
const vec2 st)
func = sin(value);
}
 
+   if (zDeformScale != 0)
+   {
+   vec3 dir = u_FireRiseDir * (0.4 + 0.6 * u_FireRiseDir.z);
+   float nDot = dot(dir, normal);
+   float scale = base + func * amplitude;
+
+   if (nDot * scale > 0)
+   {
+   return pos + dir * nDot * scale * zDeformScale;
+   }
+
+   return pos;
+   }
+
return pos + normal * (base + func * amplitude);
 }
 #endif
@@ -178,6 +212,27 @@ vec4 CalcColor(vec3 position, vec3 normal)
{
color.a = clamp(length(viewer) / u_PortalRange, 0.0, 1.0);
}
+   else if (u_AlphaGen == AGEN_NORMALZFADE)
+   {
+   float nDot = dot(normal, u_FireRiseDir);
+   float halfRange = (u_ZFadeHighest - u_ZFadeLowest) / 2.0;
+
+   if (nDot < u_ZFadeHighest) {
+   if (nDot > u_ZFadeLowest) {
+   float frac;
+   if (nDot < u_ZFadeLowest + halfRange) {
+   frac = ( nDot - u_ZFadeLowest ) / 
halfRange;
+   } else {
+   frac = 1.0 - ( nDot - u_ZFadeLowest - 
halfRange ) / halfRange;
+   }
+   color.a *= clamp(frac, 0.0, 1.0);
+   } else {
+   color.a = 0;
+   }
+   } else {
+   color.a = 0;
+   }
+   }

return color;
 }
diff --git a/MP/code/rend2/tr_glsl.c b/MP/code/rend2/tr_glsl.c
index ca8e5a5..ba62e26 100644
--- a/MP/code/rend2/tr_glsl.c
+++ b/MP/code/rend2/tr_glsl.c
@@ -146,6 +146,10 @@ static uniformInfo_t uniformsInfo[] =
{ "u_PrimaryLightRadius",  GLSL_FLOAT },
 
{ "u_CubeMapInfo", GLSL_VEC4 },
+
+   { "u_FireRiseDir", GLSL_VEC3 },
+   { "u_ZFadeLowest", GLSL_FLOAT },
+   { "u_ZFadeHighest", GLSL_FLOAT },
 };
 
 
@@ -302,9 +306,11 @@ static void GLSL_GetShaderHeader( GLenum shaderType, const 
GLcharARB *extra, cha
"#define 
alphaGen_t\n"
"#define 
AGEN_LIGHTING_SPECULAR %i\n"
"

[iortcw] 339/497: Rend2: Fix player on fire effect

2016-09-21 Thread Simon McVittie
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 a3a0a23ad620e8fee7b9eb7caa7be7196813411f
Author: Zack Middleton 
Date:   Thu May 7 23:38:05 2015 -0500

Rend2: Fix player on fire effect

Add support for alphaGen normalzfade, except the zombie effect part.
Add support for negative deform wave frequency only effecting Z using amount
based on fireRiseDir.
---
 MP/code/rend2/glsl/generic_vp.glsl |  55 +++
 MP/code/rend2/tr_glsl.c|   9 ++-
 MP/code/rend2/tr_local.h   |   4 ++
 MP/code/rend2/tr_shade.c   | 136 +
 MP/code/rend2/tr_shader.c  |   1 +
 SP/code/rend2/glsl/generic_vp.glsl |  55 +++
 SP/code/rend2/tr_glsl.c|   9 ++-
 SP/code/rend2/tr_local.h   |   4 ++
 SP/code/rend2/tr_shade.c   | 136 +
 SP/code/rend2/tr_shader.c  |   1 +
 10 files changed, 408 insertions(+), 2 deletions(-)

diff --git a/MP/code/rend2/glsl/generic_vp.glsl 
b/MP/code/rend2/glsl/generic_vp.glsl
index e04b201..1cc6484 100644
--- a/MP/code/rend2/glsl/generic_vp.glsl
+++ b/MP/code/rend2/glsl/generic_vp.glsl
@@ -43,6 +43,10 @@ uniform mat4   u_ModelViewProjectionMatrix;
 uniform vec4   u_BaseColor;
 uniform vec4   u_VertColor;
 
+#if defined(USE_DEFORM_VERTEXES) || defined(USE_RGBAGEN)
+uniform vec3   u_FireRiseDir;
+#endif
+
 #if defined(USE_RGBAGEN)
 uniform intu_ColorGen;
 uniform intu_AlphaGen;
@@ -50,6 +54,8 @@ uniform vec3   u_AmbientLight;
 uniform vec3   u_DirectedLight;
 uniform vec3   u_ModelLightDir;
 uniform float  u_PortalRange;
+uniform float  u_ZFadeLowest;
+uniform float  u_ZFadeHighest;
 #endif
 
 #if defined(USE_VERTEX_ANIMATION)
@@ -68,6 +74,20 @@ vec3 DeformPosition(const vec3 pos, const vec3 normal, const 
vec2 st)
float frequency = u_DeformParams[3];
float spread =u_DeformParams[4];
 
+   // a negative frequency is for Z deformation based on normal
+   float zDeformScale = 0;
+   if (frequency < 0)
+   {
+   zDeformScale = 1;
+   frequency *= -1;
+
+   if (frequency > 999)
+   {
+   frequency -= 999;
+   zDeformScale = -1;
+   }
+   }
+
if (u_DeformGen == DGEN_BULGE)
{
phase *= st.x;
@@ -105,6 +125,20 @@ vec3 DeformPosition(const vec3 pos, const vec3 normal, 
const vec2 st)
func = sin(value);
}
 
+   if (zDeformScale != 0)
+   {
+   vec3 dir = u_FireRiseDir * (0.4 + 0.6 * u_FireRiseDir.z);
+   float nDot = dot(dir, normal);
+   float scale = base + func * amplitude;
+
+   if (nDot * scale > 0)
+   {
+   return pos + dir * nDot * scale * zDeformScale;
+   }
+
+   return pos;
+   }
+
return pos + normal * (base + func * amplitude);
 }
 #endif
@@ -178,6 +212,27 @@ vec4 CalcColor(vec3 position, vec3 normal)
{
color.a = clamp(length(viewer) / u_PortalRange, 0.0, 1.0);
}
+   else if (u_AlphaGen == AGEN_NORMALZFADE)
+   {
+   float nDot = dot(normal, u_FireRiseDir);
+   float halfRange = (u_ZFadeHighest - u_ZFadeLowest) / 2.0;
+
+   if (nDot < u_ZFadeHighest) {
+   if (nDot > u_ZFadeLowest) {
+   float frac;
+   if (nDot < u_ZFadeLowest + halfRange) {
+   frac = ( nDot - u_ZFadeLowest ) / 
halfRange;
+   } else {
+   frac = 1.0 - ( nDot - u_ZFadeLowest - 
halfRange ) / halfRange;
+   }
+   color.a *= clamp(frac, 0.0, 1.0);
+   } else {
+   color.a = 0;
+   }
+   } else {
+   color.a = 0;
+   }
+   }

return color;
 }
diff --git a/MP/code/rend2/tr_glsl.c b/MP/code/rend2/tr_glsl.c
index ca8e5a5..ba62e26 100644
--- a/MP/code/rend2/tr_glsl.c
+++ b/MP/code/rend2/tr_glsl.c
@@ -146,6 +146,10 @@ static uniformInfo_t uniformsInfo[] =
{ "u_PrimaryLightRadius",  GLSL_FLOAT },
 
{ "u_CubeMapInfo", GLSL_VEC4 },
+
+   { "u_FireRiseDir", GLSL_VEC3 },
+   { "u_ZFadeLowest", GLSL_FLOAT },
+   { "u_ZFadeHighest", GLSL_FLOAT },
 };
 
 
@@ -302,9 +306,11 @@ static void GLSL_GetShaderHeader( GLenum shaderType, const 
GLcharARB *extra, cha
"#define 
alphaGen_t\n"
"#define 
AGEN_LIGHTING_SPECULAR %i\n"
"