Made Jeija's water waving tweakable.

Add config setting for it.
master
RealBadAngel 2013-11-03 16:44:36 +01:00
parent 36416206c3
commit 683cfb6912
3 changed files with 33 additions and 10 deletions

View File

@ -5,6 +5,11 @@ uniform float dayNightRatio;
uniform float timeOfDay;
uniform vec3 eyePosition;
uniform float enableWaterWave;
uniform float waterWaveHeight;
uniform float waterWaveSpeed;
uniform float waterWaveLength;
varying vec3 vPosition;
varying vec3 viewVec;
varying vec3 T,B,N;
@ -22,16 +27,18 @@ float rand(vec2 co)
void main(void)
{
gl_Position = mWorldViewProj * gl_Vertex;
int wavelength = 20;
float waveheight = 1.7;
int wavespeed = 100;
int height_randomness = 1;
vec4 pos2 = gl_Vertex;
pos2.y -= 3.0;
pos2.y -= sin (pos2.z/wavelength + timeOfDay * wavespeed * wavelength) * waveheight
+ sin ((pos2.z/wavelength + timeOfDay * wavespeed * wavelength)/7) * waveheight * height_randomness;
gl_Position = mWorldViewProj * pos2;
if (enableWaterWave == 1)
{
int wavelength = 20;
float waveheight = 0.4;
int wavespeed = 50;
int height_randomness = 1;
vec4 pos2 = gl_Vertex;
pos2.y -= 3.0;
pos2.y -= sin (pos2.z/waterWaveLength + timeOfDay * waterWaveSpeed * waterWaveLength) * waterWaveHeight
+ sin ((pos2.z/waterWaveLength + timeOfDay * waterWaveSpeed * waterWaveLength)/7) * waterWaveHeight * height_randomness;
gl_Position = mWorldViewProj * pos2;
}
vPosition = (mWorldViewProj * gl_Vertex).xyz;
vec3 pos = vec3(gl_Vertex);

View File

@ -131,6 +131,10 @@ void set_default_settings(Settings *settings)
settings->setDefault("parallax_mapping_bias", "0.04");
settings->setDefault("enable_bumpmapping", "false");
settings->setDefault("enable_water_surface_shaders", "false");
settings->setDefault("enable_water_wave", "false");
settings->setDefault("water_wave_height", "0.4");
settings->setDefault("water_wave_speed", "50.0");
settings->setDefault("water_wave_length", "20.0");
settings->setDefault("enable_shaders", "true");
settings->setDefault("repeat_rightclick_time", "0.25");
settings->setDefault("enable_particles", "true");

View File

@ -809,6 +809,18 @@ public:
services->setPixelShaderConstant("timeOfDay", &time_of_day_f, 1);
services->setVertexShaderConstant("timeOfDay", &time_of_day_f, 1);
float enable_water_wave = 0;
if (g_settings->getBool("enable_water_wave")){
enable_water_wave = 1;
float water_wave_height = g_settings->getFloat("water_wave_height");
services->setVertexShaderConstant("waterWaveHeight", &water_wave_height, 1);
float water_wave_speed = g_settings->getFloat("water_wave_speed");
services->setVertexShaderConstant("waterWaveSpeed", &water_wave_speed, 1);
float water_wave_length = g_settings->getFloat("water_wave_length");
services->setVertexShaderConstant("waterWaveLength", &water_wave_length, 1);
}
services->setVertexShaderConstant("enableWaterWave", &enable_water_wave, 1);
LocalPlayer* player = m_client->getEnv().getLocalPlayer();
v3f eye_position = player->getEyePosition();
services->setPixelShaderConstant("eyePosition", (irr::f32*)&eye_position, 3);