paysages: Small changes.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@224 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
375c4f24b8
commit
d9ad396d12
6 changed files with 36 additions and 27 deletions
|
@ -101,13 +101,13 @@ static Color _cbPreviewRender(SmallPreview* preview, double x, double y, double
|
||||||
|
|
||||||
static void _cbEditNoiseDone(NoiseGenerator* generator)
|
static void _cbEditNoiseDone(NoiseGenerator* generator)
|
||||||
{
|
{
|
||||||
noiseCopy(generator, _definition.height_noise);
|
noiseCopy(generator, _definition.waves_noise);
|
||||||
guiPreviewRedraw(_preview_render);
|
guiPreviewRedraw(_preview_render);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _cbEditNoise(GtkWidget* widget, gpointer data)
|
static void _cbEditNoise(GtkWidget* widget, gpointer data)
|
||||||
{
|
{
|
||||||
guiNoiseEdit(_definition.height_noise, _cbEditNoiseDone);
|
guiNoiseEdit(_definition.waves_noise, _cbEditNoiseDone);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _cbHeightChanged(GtkRange* range, gpointer data)
|
static void _cbHeightChanged(GtkRange* range, gpointer data)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "preview.h"
|
#include "preview.h"
|
||||||
#include "formwater.h"
|
#include "formwater.h"
|
||||||
|
#include "tools.h"
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QSlider>
|
#include <QSlider>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
@ -32,7 +33,7 @@ protected:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QColor(_definition.main_color.r * 255.0, _definition.main_color.g * 255.0, _definition.main_color.b * 255.0);
|
return colorToQColor(_definition.main_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -64,7 +65,7 @@ protected:
|
||||||
if (look.y > -0.0001)
|
if (look.y > -0.0001)
|
||||||
{
|
{
|
||||||
result = this->rayCastFromWater(eye, look).hit_color;
|
result = this->rayCastFromWater(eye, look).hit_color;
|
||||||
return QColor(result.r * 255.0, result.g * 255.0, result.b * 255.0);
|
return colorToQColor(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
location.x = eye.x - look.x * eye.y / look.y;
|
location.x = eye.x - look.x * eye.y / look.y;
|
||||||
|
@ -74,7 +75,7 @@ protected:
|
||||||
if (location.z > 0.0)
|
if (location.z > 0.0)
|
||||||
{
|
{
|
||||||
result = this->rayCastFromWater(eye, look).hit_color;
|
result = this->rayCastFromWater(eye, look).hit_color;
|
||||||
return QColor(result.r * 255.0, result.g * 255.0, result.b * 255.0);
|
return colorToQColor(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
definition = _definition;
|
definition = _definition;
|
||||||
|
@ -86,7 +87,7 @@ protected:
|
||||||
quality.force_detail = 0.0001;
|
quality.force_detail = 0.0001;
|
||||||
|
|
||||||
result = waterGetColorCustom(location, look, &definition, &quality, &environment).final;
|
result = waterGetColorCustom(location, look, &definition, &quality, &environment).final;
|
||||||
return QColor(result.r * 255.0, result.g * 255.0, result.b * 255.0);
|
return colorToQColor(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -137,8 +138,9 @@ FormWater::FormWater(QWidget *parent):
|
||||||
addInputDouble("Reflection", &_definition.reflection, 0.0, 1.0, 0.001, 0.1);
|
addInputDouble("Reflection", &_definition.reflection, 0.0, 1.0, 0.001, 0.1);
|
||||||
addInputColor("Depth color", &_definition.depth_color);
|
addInputColor("Depth color", &_definition.depth_color);
|
||||||
addInputDouble("Depth filtering", &_definition.transparency_depth, 0.0, 100.0, 0.5, 5.0);
|
addInputDouble("Depth filtering", &_definition.transparency_depth, 0.0, 100.0, 0.5, 5.0);
|
||||||
addInputNoise("Wave noise", _definition.height_noise);
|
addInputNoise("Waves noise", _definition.waves_noise);
|
||||||
addInputDouble("Wave factor", &_definition.height_noise_factor, 0.0, 2.0, 0.01, 0.2);
|
addInputDouble("Waves height", &_definition.waves_noise_height, 0.0, 0.1, 0.001, 0.01);
|
||||||
|
addInputDouble("Waves scaling", &_definition.waves_noise_scale, 0.01, 1.0, 0.01, 0.1);
|
||||||
|
|
||||||
revertConfig();
|
revertConfig();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,11 @@
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
|
|
||||||
#include "../lib_paysages/shared/types.h"
|
#include "../lib_paysages/shared/types.h"
|
||||||
|
#include "../lib_paysages/shared/functions.h"
|
||||||
|
|
||||||
static inline QColor colorToQColor(Color color)
|
static inline QColor colorToQColor(Color color)
|
||||||
{
|
{
|
||||||
|
colorNormalize(&color);
|
||||||
return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0);
|
return QColor(color.r * 255.0, color.g * 255.0, color.b * 255.0, color.a * 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -213,13 +213,14 @@ void autoGenRealisticLandscape(int seed)
|
||||||
water.depth_color.g = 0.2;
|
water.depth_color.g = 0.2;
|
||||||
water.depth_color.b = 0.3;
|
water.depth_color.b = 0.3;
|
||||||
water.depth_color.a = 1.0;
|
water.depth_color.a = 1.0;
|
||||||
water.height_noise = noiseCreateGenerator();
|
water.waves_noise = noiseCreateGenerator();
|
||||||
water.height_noise_factor = 1.0;
|
water.waves_noise_height = 0.015;
|
||||||
noiseGenerateBaseNoise(water.height_noise, 262144);
|
water.waves_noise_scale = 0.2;
|
||||||
noiseAddLevelsSimple(water.height_noise, 2, 0.2, 0.015);
|
noiseGenerateBaseNoise(water.waves_noise, 262144);
|
||||||
noiseAddLevelsSimple(water.height_noise, 3, 0.03, 0.003);
|
noiseAddLevelsSimple(water.waves_noise, 2, 1.0, 1.0);
|
||||||
|
noiseAddLevelsSimple(water.waves_noise, 3, 0.15, 0.1);
|
||||||
waterSetDefinition(water);
|
waterSetDefinition(water);
|
||||||
noiseDeleteGenerator(water.height_noise);
|
noiseDeleteGenerator(water.waves_noise);
|
||||||
|
|
||||||
/* Sky */
|
/* Sky */
|
||||||
sky.sun_color = colorGradationCreate();
|
sky.sun_color = colorGradationCreate();
|
||||||
|
|
|
@ -55,8 +55,9 @@ void waterSave(FILE* f)
|
||||||
toolsSaveDouble(f, _definition.transparency_depth);
|
toolsSaveDouble(f, _definition.transparency_depth);
|
||||||
toolsSaveDouble(f, _definition.transparency);
|
toolsSaveDouble(f, _definition.transparency);
|
||||||
toolsSaveDouble(f, _definition.reflection);
|
toolsSaveDouble(f, _definition.reflection);
|
||||||
noiseSave(_definition.height_noise, f);
|
noiseSave(_definition.waves_noise, f);
|
||||||
toolsSaveDouble(f, _definition.height_noise_factor);
|
toolsSaveDouble(f, _definition.waves_noise_height);
|
||||||
|
toolsSaveDouble(f, _definition.waves_noise_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void waterLoad(FILE* f)
|
void waterLoad(FILE* f)
|
||||||
|
@ -67,8 +68,9 @@ void waterLoad(FILE* f)
|
||||||
_definition.transparency_depth = toolsLoadDouble(f);
|
_definition.transparency_depth = toolsLoadDouble(f);
|
||||||
_definition.transparency = toolsLoadDouble(f);
|
_definition.transparency = toolsLoadDouble(f);
|
||||||
_definition.reflection = toolsLoadDouble(f);
|
_definition.reflection = toolsLoadDouble(f);
|
||||||
noiseLoad(_definition.height_noise, f);
|
noiseLoad(_definition.waves_noise, f);
|
||||||
_definition.height_noise_factor = toolsLoadDouble(f);
|
_definition.waves_noise_height = toolsLoadDouble(f);
|
||||||
|
_definition.waves_noise_scale = toolsLoadDouble(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
WaterDefinition waterCreateDefinition()
|
WaterDefinition waterCreateDefinition()
|
||||||
|
@ -78,25 +80,26 @@ WaterDefinition waterCreateDefinition()
|
||||||
result.main_color = COLOR_BLACK;
|
result.main_color = COLOR_BLACK;
|
||||||
result.depth_color = COLOR_BLACK;
|
result.depth_color = COLOR_BLACK;
|
||||||
result.height = -1000.0;
|
result.height = -1000.0;
|
||||||
result.height_noise = noiseCreateGenerator();
|
result.waves_noise = noiseCreateGenerator();
|
||||||
result.height_noise_factor = 1.0;
|
result.waves_noise_height = 0.02;
|
||||||
|
result.waves_noise_scale = 0.2;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void waterDeleteDefinition(WaterDefinition definition)
|
void waterDeleteDefinition(WaterDefinition definition)
|
||||||
{
|
{
|
||||||
noiseDeleteGenerator(definition.height_noise);
|
noiseDeleteGenerator(definition.waves_noise);
|
||||||
}
|
}
|
||||||
|
|
||||||
void waterCopyDefinition(WaterDefinition source, WaterDefinition* destination)
|
void waterCopyDefinition(WaterDefinition source, WaterDefinition* destination)
|
||||||
{
|
{
|
||||||
NoiseGenerator* noise;
|
NoiseGenerator* noise;
|
||||||
|
|
||||||
noise = destination->height_noise;
|
noise = destination->waves_noise;
|
||||||
*destination = source;
|
*destination = source;
|
||||||
destination->height_noise = noise;
|
destination->waves_noise = noise;
|
||||||
noiseCopy(source.height_noise, destination->height_noise);
|
noiseCopy(source.waves_noise, destination->waves_noise);
|
||||||
}
|
}
|
||||||
|
|
||||||
void waterSetDefinition(WaterDefinition config)
|
void waterSetDefinition(WaterDefinition config)
|
||||||
|
@ -123,7 +126,7 @@ WaterQuality waterGetQuality()
|
||||||
|
|
||||||
static inline double _getHeight(WaterDefinition* definition, double x, double z, double detail)
|
static inline double _getHeight(WaterDefinition* definition, double x, double z, double detail)
|
||||||
{
|
{
|
||||||
return definition->height + noiseGet2DDetail(definition->height_noise, x, z, detail) * definition->height_noise_factor;
|
return definition->height + noiseGet2DDetail(definition->waves_noise, x / definition->waves_noise_scale, z / definition->waves_noise_scale, detail) * definition->waves_noise_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline Vector3 _getNormal(WaterDefinition* definition, Vector3 base, double detail)
|
static inline Vector3 _getNormal(WaterDefinition* definition, Vector3 base, double detail)
|
||||||
|
|
|
@ -16,8 +16,9 @@ typedef struct
|
||||||
Color main_color;
|
Color main_color;
|
||||||
Color depth_color;
|
Color depth_color;
|
||||||
double transparency_depth;
|
double transparency_depth;
|
||||||
NoiseGenerator* height_noise;
|
NoiseGenerator* waves_noise;
|
||||||
double height_noise_factor;
|
double waves_noise_height;
|
||||||
|
double waves_noise_scale;
|
||||||
} WaterDefinition;
|
} WaterDefinition;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
Loading…
Reference in a new issue