I have reviewed each change carefully, but it is a large change and I could have missed something! Here is a summary of the types of changes in this CL:
* Made nullptr checks consistent (the plurality of the changes are of this type)
* Completed switch statements (IE, switch did not explicitly handle default case, but had unhandled enum entries - this is the second most popular type of fix)
* Removed unused variables
* Removed redundant initializations
* WidgetNavigationCustomization.cpp was fixed by the owner
* integers converted to floats where result was stored in a float
* Removed redundent null checks (e.g. before delete statements)
* Renamed variables to prevent non-obvious shadowing
* Fixed use of bitwise & when checking for equality to an enum entry (which is often 0)
* Fixes for some copy paste errors (e.g. FoliageEdMode.cpp)
[CL 2498053 by Dan Oconnor in Main branch]
- Forward renderer clears background color in editor mode.
- Remove TAA jitter from proj matrices after ES2 TAA post process completes. (allows stable rendering of editor primitives)
- Moved ES2 post process editor composite primitive pass to after tonemap. (fixes incorrect grid colour)
- Add opacity mask for editor prim materials to forward base pass shader. (fixes perspective grid rendering)
- Add Basic ES2 post process pass for !mobileHDR scenario, enabling editor's primitives to still be rendered.
- DrawNewGrid only bails out if the material it's about to use hasnt compiled. (allows ES2 to render 'texture solution' grid implementation)
- Prevent some view elements drawing 2x when ShowFlags.CompositeEditorPrimitives == true.
#codereview nick.penwarden
[CL 2413899 by Allan Bentham in Main branch]
- Store global bitfield of active feature levels
- Generate shaders for all active feature levels
- Add option to experimental settings to enable dynamic feature level
- Redirect GRHIFeatureLevel to GMaxRHIFeatureLevel - Effectively const now, ready to be removed
[CL 2296373 by Graeme Thornton in Main branch]
* Still disabled as Metal requires a horrible workaround/hack
* Remove GSupportsGSRenderTargetLayerSwitchingToMips workaround
[CL 2295640 by Rolando Caloca in Main branch]
- Removed default shader platform parameter from GetGlobalShaderMap()
- Added an inline overload of GetGlobalShaderMap() that takes a feature level instead, and translates to the correct shader platform
- Cached feature level on FSceneView for faster access
- Cached shader map on FViewInfo for faster access
- Cached featurelevel/shadermap on rendering composition graph execution context, for faster access
Fixed a couple of crashes when switching feature level dynamically
- Needed to allow certain shader permutations to be generated if feature level was ES2, but still on a PC platform. (i.e. hitproxy shaders, and basepass shaders used by editor primitives system)
#codereview Nick.Penwarden
[CL 2275937 by Graeme Thornton 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]
* For several preview components (cascade + a couple of animation previews), don't create a separate FXSystem for the preview world. Just use the one created internally by the world
* Several bug fixes and improvements to dynamic feature level switch
* Continued conversion of code that references to global feature level.
#codereview Nick.Penwarden
[CL 2229679 by Graeme Thornton in Main branch]