paysages : Small changes.
git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@488 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
parent
67eadf9048
commit
eaf72f810c
17 changed files with 123 additions and 111 deletions
|
@ -131,7 +131,7 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
for (outputcount = 0; outputcount < conf_nb_pictures; outputcount++)
|
for (outputcount = 0; outputcount < conf_nb_pictures; outputcount++)
|
||||||
{
|
{
|
||||||
autoSetDaytimeFraction(conf_daytime_start);
|
/*autoSetDaytimeFraction(conf_daytime_start);*/ /* TODO */
|
||||||
|
|
||||||
sprintf(outputpath, "output/pic%05d.png", outputcount);
|
sprintf(outputpath, "output/pic%05d.png", outputcount);
|
||||||
startRender(&renderer, outputpath, conf_render_params);
|
startRender(&renderer, outputpath, conf_render_params);
|
||||||
|
|
|
@ -222,7 +222,7 @@ bool DialogNoise::getNoise(QWidget* parent, NoiseGenerator* noise)
|
||||||
return (result != 0) ? true : false;
|
return (result != 0) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DialogNoise::closeEvent(QCloseEvent* e)
|
void DialogNoise::closeEvent(QCloseEvent*)
|
||||||
{
|
{
|
||||||
reject();
|
reject();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ ExplorerChunkSky::ExplorerChunkSky(Renderer* renderer, double size, SkyboxOrient
|
||||||
maintain();
|
maintain();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExplorerChunkSky::onRenderEvent(QGLWidget* widget)
|
void ExplorerChunkSky::onRenderEvent(QGLWidget*)
|
||||||
{
|
{
|
||||||
double size = _box_size;
|
double size = _box_size;
|
||||||
Vector3 camera = renderer()->camera_location;
|
Vector3 camera = renderer()->camera_location;
|
||||||
|
@ -85,7 +85,7 @@ void ExplorerChunkSky::onRenderEvent(QGLWidget* widget)
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
double ExplorerChunkSky::getDisplayedSizeHint(CameraDefinition* camera)
|
double ExplorerChunkSky::getDisplayedSizeHint(CameraDefinition*)
|
||||||
{
|
{
|
||||||
return 1000.0;
|
return 1000.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,7 +94,7 @@ void ExplorerChunkTerrain::onCameraEvent(CameraDefinition* camera)
|
||||||
_lock_data.unlock();
|
_lock_data.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExplorerChunkTerrain::onRenderEvent(QGLWidget* widget)
|
void ExplorerChunkTerrain::onRenderEvent(QGLWidget*)
|
||||||
{
|
{
|
||||||
_lock_data.lock();
|
_lock_data.lock();
|
||||||
int tessellation_size = _tessellation_current_size;
|
int tessellation_size = _tessellation_current_size;
|
||||||
|
|
|
@ -77,7 +77,8 @@ FormAtmosphere::FormAtmosphere(QWidget *parent):
|
||||||
addPreview(previewEast, QString(tr("East preview")));
|
addPreview(previewEast, QString(tr("East preview")));
|
||||||
|
|
||||||
addInputEnum(tr("Color model"), (int*)&_definition->model, QStringList(tr("Preetham/Shirley analytic model")) << tr("Bruneton/Neyret precomputed model"));
|
addInputEnum(tr("Color model"), (int*)&_definition->model, QStringList(tr("Preetham/Shirley analytic model")) << tr("Bruneton/Neyret precomputed model"));
|
||||||
addInputDouble(tr("Day time"), &_definition->daytime, 0.14, 0.86, 0.002, 0.1);
|
addInputInt(tr("Day time (hour)"), &_definition->hour, 0, 23, 1, 10);
|
||||||
|
addInputInt(tr("Day time (minute)"), &_definition->minute, 0, 59, 1, 10);
|
||||||
addInputColor(tr("Sun color"), &_definition->sun_color);
|
addInputColor(tr("Sun color"), &_definition->sun_color);
|
||||||
addInputDouble(tr("Sun radius"), &_definition->sun_radius, 0.0, 0.4, 0.004, 0.04);
|
addInputDouble(tr("Sun radius"), &_definition->sun_radius, 0.0, 0.4, 0.004, 0.04);
|
||||||
addInputDouble(tr("Sun halo radius"), &_definition->sun_halo_size, 0.0, 0.4, 0.004, 0.04);
|
addInputDouble(tr("Sun halo radius"), &_definition->sun_halo_size, 0.0, 0.4, 0.004, 0.04);
|
||||||
|
|
|
@ -47,7 +47,7 @@ protected:
|
||||||
{
|
{
|
||||||
cloudsLayerCopyDefinition(_original_layer, _preview_layer);
|
cloudsLayerCopyDefinition(_original_layer, _preview_layer);
|
||||||
}
|
}
|
||||||
static Color _applyLightStatus(Renderer* renderer, LightStatus* status, Vector3 location, Vector3 normal, SurfaceMaterial material)
|
static Color _applyLightStatus(Renderer*, LightStatus*, Vector3, Vector3, SurfaceMaterial)
|
||||||
{
|
{
|
||||||
return COLOR_WHITE;
|
return COLOR_WHITE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ int main(int argc, char** argv)
|
||||||
app.installTranslator(&qtTranslator);
|
app.installTranslator(&qtTranslator);
|
||||||
}
|
}
|
||||||
|
|
||||||
splash->showMessage(app.tr("Preloading..."), Qt::AlignCenter, Qt::white);
|
//splash->showMessage(app.tr("Preloading..."), Qt::AlignCenter, Qt::white);
|
||||||
app.processEvents();
|
app.processEvents();
|
||||||
|
|
||||||
paysagesInit();
|
paysagesInit();
|
||||||
|
@ -184,7 +184,6 @@ void MainWindow::fileNew()
|
||||||
if (QMessageBox::question(this, tr("Paysages 3D - New scenery"), tr("Do you want to start a new scenery ? Any unsaved changes will be lost."), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes)
|
if (QMessageBox::question(this, tr("Paysages 3D - New scenery"), tr("Do you want to start a new scenery ? Any unsaved changes will be lost."), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes)
|
||||||
{
|
{
|
||||||
autoGenRealisticLandscape(0);
|
autoGenRealisticLandscape(0);
|
||||||
autoSetDaytime(8, 30);
|
|
||||||
refreshAll();
|
refreshAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
41
lib_paysages/atmosphere/basic.c
Normal file
41
lib_paysages/atmosphere/basic.c
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#include "private.h"
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include "../renderer.h"
|
||||||
|
|
||||||
|
Color basicApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base)
|
||||||
|
{
|
||||||
|
Vector3 direction = v3Sub(location, renderer->camera_location);
|
||||||
|
double distance = v3Norm(direction);
|
||||||
|
AtmosphereDefinition* definition = renderer->atmosphere->definition;
|
||||||
|
double near = 10.0 - definition->humidity * 10.0;
|
||||||
|
double far = 100.0 - definition->humidity * 90.0;
|
||||||
|
double max = 0.85 + definition->humidity * 0.12;
|
||||||
|
|
||||||
|
assert(near < far);
|
||||||
|
|
||||||
|
if (distance < near)
|
||||||
|
{
|
||||||
|
return base;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (distance > far)
|
||||||
|
{
|
||||||
|
distance = far;
|
||||||
|
}
|
||||||
|
double factor = (distance - near) / (far - near);
|
||||||
|
|
||||||
|
/* TODO Get sky color without celestial objects (sun, stars...) */
|
||||||
|
double angle = (1.0 - factor) * (1.0 - factor) * (1.0 - factor) * (1.0 - factor) * M_PI_4;
|
||||||
|
direction = v3Normalize(direction);
|
||||||
|
direction.y = sin(angle);
|
||||||
|
Color sky = renderer->atmosphere->getSkyColor(renderer, v3Normalize(direction));
|
||||||
|
|
||||||
|
sky.a = max * factor;
|
||||||
|
colorMask(&base, &sky);
|
||||||
|
|
||||||
|
return base;
|
||||||
|
}
|
||||||
|
}
|
|
@ -25,7 +25,7 @@ static const double exposure = 0.4;
|
||||||
static const double ISun = 100.0;
|
static const double ISun = 100.0;
|
||||||
static const double AVERAGE_GROUND_REFLECTANCE = 0.1;
|
static const double AVERAGE_GROUND_REFLECTANCE = 0.1;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
#define RES_MU 128
|
#define RES_MU 128
|
||||||
#define RES_MU_S 32
|
#define RES_MU_S 32
|
||||||
#define RES_R 32
|
#define RES_R 32
|
||||||
|
|
|
@ -23,7 +23,24 @@ static int _inited = 0;
|
||||||
/******************** Definition ********************/
|
/******************** Definition ********************/
|
||||||
static void _validateDefinition(AtmosphereDefinition* definition)
|
static void _validateDefinition(AtmosphereDefinition* definition)
|
||||||
{
|
{
|
||||||
UNUSED(definition);
|
if (definition->hour < 0)
|
||||||
|
{
|
||||||
|
definition->hour = 0;
|
||||||
|
}
|
||||||
|
if (definition->hour > 23)
|
||||||
|
{
|
||||||
|
definition->hour = 23;
|
||||||
|
}
|
||||||
|
if (definition->minute < 0)
|
||||||
|
{
|
||||||
|
definition->minute = 0;
|
||||||
|
}
|
||||||
|
if (definition->minute > 59)
|
||||||
|
{
|
||||||
|
definition->minute = 59;
|
||||||
|
}
|
||||||
|
|
||||||
|
definition->_daytime = (double)definition->hour / 24.0 + (double)definition->minute / 1440.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static AtmosphereDefinition* _createDefinition()
|
static AtmosphereDefinition* _createDefinition()
|
||||||
|
@ -54,7 +71,8 @@ static void _deleteDefinition(AtmosphereDefinition* definition)
|
||||||
static void _copyDefinition(AtmosphereDefinition* source, AtmosphereDefinition* destination)
|
static void _copyDefinition(AtmosphereDefinition* source, AtmosphereDefinition* destination)
|
||||||
{
|
{
|
||||||
destination->model = source->model;
|
destination->model = source->model;
|
||||||
destination->daytime = source->daytime;
|
destination->hour = source->hour;
|
||||||
|
destination->minute = source->minute;
|
||||||
destination->sun_color = source->sun_color;
|
destination->sun_color = source->sun_color;
|
||||||
destination->sun_radius = source->sun_radius;
|
destination->sun_radius = source->sun_radius;
|
||||||
destination->sun_halo_size = source->sun_halo_size;
|
destination->sun_halo_size = source->sun_halo_size;
|
||||||
|
@ -69,7 +87,8 @@ static void _copyDefinition(AtmosphereDefinition* source, AtmosphereDefinition*
|
||||||
static void _saveDefinition(PackStream* stream, AtmosphereDefinition* definition)
|
static void _saveDefinition(PackStream* stream, AtmosphereDefinition* definition)
|
||||||
{
|
{
|
||||||
packWriteInt(stream, (int*)&definition->model);
|
packWriteInt(stream, (int*)&definition->model);
|
||||||
packWriteDouble(stream, &definition->daytime);
|
packWriteInt(stream, &definition->hour);
|
||||||
|
packWriteInt(stream, &definition->minute);
|
||||||
colorSave(stream, &definition->sun_color);
|
colorSave(stream, &definition->sun_color);
|
||||||
packWriteDouble(stream, &definition->sun_radius);
|
packWriteDouble(stream, &definition->sun_radius);
|
||||||
packWriteDouble(stream, &definition->sun_halo_size);
|
packWriteDouble(stream, &definition->sun_halo_size);
|
||||||
|
@ -81,7 +100,8 @@ static void _saveDefinition(PackStream* stream, AtmosphereDefinition* definition
|
||||||
static void _loadDefinition(PackStream* stream, AtmosphereDefinition* definition)
|
static void _loadDefinition(PackStream* stream, AtmosphereDefinition* definition)
|
||||||
{
|
{
|
||||||
packReadInt(stream, (int*)&definition->model);
|
packReadInt(stream, (int*)&definition->model);
|
||||||
packReadDouble(stream, &definition->daytime);
|
packReadInt(stream, &definition->hour);
|
||||||
|
packReadInt(stream, &definition->minute);
|
||||||
colorLoad(stream, &definition->sun_color);
|
colorLoad(stream, &definition->sun_color);
|
||||||
packReadDouble(stream, &definition->sun_radius);
|
packReadDouble(stream, &definition->sun_radius);
|
||||||
packReadDouble(stream, &definition->sun_halo_size);
|
packReadDouble(stream, &definition->sun_halo_size);
|
||||||
|
@ -175,7 +195,7 @@ static Color _getSkyColor(Renderer* renderer, Vector3 direction)
|
||||||
static Vector3 _getSunDirection(Renderer* renderer)
|
static Vector3 _getSunDirection(Renderer* renderer)
|
||||||
{
|
{
|
||||||
Vector3 result;
|
Vector3 result;
|
||||||
double sun_angle = (renderer->atmosphere->definition->daytime + 0.75) * M_PI * 2.0;
|
double sun_angle = (renderer->atmosphere->definition->_daytime + 0.75) * M_PI * 2.0;
|
||||||
result.x = cos(sun_angle);
|
result.x = cos(sun_angle);
|
||||||
result.y = sin(sun_angle);
|
result.y = sin(sun_angle);
|
||||||
result.z = 0.0;
|
result.z = 0.0;
|
||||||
|
@ -207,7 +227,7 @@ static int _getSkydomeLights(Renderer* renderer, LightDefinition* lights, int ma
|
||||||
{
|
{
|
||||||
definition = renderer->atmosphere->definition;
|
definition = renderer->atmosphere->definition;
|
||||||
|
|
||||||
sun_angle = (definition->daytime + 0.75) * M_PI * 2.0;
|
sun_angle = (definition->_daytime + 0.75) * M_PI * 2.0;
|
||||||
sun_direction.x = cos(sun_angle);
|
sun_direction.x = cos(sun_angle);
|
||||||
sun_direction.y = sin(sun_angle);
|
sun_direction.y = sin(sun_angle);
|
||||||
sun_direction.z = 0.0;
|
sun_direction.z = 0.0;
|
||||||
|
@ -321,14 +341,11 @@ static void _bindRenderer(AtmosphereRenderer* renderer, AtmosphereDefinition* de
|
||||||
|
|
||||||
switch (definition->model)
|
switch (definition->model)
|
||||||
{
|
{
|
||||||
case ATMOSPHERE_MODEL_PREETHAM:
|
|
||||||
renderer->applyAerialPerspective = preethamApplyAerialPerspective;
|
|
||||||
break;
|
|
||||||
case ATMOSPHERE_MODEL_BRUNETON:
|
case ATMOSPHERE_MODEL_BRUNETON:
|
||||||
renderer->applyAerialPerspective = brunetonApplyAerialPerspective;
|
renderer->applyAerialPerspective = brunetonApplyAerialPerspective;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
renderer->applyAerialPerspective = _fakeApplyAerialPerspective;
|
renderer->applyAerialPerspective = basicApplyAerialPerspective;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutexAcquire(cache->lock);
|
mutexAcquire(cache->lock);
|
||||||
|
|
|
@ -135,33 +135,3 @@ Color preethamGetSkyColor(AtmosphereDefinition* definition, Vector3 eye, Vector3
|
||||||
colorMask(&result, &humidity_color);
|
colorMask(&result, &humidity_color);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
Color preethamApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base)
|
|
||||||
{
|
|
||||||
Vector3 ray = v3Sub(location, renderer->camera_location);
|
|
||||||
Vector3 direction = v3Normalize(ray);
|
|
||||||
double distance = v3Norm(ray);
|
|
||||||
AtmosphereDefinition* definition = renderer->atmosphere->definition;
|
|
||||||
double near = 10.0 - definition->humidity * 10.0;
|
|
||||||
double far = 100.0 - definition->humidity * 90.0;
|
|
||||||
double max = 0.85 + definition->humidity * 0.12;
|
|
||||||
|
|
||||||
assert(near < far);
|
|
||||||
|
|
||||||
if (distance < near)
|
|
||||||
{
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Vector3 sun_position = renderer->atmosphere->getSunDirection(renderer);
|
|
||||||
Color sky = preethamGetSkyColor(definition, renderer->camera_location, direction, sun_position);
|
|
||||||
if (distance > far)
|
|
||||||
{
|
|
||||||
distance = far;
|
|
||||||
}
|
|
||||||
sky.a = max * ((distance - near) / (far - near));
|
|
||||||
colorMask(&base, &sky);
|
|
||||||
return base;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -22,30 +22,35 @@ void atmosphereAutoPreset(AtmosphereDefinition* definition, AtmospherePreset pre
|
||||||
{
|
{
|
||||||
case ATMOSPHERE_PRESET_CLEAR_DAY:
|
case ATMOSPHERE_PRESET_CLEAR_DAY:
|
||||||
definition->model = ATMOSPHERE_MODEL_BRUNETON;
|
definition->model = ATMOSPHERE_MODEL_BRUNETON;
|
||||||
definition->daytime = 0.4;
|
definition->hour = 15;
|
||||||
|
definition->minute = 0;
|
||||||
definition->dome_lighting = 0.6;
|
definition->dome_lighting = 0.6;
|
||||||
break;
|
break;
|
||||||
case ATMOSPHERE_PRESET_CLEAR_SUNSET:
|
case ATMOSPHERE_PRESET_CLEAR_SUNSET:
|
||||||
definition->model = ATMOSPHERE_MODEL_BRUNETON;
|
definition->model = ATMOSPHERE_MODEL_BRUNETON;
|
||||||
definition->daytime = 0.74;
|
definition->hour = 17;
|
||||||
|
definition->minute = 45;
|
||||||
definition->dome_lighting = 0.8;
|
definition->dome_lighting = 0.8;
|
||||||
definition->sun_radius = 0.03;
|
definition->sun_radius = 0.03;
|
||||||
break;
|
break;
|
||||||
case ATMOSPHERE_PRESET_HAZY_MORNING:
|
case ATMOSPHERE_PRESET_HAZY_MORNING:
|
||||||
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
||||||
definition->daytime = 0.3;
|
definition->hour = 8;
|
||||||
|
definition->minute = 30;
|
||||||
definition->dome_lighting = 0.5;
|
definition->dome_lighting = 0.5;
|
||||||
definition->humidity = 0.3;
|
definition->humidity = 0.3;
|
||||||
break;
|
break;
|
||||||
case ATMOSPHERE_PRESET_FOGGY:
|
case ATMOSPHERE_PRESET_FOGGY:
|
||||||
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
||||||
definition->daytime = 0.4;
|
definition->hour = 15;
|
||||||
|
definition->minute = 0;
|
||||||
definition->dome_lighting = 0.7;
|
definition->dome_lighting = 0.7;
|
||||||
definition->humidity = 0.6;
|
definition->humidity = 0.6;
|
||||||
break;
|
break;
|
||||||
case ATMOSPHERE_PRESET_STORMY:
|
case ATMOSPHERE_PRESET_STORMY:
|
||||||
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
definition->model = ATMOSPHERE_MODEL_PREETHAM;
|
||||||
definition->daytime = 0.4;
|
definition->hour = 15;
|
||||||
|
definition->minute = 0;
|
||||||
definition->dome_lighting = 0.3;
|
definition->dome_lighting = 0.3;
|
||||||
definition->humidity = 0.9;
|
definition->humidity = 0.9;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5,11 +5,12 @@
|
||||||
|
|
||||||
#define SPHERE_SIZE 1000.0
|
#define SPHERE_SIZE 1000.0
|
||||||
|
|
||||||
|
Color basicApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base);
|
||||||
|
|
||||||
void brunetonInit();
|
void brunetonInit();
|
||||||
Color brunetonGetSkyColor(AtmosphereDefinition* definition, Vector3 eye, Vector3 direction, Vector3 sun_position);
|
Color brunetonGetSkyColor(AtmosphereDefinition* definition, Vector3 eye, Vector3 direction, Vector3 sun_position);
|
||||||
Color brunetonApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base);
|
Color brunetonApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base);
|
||||||
|
|
||||||
Color preethamGetSkyColor(AtmosphereDefinition* definition, Vector3 eye, Vector3 direction, Vector3 sun_position);
|
Color preethamGetSkyColor(AtmosphereDefinition* definition, Vector3 eye, Vector3 direction, Vector3 sun_position);
|
||||||
Color preethamApplyAerialPerspective(Renderer* renderer, Vector3 location, Color base);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,13 +29,16 @@ typedef enum
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
AtmosphereModel model;
|
AtmosphereModel model;
|
||||||
double daytime;
|
int hour;
|
||||||
|
int minute;
|
||||||
double humidity;
|
double humidity;
|
||||||
Color sun_color;
|
Color sun_color;
|
||||||
double sun_radius;
|
double sun_radius;
|
||||||
double sun_halo_size;
|
double sun_halo_size;
|
||||||
Curve* sun_halo_profile;
|
Curve* sun_halo_profile;
|
||||||
double dome_lighting;
|
double dome_lighting;
|
||||||
|
|
||||||
|
double _daytime;
|
||||||
} AtmosphereDefinition;
|
} AtmosphereDefinition;
|
||||||
|
|
||||||
typedef int (*FuncAtmosphereGetSkydomeLights)(Renderer* renderer, LightDefinition* array, int max_lights);
|
typedef int (*FuncAtmosphereGetSkydomeLights)(Renderer* renderer, LightDefinition* array, int max_lights);
|
||||||
|
|
|
@ -16,28 +16,6 @@
|
||||||
#include "water.h"
|
#include "water.h"
|
||||||
#include "zone.h"
|
#include "zone.h"
|
||||||
|
|
||||||
void autoSetDaytime(int hour, int minute)
|
|
||||||
{
|
|
||||||
autoSetDaytimeFraction((double)hour / 24.0 + (double)minute / 1440.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void autoSetDaytimeFraction(double daytime)
|
|
||||||
{
|
|
||||||
AtmosphereDefinition* atmosphere;
|
|
||||||
|
|
||||||
daytime = fmod(daytime, 1.0);
|
|
||||||
if (daytime < 0.0)
|
|
||||||
{
|
|
||||||
daytime += 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
atmosphere = AtmosphereDefinitionClass.create();
|
|
||||||
sceneryGetAtmosphere(atmosphere);
|
|
||||||
atmosphere->daytime = daytime;
|
|
||||||
scenerySetAtmosphere(atmosphere);
|
|
||||||
AtmosphereDefinitionClass.destroy(atmosphere);
|
|
||||||
}
|
|
||||||
|
|
||||||
void autoGenRealisticLandscape(int seed)
|
void autoGenRealisticLandscape(int seed)
|
||||||
{
|
{
|
||||||
WaterDefinition water;
|
WaterDefinition water;
|
||||||
|
|
|
@ -7,8 +7,6 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void autoSetDaytime(int hour, int minute);
|
|
||||||
void autoSetDaytimeFraction(double daytime);
|
|
||||||
void autoGenRealisticLandscape(int seed);
|
void autoGenRealisticLandscape(int seed);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -32,7 +32,6 @@ void paysagesInit()
|
||||||
cameraDeleteDefinition(&camera);
|
cameraDeleteDefinition(&camera);
|
||||||
|
|
||||||
autoGenRealisticLandscape(0);
|
autoGenRealisticLandscape(0);
|
||||||
autoSetDaytime(8, 30);
|
|
||||||
|
|
||||||
// DEBUG
|
// DEBUG
|
||||||
/*double last_height, height, x;
|
/*double last_height, height, x;
|
||||||
|
|
Loading…
Reference in a new issue