Browse Source

Merge pull request #270 from Areloch/lightFieldsCleanup

Some cleanup and adjusting of local light fields and default settings.
Brian Roberts 5 years ago
parent
commit
4da43119b0

+ 2 - 2
Engine/source/T3D/lightAnimData.h

@@ -47,7 +47,7 @@ struct LightAnimState
 {  
    /// Constructor.
    LightAnimState()
-      :  active( true ),
+      :  active( false ),
          animationPhase( 1.0f ),
          animationPeriod( 1.0f ),
          brightness( 1.0f ),
@@ -177,4 +177,4 @@ public:
    AnimValue<1> mBrightness;
 };
 
-#endif // _LIGHTANIMDATA_H_
+#endif // _LIGHTANIMDATA_H_

+ 13 - 0
Engine/source/T3D/pointLight.cpp

@@ -27,6 +27,7 @@
 #include "core/stream/bitStream.h"
 #include "gfx/gfxDrawUtil.h"
 
+#include "lighting/shadowMap/lightShadowMap.h"
 
 IMPLEMENT_CO_NETOBJECT_V1( PointLight );
 
@@ -83,6 +84,13 @@ PointLight::PointLight()
    // We set the type here to ensure the extended
    // parameter validation works when setting fields.
    mLight->setType( LightInfo::Point );
+
+   //This lets us override the default shadowmap properties for point lights specifically
+   //We'll set the overdark factor to a lower value to mitigate visible aliasing from over-darkening the cubemap
+   //And then use cubemaps as the default shadowmap type
+   ShadowMapParams* p = mLight->getExtended<ShadowMapParams>();
+   p->overDarkFactor = Point4F(10, 5, 4, 1);
+   p->shadowType = ShadowType::ShadowType_CubeMap;
 }
 
 PointLight::~PointLight()
@@ -104,6 +112,11 @@ void PointLight::initPersistFields()
    // Remove the scale field... it's already 
    // defined by the light radius.
    removeField( "scale" );
+
+   //These are particular fields for PSSM, so useless for point lights
+   removeField("numSplits");
+   removeField("logWeight");
+   removeField("lastSplitTerrainOnly");
 }
 
 void PointLight::_conformLights()

+ 5 - 0
Engine/source/T3D/spotLight.cpp

@@ -110,6 +110,11 @@ void SpotLight::initPersistFields()
    // Remove the scale field... it's already 
    // defined by the range and angle.
    removeField( "scale" );
+
+   //These are particular fields for PSSM, so useless for point lights
+   removeField("numSplits");
+   removeField("logWeight");
+   removeField("lastSplitTerrainOnly");
 }
 
 void SpotLight::_conformLights()

+ 1 - 1
Engine/source/lighting/advanced/advancedLightBinManager.cpp

@@ -99,7 +99,7 @@ const String AdvancedLightBinManager::smShadowTypeMacro[] =
 {
    "", // ShadowType_Spot
    "", // ShadowType_PSSM,
-   "SHADOW_PARABOLOID",                   // ShadowType_Paraboloid,
+   "", // ShadowType_Paraboloid,
    "SHADOW_DUALPARABOLOID_SINGLE_PASS",   // ShadowType_DualParaboloidSinglePass,
    "SHADOW_DUALPARABOLOID",               // ShadowType_DualParaboloid,
    "SHADOW_CUBE",                         // ShadowType_CubeMap,

+ 0 - 1
Engine/source/lighting/advanced/advancedLightManager.cpp

@@ -48,7 +48,6 @@ ImplementEnumType( ShadowType,
    "@ingroup AdvancedLighting" )
    { ShadowType_Spot,                     "Spot" },
    { ShadowType_PSSM,                     "PSSM" },
-   { ShadowType_Paraboloid,               "Paraboloid" },
    { ShadowType_DualParaboloidSinglePass, "DualParaboloidSinglePass" },
    { ShadowType_DualParaboloid,           "DualParaboloid" },
    { ShadowType_CubeMap,                  "CubeMap" },