mirror of https://github.com/FWGS/xash3d-fwgs
ref: gl: add water warp scroll effect for compatibility with Magic-Nipples's engine fork
This commit is contained in:
parent
5525af3769
commit
462b64b8ce
|
@ -809,6 +809,9 @@ extern convar_t r_studio_drawelements;
|
||||||
extern convar_t r_ripple;
|
extern convar_t r_ripple;
|
||||||
extern convar_t r_ripple_updatetime;
|
extern convar_t r_ripple_updatetime;
|
||||||
extern convar_t r_ripple_spawntime;
|
extern convar_t r_ripple_spawntime;
|
||||||
|
extern convar_t r_water_warp;
|
||||||
|
extern convar_t r_water_warp_x;
|
||||||
|
extern convar_t r_water_warp_y;
|
||||||
|
|
||||||
//
|
//
|
||||||
// engine shared convars
|
// engine shared convars
|
||||||
|
|
|
@ -37,6 +37,9 @@ CVAR_DEFINE( r_vbo_overbrightmode, "gl_vbo_overbrightmode", "0", FCVAR_ARCHIVE,
|
||||||
CVAR_DEFINE_AUTO( r_ripple, "0", FCVAR_GLCONFIG, "enable software-like water texture ripple simulation" );
|
CVAR_DEFINE_AUTO( r_ripple, "0", FCVAR_GLCONFIG, "enable software-like water texture ripple simulation" );
|
||||||
CVAR_DEFINE_AUTO( r_ripple_updatetime, "0.05", FCVAR_GLCONFIG, "how fast ripple simulation is" );
|
CVAR_DEFINE_AUTO( r_ripple_updatetime, "0.05", FCVAR_GLCONFIG, "how fast ripple simulation is" );
|
||||||
CVAR_DEFINE_AUTO( r_ripple_spawntime, "0.1", FCVAR_GLCONFIG, "how fast new ripples spawn" );
|
CVAR_DEFINE_AUTO( r_ripple_spawntime, "0.1", FCVAR_GLCONFIG, "how fast new ripples spawn" );
|
||||||
|
CVAR_DEFINE_AUTO( r_water_warp, "1", FCVAR_GLCONFIG, "set water warp style (0: disable, 1: sine waves, 2: constant scroll)" );
|
||||||
|
CVAR_DEFINE_AUTO( r_water_warp_x, "6", FCVAR_GLCONFIG, "water warp scroll x axis speed" );
|
||||||
|
CVAR_DEFINE_AUTO( r_water_warp_y, "6", FCVAR_GLCONFIG, "water warp scroll y axis speed" );
|
||||||
|
|
||||||
|
|
||||||
DEFINE_ENGINE_SHARED_CVAR_LIST()
|
DEFINE_ENGINE_SHARED_CVAR_LIST()
|
||||||
|
@ -1192,6 +1195,9 @@ static void GL_InitCommands( void )
|
||||||
gEngfuncs.Cvar_RegisterVariable( &r_ripple );
|
gEngfuncs.Cvar_RegisterVariable( &r_ripple );
|
||||||
gEngfuncs.Cvar_RegisterVariable( &r_ripple_updatetime );
|
gEngfuncs.Cvar_RegisterVariable( &r_ripple_updatetime );
|
||||||
gEngfuncs.Cvar_RegisterVariable( &r_ripple_spawntime );
|
gEngfuncs.Cvar_RegisterVariable( &r_ripple_spawntime );
|
||||||
|
gEngfuncs.Cvar_RegisterVariable( &r_water_warp );
|
||||||
|
gEngfuncs.Cvar_RegisterVariable( &r_water_warp_x );
|
||||||
|
gEngfuncs.Cvar_RegisterVariable( &r_water_warp_y );
|
||||||
|
|
||||||
gEngfuncs.Cvar_RegisterVariable( &gl_extensions );
|
gEngfuncs.Cvar_RegisterVariable( &gl_extensions );
|
||||||
gEngfuncs.Cvar_RegisterVariable( &gl_texture_nearest );
|
gEngfuncs.Cvar_RegisterVariable( &gl_texture_nearest );
|
||||||
|
|
|
@ -781,7 +781,7 @@ Does a water warp on the pre-fragmented glpoly_t chain
|
||||||
void EmitWaterPolys( msurface_t *warp, qboolean reverse )
|
void EmitWaterPolys( msurface_t *warp, qboolean reverse )
|
||||||
{
|
{
|
||||||
float *v, nv, waveHeight;
|
float *v, nv, waveHeight;
|
||||||
float s, t, os, ot;
|
float s, t, os, ot, warp_s, warp_t;
|
||||||
glpoly_t *p;
|
glpoly_t *p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -822,15 +822,29 @@ void EmitWaterPolys( msurface_t *warp, qboolean reverse )
|
||||||
os = v[3];
|
os = v[3];
|
||||||
ot = v[4];
|
ot = v[4];
|
||||||
|
|
||||||
if( !r_ripple.value )
|
switch((int)r_water_warp.value )
|
||||||
{
|
{
|
||||||
s = os + r_turbsin[(int)((ot * 0.125f + gp_cl->time) * TURBSCALE) & 255];
|
case 0:
|
||||||
t = ot + r_turbsin[(int)((os * 0.125f + gp_cl->time) * TURBSCALE) & 255];
|
warp_s = warp_t = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
warp_s = r_turbsin[(int)((ot * 0.125f + gp_cl->time) * TURBSCALE) & 255];
|
||||||
|
warp_t = r_turbsin[(int)((os * 0.125f + gp_cl->time) * TURBSCALE) & 255];
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
default:
|
||||||
|
warp_s = gp_cl->time * r_water_warp_x.value;
|
||||||
|
warp_t = gp_cl->time * r_water_warp_y.value;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
s = os + warp_s;
|
||||||
|
t = ot + warp_t;
|
||||||
|
|
||||||
|
if( r_ripple.value )
|
||||||
{
|
{
|
||||||
s = os / g_ripple.texturescale;
|
s /= g_ripple.texturescale;
|
||||||
t = ot / g_ripple.texturescale;
|
t /= g_ripple.texturescale;
|
||||||
}
|
}
|
||||||
|
|
||||||
s *= ( 1.0f / SUBDIVIDE_SIZE );
|
s *= ( 1.0f / SUBDIVIDE_SIZE );
|
||||||
|
|
Loading…
Reference in New Issue