mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-25 11:19:59 +01:00
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_updatetime;
|
||||
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
|
||||
|
@ -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_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_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()
|
||||
@ -1192,6 +1195,9 @@ static void GL_InitCommands( void )
|
||||
gEngfuncs.Cvar_RegisterVariable( &r_ripple );
|
||||
gEngfuncs.Cvar_RegisterVariable( &r_ripple_updatetime );
|
||||
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_texture_nearest );
|
||||
|
@ -781,7 +781,7 @@ Does a water warp on the pre-fragmented glpoly_t chain
|
||||
void EmitWaterPolys( msurface_t *warp, qboolean reverse )
|
||||
{
|
||||
float *v, nv, waveHeight;
|
||||
float s, t, os, ot;
|
||||
float s, t, os, ot, warp_s, warp_t;
|
||||
glpoly_t *p;
|
||||
int i;
|
||||
|
||||
@ -822,15 +822,29 @@ void EmitWaterPolys( msurface_t *warp, qboolean reverse )
|
||||
os = v[3];
|
||||
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];
|
||||
t = ot + r_turbsin[(int)((os * 0.125f + gp_cl->time) * TURBSCALE) & 255];
|
||||
case 0:
|
||||
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;
|
||||
t = ot / g_ripple.texturescale;
|
||||
s /= g_ripple.texturescale;
|
||||
t /= g_ripple.texturescale;
|
||||
}
|
||||
|
||||
s *= ( 1.0f / SUBDIVIDE_SIZE );
|
||||
|
Loading…
Reference in New Issue
Block a user