1
0
Fork 0

Started laying out infrastructure for ground lighting.

Renamed fg_random -> sg_random.
This commit is contained in:
curt 2000-12-04 05:26:40 +00:00
parent d3c4018baa
commit 3f32f2680d
2 changed files with 38 additions and 11 deletions

View file

@ -64,7 +64,7 @@
#include <simgear/constants.h> // for VERSION #include <simgear/constants.h> // for VERSION
#include <simgear/debug/logstream.hxx> #include <simgear/debug/logstream.hxx>
#include <simgear/math/polar3d.hxx> #include <simgear/math/polar3d.hxx>
#include <simgear/math/fg_random.h> #include <simgear/math/sg_random.h>
#include <simgear/misc/fgpath.hxx> #include <simgear/misc/fgpath.hxx>
#include <simgear/sky/sky.hxx> #include <simgear/sky/sky.hxx>
#include <simgear/timing/sg_time.hxx> #include <simgear/timing/sg_time.hxx>
@ -162,6 +162,10 @@ ssgBranch *terrain = NULL;
ssgSelector *penguin_sel = NULL; ssgSelector *penguin_sel = NULL;
ssgTransform *penguin_pos = NULL; ssgTransform *penguin_pos = NULL;
ssgRoot *lighting = NULL;
ssgBranch *ground = NULL;
ssgBranch *airport = NULL;
#ifdef FG_NETWORK_OLK #ifdef FG_NETWORK_OLK
ssgSelector *fgd_sel = NULL; ssgSelector *fgd_sel = NULL;
ssgTransform *fgd_pos = NULL; ssgTransform *fgd_pos = NULL;
@ -293,6 +297,10 @@ void fgRenderFrame( void ) {
fgLIGHT *l = &cur_light_params; fgLIGHT *l = &cur_light_params;
static double last_visibility = -9999; static double last_visibility = -9999;
static GLfloat fog_exp_density;
static GLfloat fog_exp2_density;
static GLfloat fog_exp2_punch_through;
// double angle; // double angle;
// GLfloat black[4] = { 0.0, 0.0, 0.0, 1.0 }; // GLfloat black[4] = { 0.0, 0.0, 0.0, 1.0 };
// GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 }; // GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 };
@ -465,18 +473,17 @@ void fgRenderFrame( void ) {
// cout << "----> updating fog params" << endl; // cout << "----> updating fog params" << endl;
GLfloat fog_exp_density;
GLfloat fog_exp2_density;
// for GL_FOG_EXP // for GL_FOG_EXP
fog_exp_density = -log(0.01 / actual_visibility); fog_exp_density = -log(0.01 / actual_visibility);
// for GL_FOG_EXP2 // for GL_FOG_EXP2
fog_exp2_density = sqrt( -log(0.01) ) / actual_visibility; fog_exp2_density = sqrt( -log(0.01) ) / actual_visibility;
fog_exp2_punch_through = sqrt( -log(0.01) ) /
( actual_visibility * 1.5 );
}
// Set correct opengl fog density // Set correct opengl fog density
glFogf (GL_FOG_DENSITY, fog_exp2_density); glFogf (GL_FOG_DENSITY, fog_exp2_density);
}
// update the sky dome // update the sky dome
if ( globals->get_options()->get_skyblend() ) { if ( globals->get_options()->get_skyblend() ) {
@ -646,6 +653,14 @@ void fgRenderFrame( void ) {
glEnable( GL_DEPTH_TEST ); glEnable( GL_DEPTH_TEST );
ssgCullAndDraw( scene ); ssgCullAndDraw( scene );
// change state for lighting here
// draw lighting
// Set punch through fog density
glFogf (GL_FOG_DENSITY, fog_exp2_density);
ssgCullAndDraw( lighting );
// draw the sky cloud layers // draw the sky cloud layers
thesky->postDraw( cur_fdm_state->get_Altitude() * FEET_TO_METER ); thesky->postDraw( cur_fdm_state->get_Altitude() * FEET_TO_METER );
@ -1344,7 +1359,7 @@ int main( int argc, char **argv ) {
<< FLIGHTGEAR_VERSION << endl ); << FLIGHTGEAR_VERSION << endl );
// seed the random number generater // seed the random number generater
fg_srandom(); sg_srandom();
// Allocate global data structures. This needs to happen before // Allocate global data structures. This needs to happen before
// we parse command line options // we parse command line options
@ -1508,6 +1523,9 @@ int main( int argc, char **argv ) {
scene = new ssgRoot; scene = new ssgRoot;
scene->setName( "Scene" ); scene->setName( "Scene" );
lighting = new ssgRoot;
lighting->setName( "Lighting" );
// Initialize the sky // Initialize the sky
FGPath ephem_data_path( globals->get_options()->get_fg_root() ); FGPath ephem_data_path( globals->get_options()->get_fg_root() );
ephem_data_path.append( "Astro" ); ephem_data_path.append( "Astro" );
@ -1549,6 +1567,15 @@ int main( int argc, char **argv ) {
terrain->setName( "Terrain" ); terrain->setName( "Terrain" );
scene->addKid( terrain ); scene->addKid( terrain );
// Lighting
ground = new ssgBranch;
ground->setName( "Ground Lighting" );
lighting->addKid( ground );
airport = new ssgBranch;
airport->setName( "Airport Lighting" );
lighting->addKid( airport );
// temporary visible aircraft "own ship" // temporary visible aircraft "own ship"
penguin_sel = new ssgSelector; penguin_sel = new ssgSelector;
penguin_pos = new ssgTransform; penguin_pos = new ssgTransform;

View file

@ -40,7 +40,7 @@
#include <string.h> #include <string.h>
#include <simgear/debug/logstream.hxx> #include <simgear/debug/logstream.hxx>
#include <simgear/math/fg_random.h> #include <simgear/math/sg_random.h>
#include <simgear/misc/fgpath.hxx> #include <simgear/misc/fgpath.hxx>
#include <Objects/texload.h> #include <Objects/texload.h>
@ -74,7 +74,7 @@ void fgSplashInit ( void ) {
xglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); xglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// load in the texture data // load in the texture data
int num = (int)(fg_random() * 4.0 + 1.0); int num = (int)(sg_random() * 4.0 + 1.0);
char num_str[256]; char num_str[256];
sprintf(num_str, "%d", num); sprintf(num_str, "%d", num);