provide a new levelinfo. fallbackAmbient value for scenes with no global light source

This commit is contained in:
AzaezelX 2022-08-23 13:59:48 -05:00
parent 34f2234399
commit 270cf0e054
3 changed files with 22 additions and 7 deletions

View file

@ -68,7 +68,7 @@ extern ColorI gCanvasClearColor;
/// @see DecalManager
extern F32 gDecalBias;
extern LinearColorF gFallbackAmbient;
/// @see AccumulationVolume
extern GFXTexHandle gLevelAccuMap;
@ -86,6 +86,7 @@ LevelInfo::LevelInfo()
mDecalBias( 0.0015f ),
mCanvasClearColor( 255, 0, 255, 255 ),
mAmbientLightBlendPhase( 1.f ),
mFallbackAmbient(LinearColorF(0.1f, 0.1f, 0.1f, 1.0f)),
mSoundAmbience( NULL ),
mSoundDistanceModel( SFXDistanceModelLinear ),
mSoundscape( NULL )
@ -163,6 +164,8 @@ void LevelInfo::initPersistFields()
addField( "ambientLightBlendCurve", TypeEaseF, Offset( mAmbientLightBlendCurve, LevelInfo ),
"Interpolation curve to use for blending from one ambient light color to a different one." );
addField("fallbackAmbient", TypeColorF, Offset(mFallbackAmbient, LevelInfo),
"Ambient Color to use if no global light source exists.");
//addField( "advancedLightmapSupport", TypeBool, Offset( mAdvancedLightmapSupport, LevelInfo ),
// "Enable expanded support for mixing static and dynamic lighting (more costly)" );
@ -211,6 +214,7 @@ U32 LevelInfo::packUpdate(NetConnection *conn, U32 mask, BitStream *stream)
stream->writeFlag( mAdvancedLightmapSupport );
stream->write( mAmbientLightBlendPhase );
mathWrite( *stream, mAmbientLightBlendCurve );
stream->write(mFallbackAmbient);
sfxWrite( stream, mSoundAmbience );
stream->writeInt( mSoundDistanceModel, 1 );
@ -241,6 +245,7 @@ void LevelInfo::unpackUpdate(NetConnection *conn, BitStream *stream)
mAdvancedLightmapSupport = stream->readFlag();
stream->read( &mAmbientLightBlendPhase );
mathRead( *stream, &mAmbientLightBlendCurve );
stream->read(&mFallbackAmbient);
String errorStr;
if( !sfxReadAndResolve( stream, &mSoundAmbience, errorStr ) )
@ -323,8 +328,8 @@ void LevelInfo::_updateSceneGraph()
scene->setVisibleGhostDistance( mVisibleGhostDistance );
gDecalBias = mDecalBias;
// Set ambient lighting properties.
gFallbackAmbient = mFallbackAmbient;
scene->setAmbientLightTransitionTime( mAmbientLightBlendPhase * 1000.f );
scene->setAmbientLightTransitionCurve( mAmbientLightBlendCurve );