Updated from Norman to hack on clouds ... some progress.
This commit is contained in:
parent
bb4fe6907f
commit
c5f7f15f5b
5 changed files with 44 additions and 31 deletions
|
@ -98,7 +98,8 @@ fgfs-manual-zip:
|
||||||
|
|
||||||
fgfs-win32-bin:
|
fgfs-win32-bin:
|
||||||
(cd $(HOME); \
|
(cd $(HOME); \
|
||||||
zip -r fgfs-win32-bin-$(VERSION).zip FlightGear/bin )
|
zip -r fgfs-win32-bin-$(VERSION).zip FlightGear/runfgfs.bat \
|
||||||
|
FlightGear/bin/Win32 )
|
||||||
|
|
||||||
# make the win32-libs distribution (depricated)
|
# make the win32-libs distribution (depricated)
|
||||||
win32-libs:
|
win32-libs:
|
||||||
|
|
|
@ -645,6 +645,15 @@ void fgInitFDM() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void printMat(const sgVec4 *mat, char *name="")
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
cout << name << endl;
|
||||||
|
for(i=0; i<4; i++) {
|
||||||
|
cout <<" "<<mat[i][0]<<" "<<mat[i][1]<<" "<<mat[i][2]<<" "<<mat[i][3]<<endl;
|
||||||
|
}
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize view parameters
|
// Initialize view parameters
|
||||||
void fgInitView() {
|
void fgInitView() {
|
||||||
|
@ -652,6 +661,11 @@ void fgInitView() {
|
||||||
globals->get_aircraft_model()->update(0);
|
globals->get_aircraft_model()->update(0);
|
||||||
// run update for current view so that data is current...
|
// run update for current view so that data is current...
|
||||||
globals->get_viewmgr()->update(0);
|
globals->get_viewmgr()->update(0);
|
||||||
|
|
||||||
|
printMat(globals->get_current_view()->get_VIEW(),"VIEW");
|
||||||
|
printMat(globals->get_current_view()->get_UP(),"UP");
|
||||||
|
// printMat(globals->get_current_view()->get_LOCAL(),"LOCAL");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -896,16 +910,17 @@ bool fgInitSubsystems( void ) {
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Initialize the 3D cloud subsystem.
|
// Initialize the 3D cloud subsystem.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
||||||
SGPath cloud_path(globals->get_fg_root());
|
SGPath cloud_path(globals->get_fg_root());
|
||||||
cloud_path.append("large.sky");
|
cloud_path.append("large.sky");
|
||||||
|
SG_LOG(SG_GENERAL, SG_INFO, "Loading CLOUDS3d from: " << cloud_path.c_str());
|
||||||
if ( !sgCloud3d->Load( cloud_path.str() ) ) {
|
if ( !sgCloud3d->Load( cloud_path.str() ) ) {
|
||||||
fgSetBool("/sim/rendering/clouds3d", false);
|
fgSetBool("/sim/rendering/clouds3d", false);
|
||||||
|
SG_LOG(SG_GENERAL, SG_INFO, "CLOUDS3d FAILED: ");
|
||||||
}
|
}
|
||||||
|
SG_LOG(SG_GENERAL, SG_INFO, "CLOUDS3d Loaded: ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Initialize vor/ndb/ils/fix list management and query systems
|
// Initialize vor/ndb/ils/fix list management and query systems
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -391,11 +391,6 @@ void trRenderFrame( void ) {
|
||||||
|
|
||||||
globals->get_model_mgr()->draw();
|
globals->get_model_mgr()->draw();
|
||||||
globals->get_aircraft_model()->draw();
|
globals->get_aircraft_model()->draw();
|
||||||
|
|
||||||
// need to do this here as hud_and_panel state is static to
|
|
||||||
// main.cxx and HUD and Panel routines have to be called with
|
|
||||||
// knowledge of the the TR struct < see gui.cxx::HighResDump()
|
|
||||||
hud_and_panel->apply();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -454,18 +449,6 @@ void fgRenderFrame() {
|
||||||
// calculate our current position in cartesian space
|
// calculate our current position in cartesian space
|
||||||
globals->get_scenery()->set_center( globals->get_scenery()->get_next_center() );
|
globals->get_scenery()->set_center( globals->get_scenery()->get_next_center() );
|
||||||
|
|
||||||
// do it here. at init time the clouds are loaded BEFORE our position is known
|
|
||||||
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
|
||||||
if ( _bcloud_orig ) {
|
|
||||||
// cloud center can be anywhere in fgfs coordinates, but the tile
|
|
||||||
// cener is a good place as we'll have some visible when starting
|
|
||||||
posit = globals->get_scenery()->get_center();
|
|
||||||
sgClouds3d->Set_Cloud_Orig( _posit );
|
|
||||||
_bcloud_orig = false;
|
|
||||||
}
|
|
||||||
sgClouds3d->Update( current__view->get_absolute_view_pos() );
|
|
||||||
}
|
|
||||||
|
|
||||||
// update view port
|
// update view port
|
||||||
fgReshape( fgGetInt("/sim/startup/xsize"),
|
fgReshape( fgGetInt("/sim/startup/xsize"),
|
||||||
fgGetInt("/sim/startup/ysize") );
|
fgGetInt("/sim/startup/ysize") );
|
||||||
|
@ -492,6 +475,15 @@ void fgRenderFrame() {
|
||||||
}
|
}
|
||||||
glClear( clear_mask );
|
glClear( clear_mask );
|
||||||
|
|
||||||
|
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
||||||
|
posit = globals->get_scenery()->get_center();
|
||||||
|
if ( _bcloud_orig ) {
|
||||||
|
sgClouds3d->Set_Cloud_Orig( _posit );
|
||||||
|
_bcloud_orig = false;
|
||||||
|
}
|
||||||
|
sgClouds3d->Update( current__view->get_absolute_view_pos() );
|
||||||
|
}
|
||||||
|
|
||||||
// Tell GL we are switching to model view parameters
|
// Tell GL we are switching to model view parameters
|
||||||
|
|
||||||
// I really should create a derived ssg node or use a call
|
// I really should create a derived ssg node or use a call
|
||||||
|
@ -765,15 +757,6 @@ void fgRenderFrame() {
|
||||||
globals->get_model_mgr()->draw();
|
globals->get_model_mgr()->draw();
|
||||||
globals->get_aircraft_model()->draw();
|
globals->get_aircraft_model()->draw();
|
||||||
|
|
||||||
// draw the 3D clouds
|
|
||||||
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
|
||||||
//glPushAttrib(GL_ALL_ATTRIB_BITS);
|
|
||||||
// transform the current view matrix with camera offset position
|
|
||||||
sgClouds3d->Draw( (sgVec4 *)current__view->get_VIEW() );
|
|
||||||
//sgClouds3d->Draw();
|
|
||||||
//glPopAttrib();
|
|
||||||
}
|
|
||||||
|
|
||||||
// display HUD && Panel
|
// display HUD && Panel
|
||||||
glDisable( GL_FOG );
|
glDisable( GL_FOG );
|
||||||
glDisable( GL_DEPTH_TEST );
|
glDisable( GL_DEPTH_TEST );
|
||||||
|
@ -804,7 +787,15 @@ void fgRenderFrame() {
|
||||||
puDisplay();
|
puDisplay();
|
||||||
// glDisable ( GL_BLEND ) ;
|
// glDisable ( GL_BLEND ) ;
|
||||||
|
|
||||||
// glEnable( GL_FOG );
|
if ( fgGetBool("/sim/rendering/clouds3d") ) {
|
||||||
|
// cout << "drawing new clouds" << endl;
|
||||||
|
// set the opengl state to known default values
|
||||||
|
// default_state->force();
|
||||||
|
sgClouds3d->Draw((sgVec4 *)current__view->get_VIEW());
|
||||||
|
}
|
||||||
|
|
||||||
|
glEnable( GL_DEPTH_TEST );
|
||||||
|
glEnable( GL_FOG );
|
||||||
|
|
||||||
globals->get_logger()->update(delta_time_sec);
|
globals->get_logger()->update(delta_time_sec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,6 +318,8 @@ FGNewMat::read_properties (const SGPropertyNode * props)
|
||||||
emission[2] = props->getDoubleValue("emissive/b", 0.0);
|
emission[2] = props->getDoubleValue("emissive/b", 0.0);
|
||||||
emission[3] = props->getDoubleValue("emissive/a", 0.0);
|
emission[3] = props->getDoubleValue("emissive/a", 0.0);
|
||||||
|
|
||||||
|
shininess = props->getDoubleValue("shininess", 0.0);
|
||||||
|
|
||||||
vector<SGPropertyNode_ptr> object_group_nodes =
|
vector<SGPropertyNode_ptr> object_group_nodes =
|
||||||
((SGPropertyNode *)props)->getChildren("object-group");
|
((SGPropertyNode *)props)->getChildren("object-group");
|
||||||
for (unsigned int i = 0; i < object_group_nodes.size(); i++)
|
for (unsigned int i = 0; i < object_group_nodes.size(); i++)
|
||||||
|
@ -345,6 +347,7 @@ FGNewMat::init ()
|
||||||
light_coverage = 0.0;
|
light_coverage = 0.0;
|
||||||
texture_loaded = false;
|
texture_loaded = false;
|
||||||
refcount = 0;
|
refcount = 0;
|
||||||
|
shininess = 0.0;
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
ambient[i] = diffuse[i] = specular[i] = emission[i] = 0.0;
|
ambient[i] = diffuse[i] = specular[i] = emission[i] = 0.0;
|
||||||
}
|
}
|
||||||
|
@ -416,10 +419,10 @@ FGNewMat::build_ssg_state (bool defer_tex_load)
|
||||||
textured->setMaterial ( GL_SPECULAR,
|
textured->setMaterial ( GL_SPECULAR,
|
||||||
specular[0], specular[1],
|
specular[0], specular[1],
|
||||||
specular[2], specular[3] ) ;
|
specular[2], specular[3] ) ;
|
||||||
textured->setShininess( 75.0 );
|
|
||||||
textured->setMaterial ( GL_EMISSION,
|
textured->setMaterial ( GL_EMISSION,
|
||||||
emission[0], emission[1],
|
emission[0], emission[1],
|
||||||
emission[2], emission[3] ) ;
|
emission[2], emission[3] ) ;
|
||||||
|
textured->setShininess ( shininess );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set up the coloured state
|
// Set up the coloured state
|
||||||
|
@ -443,6 +446,7 @@ FGNewMat::build_ssg_state (bool defer_tex_load)
|
||||||
nontextured->setMaterial ( GL_EMISSION,
|
nontextured->setMaterial ( GL_EMISSION,
|
||||||
emission[0], emission[1],
|
emission[0], emission[1],
|
||||||
emission[2], emission[3] ) ;
|
emission[2], emission[3] ) ;
|
||||||
|
nontextured->setShininess ( shininess );
|
||||||
|
|
||||||
state->setStep( 0, textured ); // textured
|
state->setStep( 0, textured ); // textured
|
||||||
state->setStep( 1, nontextured ); // untextured
|
state->setStep( 1, nontextured ); // untextured
|
||||||
|
@ -489,6 +493,7 @@ void FGNewMat::set_ssg_state( ssgSimpleState *s )
|
||||||
nontextured->setMaterial ( GL_EMISSION,
|
nontextured->setMaterial ( GL_EMISSION,
|
||||||
emission[0], emission[1],
|
emission[0], emission[1],
|
||||||
emission[2], emission[3] ) ;
|
emission[2], emission[3] ) ;
|
||||||
|
nontextured->setShininess ( shininess );
|
||||||
|
|
||||||
state->setStep( 0, textured ); // textured
|
state->setStep( 0, textured ); // textured
|
||||||
state->setStep( 1, nontextured ); // untextured
|
state->setStep( 1, nontextured ); // untextured
|
||||||
|
|
|
@ -381,6 +381,7 @@ private:
|
||||||
|
|
||||||
// material properties
|
// material properties
|
||||||
sgVec4 ambient, diffuse, specular, emission;
|
sgVec4 ambient, diffuse, specular, emission;
|
||||||
|
double shininess;
|
||||||
|
|
||||||
// true if texture loading deferred, and not yet loaded
|
// true if texture loading deferred, and not yet loaded
|
||||||
bool texture_loaded;
|
bool texture_loaded;
|
||||||
|
|
Loading…
Add table
Reference in a new issue