there's plenty of options to choose from with shadow, be wary of the consumtion shadow can have !
Code:
// Shadowing
Display& shadowMode (SHADOW_MODE mode ); SHADOW_MODE shadowMode ()C {return _shd_mode ;} // set/get Shadow Mode (SHADOW_MODE, default=SHADOW_MAP (SHADOW_NONE for Mobile)), the change is instant, you can call it real-time
Display& shadowSoft (Byte soft ); Byte shadowSoft ()C {return _shd_soft ;} // set/get Shadow Softing ( 0..2 , default= 0 ), available only in RT_DEFERRED renderer, the change is instant, you can call it real-time
Display& shadowJitter (Bool jitter ); Bool shadowJitter ()C {return _shd_jitter ;} // set/get Shadow Jittering (true/false , default= false ), works best when combined with shadow softing, the change is instant, you can call it real-time
Display& shadowReduceFlicker(Bool on ); Bool shadowReduceFlicker()C {return _shd_reduce ;} // set/get Shadow Flickering Decreasing (true/false , default= false ), this option reduces directional light shadow map flickering when rotating the camera, however at the expense of slightly increasing the shadow map blockiness, enable only when the flickering is really disturbing, the change is instant, you can call it real-time
Display& shadowFrac (Flt frac ); Flt shadowFrac ()C {return _shd_frac ;} // set/get Shadow Range Fraction for Directional Lights ( 0..1 , default= 1 ), this option can limit shadowing range to a fraction of the viewport range, the change is instant, you can call it real-time
Display& shadowFade (Flt fade ); Flt shadowFade ()C {return _shd_fade ;} // set/get Shadow Fade Fraction for Directional Lights ( 0..1 , default= 1 ), this option specifies at which part of the shadowing range, shadow fading occurs, the change is instant, you can call it real-time
Display& shadowMapSize (Int map_size); Int shadowMapSize ()C {return _shd_map_size ;} // set/get Shadow Map Size ( 1..Inf , default= 1024 ), this option specifies the size of a single shadow map (in pixels), bigger size results in more precise shadows but smaller performance, the change is NOT instant, avoid calling real-time
Display& shadowMapSizeLocal (Flt frac ); Flt shadowMapSizeLocal ()C {return _shd_map_size_l;} // set/get Shadow Map Size Fraction for Local Lights ( 0..1 , default= 1 ), this option specifies global size factor for computing the size of shadow maps for local lights (point/cone), final size of shadow maps for local lights is calculated using following formula: "shadowMapSize()*shadowMapSizeLocal()" , this means that for shadowMapSizeLocal()==1 full shadowMapSize() is used, for shadowMapSizeLocal()==0.5 half of shadowMapSize() is used, and so on, the change is instant, you can call it real-time
Display& shadowMapSizeCone (Flt factor ); Flt shadowMapSizeCone ()C {return _shd_map_size_c;} // set/get Shadow Map Size Factor for Cone Lights ( 0..2 , default= 1 ), this option specifies global size factor for computing the size of shadow maps for cone lights , final size of shadow maps for cone lights is calculated using following formula: "shadowMapSize()*shadowMapSizeLocal()*shadowMapSizeCone()", this means that for shadowMapSizeCone ()==1 full shadowMapSize() is used, for shadowMapSizeCone ()==0.5 half of shadowMapSize() is used, for shadowMapSizeCone()==2 double of shadowMapSize() is used, the range for shadowMapSizeCone is 0..2, which means that if set to 2, it can double the default shadow quality for all cone lights, the change is instant, you can call it real-time
Display& shadowMapNum (Byte map_num ); Byte shadowMapNum ()C {return _shd_map_num ;} // set/get Number of Shadow Maps for Directional Lights ( 1..6 , default= 6 ), this option specifies the number of shadow maps used when rendering directional lights, the more shadow maps are used the better quality but smaller performance, RT_FORWARD renderer supports only even numbers of maps, the change is instant, you can call it real-time
Display& cloudsMapSize (Int map_size); Int cloudsMapSize ()C {return _cld_map_size ;} // set/get Clouds Shadow Map Size ( 1..Inf , default= 80 ), the change is NOT instant, avoid calling real-time