* Distance field building is now asynchronous and stored in the DDC separately from static mesh data.
* Added OcclusionMaxDistance and Contrast properties to Movable sky light
* Using the GBuffer normal instead of the generated distance field normal, fixes artifacts on two-sided materials and between modular pieces. Also saves about .7ms / 4.5ms
* Points in the distance field are only considered 'inside' the mesh if > 50% of all rays traced hit a backface. Most meshes can have a valid distance field generated with this heuristic. Meshes without a distance field representation can receive occlusion.
* Fortnite two-sided foliage with world position offset animation works fine now
* Using the resulting bent normal for diffuse lighting, improves consistency in occluded corners
* Resulting bent normal is also used to occlude skylight specular using an approximate cone-cone intersection, prevents leaking where SSR is not available
* Fixed stationary skylights not getting lightmap mixing
* Reflection captures now work with the movable skylight, which adds its diffuse contribution to IndirectIrradiance so their lightmap mixing works
* Added new show flag to visualize mesh distance fields, which ray traces through the distance fields and gives a sense of their shape
[CL 2276435 by Daniel Wright in Main branch]
- Do not try to load ALAudio and SteamController on Linux servers (TTP #344970).
- Do not load HeadMountedDisplay on all platform servers.
#codereview Nick.Whiting, JJ.Hoesing, Josh.Adams
[CL 2276426 by Dmitry Rekman 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]
- New PlatformTearDown() function to correspond to PlatformInit(), called at AppExit() time (unguarded code).
- Linux-specific PlatformInitMultimedia() function (not part of generic platform abstraction) which handles multiple initialization of SDL and/or avoids it for certain targets.
- Fixes problem with SDL message box destroying SDL and ruining things later down the road.
#codereview Josh.Adams, Ankit.Khare, Michael.Trepka, Marcus.Wassmer, Pete.Knepley, Graeme.Thornton
[CL 2263609 by Dmitry Rekman in Main branch]
- Initial Mac direct rendering support
- Added WindowedMirror mode for pseudo-fullscreen support on devices like HMDs
- PlayerController key input currently routes through the Oculus plug-in in order to bypass the health & safety warning. Will likely move this up to GameViewport.cpp instead.
- Note: with the Oculus plug-in enabled, normal fullscreen will not work if the direct mode driver is enabled!
- Currently PreInit() will be called on all enabled HMDs. This may or may not be an issue. Currently it's not.
[CL 2257312 by JJ Hoesing in Main branch]
Fixes TTP 327800 - UE4: RENDERING: FORTNITE: RESOLUTION: Game resolution will be lowered after Alt+Tabbing and then returning to a game in fullscreen
* Move the call to GameUserSettings::PreloadResolutionSettings() to an earlier point, after system settings load, but before consolevariables/deviceprofiles etc.
* Remove ConditionallyOverrideSettings from the PreloadResolutionSettings() as the slate application hasn't been initialised at this point. Values are overriden later anyway when creating the game window
* Split GameUserSettings::Apply() into two functions, one for resolution settings and one for everything else. Apply() now calls both for backwards compatibility. Allows launch loop to NOT reapply the resolution settings after GameUserSettings has been loaded properly, thereby overriding all the settings customizations
* When a game-mode windows app is receives the OS activation event, attempt to restore the resolution that the engine believes is current.
* Update fortnite default game user settings ini file to have the latest version number, and specify windowed mode. This will be fixed later to specify windowed fullscreen as is desired.
[CL 2254719 by Graeme Thornton in Main branch]
- Partially based on PR #306 submission, corrected for cross-compiling.
- Each platform is now able to set up output devices for logging according to its own needs.
#codereview Josh.Adams, Michael.Trepka
[CL 2249193 by Dmitry Rekman in Main branch]