* Settings are Off, Point and Volume
* The default quality is Point, which is a downgrade in quality from the previous effective default of Volume, but has much less overhead (ILC update time reduced by 4x). Components now have to opt-in to higher quality. This also fixes the issue where ILC allocations would fail after 1728 movable components.
* Fixed Point sample location to be the snapped center of the bounds, previously it was the Min which was often below the ground
* Opaque materials can now apply the Point cached lighting from shader constants
[CL 2258313 by Daniel Wright in Main branch]
* Both paths still exist in code during this transition. The GetDynamicMeshElements path is currently disabled, enable with 'r.UseGetDynamicMeshElements 1'.
* DrawDynamicElements was called once per pass, all sorts of pass-specific cruft had leaked in along with short-term modifications of shared structures (vertex factories and material proxies). DrawDynamicElements was not const, so a bunch of 'update' type work had leaked in. Various PreRenderView implementations relied on the view being in the view family.
* GetDynamicMeshElements is called once in InitViews, and the resulting meshes are used in various passes. GetDynamicMeshElements is const and must not modify the proxy, update work should be pushed to the proxy from the game thread. GetDynamicMeshElements can be called on views that are not in the view family, which allows a proper view for shadow depth passes.
* View mode override functionality moved out of the individual proxies into a centralized place, ApplyViewModeOverrides
* GPU particles not working yet, FRecastRenderingSceneProxy not implemented
[CL 2253795 by Daniel Wright in Main branch]
* Each Stationary light gets a static shadow depth map generated by Lightmass, which is then used to shadow during translucent lighting volume injection
[CL 2118133 by Daniel Wright in Main branch]
#ttp 331829 - Mobile Preview in Editor
#proj Engine
#branch UE4
#summary First pass of changes to remove GRHIFeatureLevel, allowing for multiple scenes with different feature levels to exist. First step towards dynamic mobile preview in the editor.
#change Added GMaxRHIFeature level which contains the highest supported feature level on this machine
#change Added a cvar "r.FeatureLevelPreview" which, when set to 1, enables a feature level selection in the quick settings menu. Not wired up to anything at the minute
#change Added a feature level variable to FScene, which is currently initialized to whatever GRHIFeatureLevel is. Accessed with GetFeatureLevel()
#change Added a helper accessor GetFeatureLevel() to FSceneView which gets the feature level from the relevant scene. Purely to reduce the amount of typing needed to get to a feature level
#change Many changes across the renderer to try and read the current feature level from the view or scene. Not everything is done yet, but this is almost all of the "easy" stuff. As there is still just a global feature level in the engine, nothing should change.
[CL 2066905 by Graeme Thornton in Main branch]
#proj core
#branch UE4
#summary Rename Trunc, Round, Floor, Ceil to TruncToInt, RoundToInt, FloorToInt, CeilToInt. Added *ToFloat versions. Repeated for FGenericPlatformMath and all derived classes for all platforms wherever applicable. Corrected comment in Fractional and added Frac() which does HLSL-style fractional (x - floor(x)). Checked for compilation on all projects (with cooking levels wherever applicable). Didn't change Fractional to Frac, this will be done in second commit.
#codereview robert.manuszewski
[CL 2064306 by Mikolaj Sieluzycki in Main branch]
#branch UE4
#proj Engine, Renderer
#add Created a class FSimpleLightPerViewEntry and relocated the positional vector from FSimpleLightEntry.
#add Created FSimpleLightArray which contains a FSimpleLightEntry and FSimpleLightPerViewEntry TArray - this is just so to keep function parameter lists uncluttered when passing the data around.
#change ViewFamily is now passed to GatherSimpleLights and GatherParticleLightData allowing us to calculate the camera offset for each view. This also allows for future additions that are view-dependant.
#change Camera offset is calculated in GatherParticleLightData for each view. When camera offset isn't enabled FSimpleLightPerViewEntry is shared for all views in order to save memory
[CL 2062006 by Joe Tidmarsh in Main branch]