- Image exposure is locally adjusted by decomposing luminance of the frame into a base layer and a detail layer.
- Base layer contrast can be reduced while preserving detail.
- Support blending with gaussian blurred luminance as proposed in Advances in Real-Time Rendering in Games 2021.
- Controls in PostProcessVolume.
- r.LocalExposure cvar to control whether local exposure is supported.
- Visualization mode in "Show->Visualize->Local Expsoure". Multiple modes controllable using r.LocalExposure.VisualizeDebugMode.
- Bilateral grid generation not yet optimized. Optimization should include increasing depth of grid to match histogram size so that global histogram can be generated from grid.
- Added option to use mirror address mode in PostProcessWeightedSampleSum, since black border adds noticeable vignetting to the blurred luminance.
#preflight 612f65169db3090001ba3eec
#rb Brian.Karis, Guillaume.Abadie, Krzysztof.Narkowicz
#ROBOMERGE-SOURCE: CL 17385317
#ROBOMERGE-BOT: (v865-17346139)
[CL 17387198 by tiago costa in ue5-main branch]
#rnx
#rb none
#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)
[CL 10870549 by ryan durand in Main branch]
#rb Rendering
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3658809 by Chris.Bunner
Changing default HDR display gamut to P3 as in practice that's more common than Rec2020, this should be a user-facing option where possible though as we can't automatically retrieve that data.
Change 3658842 by Chris.Bunner
Backing out previous HDR default gamut change as it conflicts with mandatory platform defaults.
Change 3695269 by Arne.Schober
DR - Make clang happy wreorder
Change 3695418 by Guillaume.Abadie
Fixes compilation failure in FoliageType_InstancedStaticMesh.cpp.
Change 3695430 by Guillaume.Abadie
Fixes missing BeginFrame dynamic resolution event in EngineTest.
Change 3695469 by Guillaume.Abadie
Fixes crash when passing down an invalid parameter on the sample material expression's DDX, DDY parameters.
Change 3696091 by Guillaume.Abadie
Fixes Linux compilation failure in DynamicResolution.cpp
Change 3696593 by Chris.Bunner
Fixed typo in vetex factory enum.
Change 3696596 by Chris.Bunner
Added material attributes type checking to If material expression.
Updated If material expression to validate compilation of inputs.
Change 3696597 by Chris.Bunner
Allow visible parameter retrieval to correctly traverse through internally called functions. Previous check was intended to prevent function previews from leaving their graph through unhooked inputs, but unintentionally blocked all function inputs.
Change 3696599 by Chris.Bunner
Fixed material instance parameter visiblity when using nested static switches across functions.
#jira UE-50878
Change 3696734 by Chris.Bunner
Return type fix.
Change 3697123 by Guillaume.Abadie
Fixes compilation failure in PostProcessWeightedSampleSum.cpp on Windows 32bits.
Change 3697125 by Guillaume.Abadie
Fixes compilation failure in MaterialExpressionIf.h
Change 3697127 by Guillaume.Abadie
Fixes compilation failure in DynamicResolution.cpp on shipping build.
Change 3697135 by Guillaume.Abadie
Fixes crash in dynamic resolution event frontend when resizing game play viewport in EngineTest.
Change 3697199 by Guillaume.Abadie
Fixes TAA upsample's shader compilation failure on Mac.
Change 3697220 by Guillaume.Abadie
Makes static analysis happy again.
Change 3697280 by Chris.Bunner
Fixing up invalid casts in material layers validation.
Change 3697366 by Rolando.Caloca
DR - hlslcc - Fix warning
#jira UE-43988
Change 3697451 by Rolando.Caloca
DR - vk - Per pipeline descriptor pools
Descriptor pool are now allocated per PSO instead of globally to reduce peak mem consumption and fragmentation
Enabled on Windows only via VULKAN_USE_PER_PIPELINE_DESCRIPTOR_POOLS
Change 3697477 by Rolando.Caloca
DR - vk - Custom memory allocator
Remove old/unused stats
Change 3697486 by Rolando.Caloca
DR - vk - Fix validation issue
Change 3697488 by Richard.Wallis
Fix for Mac editor session no longer accurately tracking Mouse location after moving between Desktops in Mission Control on 10.12.6. Problem stems from the extra call to update the slate cached window position in mouse move while dragging, which is itself is a hack but apparently this is needed as we don't get window position updates on Mac while dragging (although I couldn't see any -ve side effects without it) then the OS (in 10.12.6) doesn't always push out a final window did move notificaiton when changing desktops which leaves the window according to slate incorrectly positoned to it's frame.
Solution is to either remove the mouse-move-while-drag window position hack or add a final window position update to the mouse-up event while dragging - this change is the latter.
#jira UE-37553
Change 3697501 by Richard.Wallis
Move audio processing over to audio bus tap. Currently on Mac Media audio playback uses OS media player mixer rather than Engine as existing implemtation, using AVAssetReader, now suffers from poor performance with new Media Framework. This audio tap version replaces that asset reader implementation but also suffers from bad quality audio hence is still disabled at the top of AvfMediaTracks.cpp.
Original Code Review Description:
Convert Mac to Play audio through the engine MediaFramework API rather than using AVMediaPlayer. This is the Mac implementation only - this should work ok on iOS but unable to test due to missing audio type implementation (throws error "Init Buffer on unsupported sound type name = Synth type = 5"), as such is only enabled for Mac. There maybe some extra tweaks required for iOS on app backgrounding etc if this feature is enabled.
- Stuttering Audio Performace issue investiagation: Re-Tested this implementation against [now fixed] current Mac implementation which was working fine last year and that implementation now has the same audio output quality (performance) issues as this one. Basic investigation seems to point to somewhere in the engine audio handing. When poor audio is heard the FMediaAudioResampler::Generate() function is dequeing an IMediaAudioSample sample buffer and the audio sample queue usually has 50-100 of these IMediaAudioSample buffers waiting in the queue. I think the AvfMedia playback system is providing the sample buffers in good time but they are not getting consumed "fast" enough. This under consuming also occurs if I force the Core Audio - Audio Unit mixer to use 48000 samples/sec.
#jira UEPLAT-1677
Change 3697517 by Richard.Wallis
XCode 9.0 extra nullability specifiers required.
Change 3697537 by Richard.Wallis
Back out revision 23 from //UE4/Dev-Rendering/Engine/Plugins/Media/AvfMedia/Source/AvfMedia/Private/Player/AvfMediaTracks.cpp
Change 3697670 by Rolando.Caloca
DR - vk - Fix mapstaging surface
Change 3697846 by Uriel.Doyon
Allow denormalized values when converting float32 to float16.
Change 3697892 by Uriel.Doyon
Fix for unaligned structure elements
Change 3699335 by Richard.Wallis
Mac compile fix - turns out I did need these nullability specifiers here.
Change 3699663 by Guillaume.Abadie
Fixes time unit conversions from microseconds to milliseconds error in dynamic resolution heuristic when using GPU busy time queries.
Change 3699959 by Rolando.Caloca
DR - Fix barrier in the middle of render pass
Change 3699969 by Rolando.Caloca
DR - vk - Change dump layer location so it prints out validation ids
Change 3700356 by Guillaume.Abadie
Implements secondary screen percentage to be able to do TAA upsample followed spatial upscale so that the editor viewport still have same TAA upsample screen percentage range to test the content with no matter monitor's DPI.
Change 3701105 by Guillaume.Abadie
Ignore per view automatic mip bias on texture type other than 2d textures.
#jira UE-51396
Change 3702297 by Richard.Wallis
Mac compile fix for nullable specifier. Looks like Obj class using the C++ class also needs this otherwise it throws. Seems to be some kind of xcode/compiler caching bug with this stuff as it'll report the error once then on subsequent compiles say everything is ok.
#jira UE-51386
Change 3702357 by Richard.Wallis
Mac nullability compile fix - again. Looks like I fell foul of that xcode compile caching!
#jira UE-51386
Change 3702424 by Guillaume.Abadie
Fixes planar reflection from drowing themselves in their own FSceneRenderer in forward shading.
#jira UE-51395
Change 3702464 by Guillaume.Abadie
Fixes wrong viewport to buffer conversion of the distortion.
#jira UE-51406
Change 3702819 by Guillaume.Abadie
Fixes planar reflections with secondary screen percentage for HighDPI editor viewports.
Change 3703732 by Guillaume.Abadie
Removes unecessary check(); when there is more than 2 players with planar reflections.
#jira UE-51436
Change 3704302 by Guillaume.Abadie
Removes unecessary Interface suffix on new dynamic resolution related interfaces
Change 3704390 by Chris.Bunner
Fixed a coincidentally correct define.
Change 3704730 by Rolando.Caloca
DR - vk - Fix map for depth surfaces
Change 3704739 by Rolando.Caloca
DR - Debug label on D3D11 UAVs
- Validate when running -d3debug
Change 3705000 by Chris.Bunner
Skip compiling opacity and opacity mask inputs on opaque surface materials. Previously the code was always added to the shader, sometimes we force opaque materials down a masked path which then calls the dormant code unintentionally. A safer fix for UE-48254.
Partially reverted previous fix in CL 3608303 which removed a material instance optimization caching the overridden base properties.
Change 3706065 by Guillaume.Abadie
Does some renaming for primary screen percentage, and move the primary screen percentage method selection from dynamic resolution driver to FSceneView.
Change 3706464 by Chris.Bunner
Fixed material property translate overrides that were generating code in the wrong entry.
Fixed conditions in If material expression GetInputType and IsMA check.
#jira UE-51368
Change 3706641 by Chris.Bunner
Missing "break" in switch statement (which unfortunately needs another bump to resolve).
Change 3706642 by Guillaume.Abadie
Fixes assertion failure when r.TemporalAA.EnableUpscale = 1
Change 3706650 by Gil.Gribb
UE4 - UE4 - Changes from intel. Increase number of worker threads on Windows to if hyperthreads (hyperthreads √ 2) else cores √ 1 up to a max of 22 workers. Increase MAX_THREADS multiplier per bank from 22 to 26. Intel VTune ITT event annotations. Wrapped in same function as your existing CPU events and enabled with √vtune. Optimize NV cloth by consuming FVector instead of FVector4 out of the solver. Vertex buffers were using FVector all along. ~15% improvement. Optimize cloth copy to vertex buffer by adding prefetch (similar to how bones are already done). Move local to world cloth transform from CPU to GPU. When simulating lots of vertices game thread was becoming bottleneck doing matrix multiply. Add your TaskGraph task switch latency test code.
Change 3706733 by Daniel.Wright
Print Embree Build time
Change 3706841 by Daniel.Wright
EmbreeFilterFunc4 now handles masked out intersections properly
Change 3707437 by Rolando.Caloca
DR - vk - Android compile fix
#jira UE-51474
Change 3707785 by Guillaume.Abadie
Fixes viewport issue in bloom setup pass with TAA upsample.
Change 3709623 by Rolando.Caloca
DR - vk - Missing barrier for reading into cpu
Change 3709633 by Rolando.Caloca
DR - vk - Compile fix
Change 3710454 by Mark.Satterthwaite
Refactor the way we compile Buffer<> & RWBuffer<> types for Metal so that we can support the type-conversion semantics of HLSL/D3D.
- Buffer<> types are converted to Linear Textures unless the internal type is 3-compnent or the STRONG_TYPE macro is added as a type-qualifier. Linear Textures require an MTLTexture "view" object be created around the MTLBuffer which is the backing-store and it is typically best if that buffer is marked as Private (GPU-only) memory, reading from this in the shader then uses the texture-fetch hardware to perform the format conversion on load.
- RWBuffer<> & 3-compnent Buffer<> types are converted to use template functions to load/store - the implementation of which will read the format from the BufferSizes meta-table and determine which type-conversion to apply. Function-constants are used to specialise the shader where feasible to reduce branch costs (function-constants are a Metal feature that allow efficient runtime recompilation of bytecode shaders).
- Buffer<> & RWBuffer<> types where the STRONG_TYPE macro is added as a type-qualifier (only does something on Metal, everywhere else it is #define'd away) are compiled as "raw" Metal buffers of the inner-type (e.g. float4 for Buffer<float4>) and the MetalRHI runtime will enforce that only SRVs/UAVs of the proper format are bound to it. This is necessary in a couple of cases (BoneMatrices, NumCulledLightsGrid, CulledLightDataGrid & ForwardLocalLightBuffer buffers) which are used in a larger number of shaders as Linear Textures have poorer performance than Buffer<>/RWBuffer<>.
- Most of the complications to generating subtly different Metal code for different OS/device combinations have been factored out into ue4_stdlib.metal which acts as an extension to the Metal shader standard-library and helps simplify the MetalBackend code - particularly helpful for Buffer<>/RWBuffer<> but also texturecube_array and the SM6 wave-related intrinsics.
- Reverted some of the awkward Metal-specific changes Richard.Wallis & Arne had to make to the high-level shaders as they aren't necessary anymore.
- Made the existing Metal-specific changes to use uint32 for all light-grid injection buffers apply to all Metal platforms again (I had hoped that it would not be necessary anymore, but it is much faster this way).
- STRONG_TYPE is actually hlslcc's "invariant" keyword applied as a type-qualifier to a Buffer<>/RWBuffer<> type - only valid when using Metal which exports this through ILanguageSpec and #define'd out for everyone else.
- Old versions of iOS (anything earlier than iOS 10.3) won't be able to use this new code, so every buffer will be treated as "raw" and the MetalRHI will now properly report when something goes awry rather than it leading to mysterious rendering errors and crashes.
Change 3710456 by Mark.Satterthwaite
Fix the Eddie workset project generator so that Enterprise projects don't get mixed in with regular projects at the top-level because of the way Eddie combines workset groups.
Change 3710457 by Mark.Satterthwaite
DX11 texture formats for Mac Metal please!
Change 3710480 by Mark.Satterthwaite
Permit RHI thread and parallel execution in Mac -game mode again.
Change 3710522 by Mark.Satterthwaite
MSVC type-mismatch error fixes.
Change 3710580 by Mark.Satterthwaite
Alright then - if I can't use the C++11 extended string semantics I'll have to use "xxd -i" to generate a hex-dump include header from ue4_stdlib.metal instead. This can only be updated from a machine with access to the POSIX xxd command (Mac & Linux, possibly the new Linux sub-system for Win10).
Change 3710616 by Mark.Satterthwaite
Missing file.
Change 3712972 by Guillaume.Abadie
Fixes Circle DOF's negative alpha channel getting clamped to 0 in TAA pass.
Change 3712979 by Guillaume.Abadie
Fixes wrong RT reallocation when doing TAA upsample in editor viewports with secondary upscale.
Change 3713406 by Mark.Satterthwaite
Use GPU morph targets on Mac - the necessary buffer conversions will always be available there. For iOS it can only be supported if iOS 10 is the minimum OS & Metal standard so leave that on the CPU path for now.
Change 3713494 by Richard.Wallis
Fix for hitch when PIE unloading sublevel. PerformReachabilityAnalysisOnObjects is spawing multiple threads in Editor builds as there is an extra code path that results in Critical Section locking within a singleton type static object - this is a bottle neck for multiple threads. However they all just need to read the data not change it. Replaced FScopeLock with a Read/Write version allowing these threads to all take a read lock at the same time to reduce contention.
Changed the FUObjectAnnotationDense implementation only - left the sparse implementation alone as its not currently affecting this - although we could proactivly change that too.
Also tested again repro in linked bug UE-24711.
#jira UE-40533
Change 3713612 by Mark.Satterthwaite
Integrate LPV_STORE_INDEX_IN_HEAD_BUFFER related changes from //depot/Partners/Microsoft/UE4-MS/Engine-Fable @ 2954744
This should make Light Propagation Volumes potentially viable on non-Microsoft platforms.
Change 3713623 by Mark.Satterthwaite
Implement ByteAddressBuffer/RWByteAddressBuffer in hlslcc in a similar manner to StructuredBuffer/RWStructuredBuffer so that the backends don't need too much modification. Implement the necessary changes into MetalBackend to make this work for Metal.
Load/Store{+2,3,4} & Atomics are supported. Counter operations are not supported and aren't likely to be.
Change 3713636 by Mark.Satterthwaite
Enable LPVs for Mac Metal.
- Rework some multi-dimensional arrays & array-index dependent HLSL code that hlslcc simply can't cope with, the mesa-glsl compiler core is only capable of dealing with 1 dimensional arrays and array-indexing can't itself be directly dependent on the result of an array-index operation.
- MetalRHI needs to ignore any SetRenderTargets call that binds nothing at all as you must bind at least one target (UAV, RT, Depth/Stencil) for it to be able to do anything sensible.
- Turn on LPVs for Metal as it works now.
Change 3714049 by Guillaume.Abadie
Do not set screen percentage method to TAA upsample when anti aliasing method is not TAA even if there is automatic fallback in the renderer.
Change 3714306 by Guillaume.Abadie
Fixes assertion failure in dynamic resolution state proxy with GPU busy time queries.
Change 3714714 by Mark.Satterthwaite
Tweak Metal GPU identification so that it works with eGPU boxes and protoype hardware - these changes only apply to macOS 10.13 so the system as a whole remains.
Change 3716104 by Mark.Satterthwaite
Fix 10.12/Xcode 8 compile errors from the build-farm which is still split until Fortnite can update.
Change 3716120 by Mark.Satterthwaite
Silence static-analysis.
Change 3716158 by Guillaume.Abadie
Rewrites editor primitive compositing to support TAA upsample.
This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives.
Change 3716271 by Daniel.Wright
Lightmass correctness fixes
* After these changes, point, spot, directional and sky lights closely match reference renderer Mitsuba after light unit conversions
* Photon density trimming intended for direct photons was affecting indirect photons as well. This caused high noise for point / spot lights with a large attenuation radius. Indirect photon density even for small lights is 5x with this change, which improves 2nd bounce quality.
* Removed legacy fudge factor on point / spot light photon energy
* Spotlights no longer emit based on indirect photon paths. Fixes excessive photon energy from spot lights as they were emitting outside of the cone.
* Fixed photons computing one more bounce than requested.
* Added an option to use the Radiosity solver for all multibounce, replacing photons. Useful as a reference but generally too much noise indoors.
* Fixed visualization of photons without final gather
Change 3716434 by Mark.Satterthwaite
Backout the remaining change from 3632041 that is no longer necessary - this was the last of the 4.18 Metal workarounds.
Change 3716491 by Chris.Bunner
Fixing up an edge-case on a recent optimization.
Change 3716611 by Guillaume.Abadie
Allows secondary screen percentage >= 100%.
Change 3716977 by Guillaume.Abadie
Back out changelist 3716158 to unblock QA pass.
#jira UE-51580
Change 3717111 by Arne.Schober
Fixing nomalization of Morph Tangents https://udn.unrealengine.com/questions/392462/
Also implemanted batching of the dispatches which should help worst case perfomance where dispatches become too small.
CalculateInverseAccumulatedWeights is not cheap and proably should be moved onto a task thread that runs as soon as the input weights are ready.
Change 3717127 by Mark.Satterthwaite
Fix a mismerge from the reversion of 3632041 - part of the modified code had been moved into another file and I didn't initially notice.
Change 3717178 by Mark.Satterthwaite
Remove useless copy-pasted expressions from glsl_type::GetByteAddressBufferInstance & force MetalBackend to relink. Apparently the previous Mac libs were mysteriously broken.
#jira UE-51583
Change 3717476 by Marcus.Wassmer
Fix PS4 compile. funciton local statics not allowed on PSSL
Also enabled the new atomics method for LPVs for all platforms
Change 3717502 by Arne.Schober
DR - Compiletime option for compressed ruleset (0.02ms perf gain on PS4 and disabled by default as it limits array size to 2million entries)
Change 3717601 by Arne.Schober
DR - Move cycle counter into more meaningfull locations.
Change 3718054 by Guillaume.Abadie
Removes unecessary check() failure on secondary upscale that fires when testing raw output screen percentage method.
Change 3718066 by Guillaume.Abadie
Reland: Rewrites editor primitive compositing to support TAA upsample.
This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives.
Change 3718589 by Mark.Satterthwaite
Console-variable to enable and disable Manual-Vertex-Fetch for Metal and fix the internal code to handle the subtle changes in behaviour for vertex-declarations so we don't explode under the Metal validation layer. MVF works on macOS, though testing did expose an error with Tessellation on Nvidia (true for MVF enabled & disabled).
Change 3718633 by Guillaume.Abadie
Fixes temporal instability issue of TAA upsample with secondary screen percentage.
Change 3718658 by Arne.Schober
DR - 25% MorphTarget Speed increase because there was a bit of cache thrashing between the waves going on.
Change 3718818 by Mark.Satterthwaite
Fix compilation on hlslcc - integral values are not automatically converted into comparisons with zero.
Change 3719004 by Guillaume.Abadie
Lets the game viewport client automatically set raw output screen percentage method when doing dynamic resolution with stereo rendering but without TAA upsample.
Change 3719375 by Mark.Satterthwaite
Extend mtlpp compiler testing app to support Metal tessellation compute shaders so we can send Nvidia a much simpler reproduction of their regression.
Change 3720099 by Mark.Satterthwaite
Make the left-hand arguments work in airdiff.
Change 3720413 by Mark.Satterthwaite
Support standalone compute shaders in the mtlpp compiler test app.
Change 3721232 by Mark.Satterthwaite
No more Metal Shader Model 4 - instead we have to have a Metal Shader Model 5 w/o Tessellation as Nvidia's shader compiler is broken on all tessellation shaders in 10.13.0 and above. There is no guarantee that they will fix this prior to 10.14 and I can't afford to disable tessellation entirely as if I do that then the AMD & Intel compilers will also regress. As there is no Shader Model 4 platform on Mac anymore I've amended the LevelEditorActions to disable the preview modes when no appropriate shader platform is available.
Change 3721244 by Mark.Satterthwaite
Fix incorrect enum handling for Metal features due to overflow.
#jira UE-51643
Change 3721338 by Mark.Satterthwaite
MIssing file from 3721232
Change 3721818 by Mark.Satterthwaite
Fix the Intel vector-array-dereference workaround so that it doesn't cause the AMD compiler to explode instead.
Change 3722139 by Arne.Schober
DR - [UE-51602] -Fixed Typo that accidently bound the LightingInstancebuffer to the Transform one
#jira UE-51602
Change 3722165 by Rolando.Caloca
DR - Default -opengl to GL4
Change 3722682 by Guillaume.Abadie
Fixes wrong clear color in SSR important for VR that has a HMD mesh.
Change 3722766 by Rolando.Caloca
DR - Fix static analysis
Change 3722943 by Mark.Satterthwaite
Disable the METAL_SM5_NOTESS shader platform again - I can workaround the Nvidia pipeline state compiler crash by changing the buffer address space from "constant" to "device" as we're managing to confuse the poor thing. This won't materially affect AMD or Intel as they don't care much about this, but to limit performance issues on Nvidia we only need to do this for Tessellation Compute shaders.
Change 3723100 by Mark.Satterthwaite
Apparently users like enabling Metal shader standards that won't work on their current OS, so don't display those that aren't going to work & display an error message before quitting rather than crashing when trying to load a project that tries to use an incompatible shader version.
Change 3723121 by Mark.Satterthwaite
Fix build error.
Change 3723245 by Daniel.Wright
Ensure for when a reflection capture upload fails due to incorrect lighting scenario level handling
Reflection captures with no data use an array index of 0, instead of -1. Might avoid reading uninitialized memory on PS4.
Change 3723387 by Arne.Schober
DR - Metal already applies the instance and vertexoffset in the shader
Change 3723393 by Mark.Satterthwaite
More fixes to the mtlpp compiler test application.
Change 3725258 by Guillaume.Abadie
Improves fast TAA upsample shader permutation by 15% on console.
Change 3725555 by Chris.Bunner
[Dupliate] CL 3725548 - Fixed invalid screenpercentage value in VehicleGame sample (was setting -1 but should default to 100). This has always been broken but was recently exposed by CL 3686200.
Change 3726845 by Guillaume.Abadie
Exposes SvPosition to material through screen position material expression, so that material no longer have SvPosition * InvViewSize * ViewSize precision loss.
#jira UE-51428
Change 3728014 by Guillaume.Abadie
Uses ScreenPosition material expression's PixelPosition pin in existing engine functions to improve precision.
#jira UE-51428
Change 3728053 by Richard.Wallis
Duplicate CL 3727958: Crash fix when using shared material libraries. Initial shader code library offset is not zero'd so all entry offsets were garbage.
Change 3728339 by Guillaume.Abadie
Adds project setting for TAA upample, and officialises TAA upsampling CVar.
Change 3728549 by Guillaume.Abadie
CsvProfiler is pretty cool, but even better with console autocompletion for lazy developers.
Change 3728752 by nick.bullard
Built and re-saved QA-MeshPaint
#jira UE-50978
Change 3728775 by Guillaume.Abadie
Implements r.DynamicRes.ChangePercentageThreshold to stabilize primary screen percentage.
Change 3729224 by Uriel.Doyon
Hidden levels now keep their last build data when using lighting scenarios.
Hidden levels don't affect the scene anymore volumetric lighting when not using lighting scenarios.
#jira UE-40454
#jira UE-38131
Change 3729243 by Marcus.Wassmer
Update Ansel to 1.4
#github 4159
#jira UE-51545
Change 3729325 by zachary.wilson
Adding indirect lighting to TM-LightingChannels
#jira UE-47069
Change 3729485 by zachary.wilson
Fixing ambient occlusion bias on QA-LightsStationary. Removed global PPV with bad settings, also fixed the shadow on the roof.
#jira UE-50972
Change 3729629 by Uriel.Doyon
Fixed crash when using debug view modes.
Fixed d3ddebug error when clearing quad overdraw buffer.
#jira UE-51836
Change 3730053 by Guillaume.Abadie
Allows edititing of AScreenshotFunctionalTestBase::ScreenshotCamera.
Change 3730308 by Guillaume.Abadie
Disables TAA upsample on buffer visualization, and disallow screen percentage preview in editor viewport with any buffer visualization.
Change 3730355 by Guillaume.Abadie
Sacrifices consistency for good cvar name for TAA upsample.
Change 3731403 by Daniel.Wright
Reduced slider for ContactShadowLength to .1, algorithm produces poor results with larger values.
Change 3731404 by Daniel.Wright
Checkpoint for ScreenShadowMaskTexture, allowing 'vis ScreenShadowMaskTexture'
Change 3731407 by Daniel.Wright
Must opt-in for FDistanceFieldSceneData::VerifyIntegrity
Change 3731517 by Guillaume.Abadie
Freezes dynamic resolution heuristic when doing pause.
Change 3732168 by Guillaume.Abadie
Renames TAA upsampling cvar.
Change 3732295 by Guillaume.Abadie
Lets the scene texture's size and texel size return the correct sizes after TAA upsample.
Change 3732313 by Guillaume.Abadie
Implements SceneTexture material expressions' automated tests.
Change 3734928 by Guillaume.Abadie
Adds panic mode when the last N frames are over budget to the dynamic resolution heuristic.
Change 3735966 by Ryan.Vance
Fixing mac steamvr compile issue. Missed a few lines in the refactor because mac.
Change 3736104 by Guillaume.Abadie
Removes FSceneViewInitOptions::bDisableGameScreenPercentage brought by 4.18, that new screen percentage API do in a better way.
Change 3736346 by Daniel.Wright
Volumetric fog is always interpolated in the pixel shader, since per-vertex interpolation gives consistently poor results. Fixes Volumetric Fog on opaque in Forward, and on transparent in Deferred.
Forward shading: per-pixel height fog is always done in the base pass, to work with MSAA correctly
Change 3736348 by Daniel.Wright
Forward shadowing of directional light for translucency
* Static shadowing and CSM supported with minimal filtering (1 PCF)
* Deferred renderer: affects translucency using 'Surface ForwardShading' lighting mode. Forward renderer: affects all translucency.
Change 3736650 by Rolando.Caloca
DR - vk - # of desc pools
Change 3737985 by Guillaume.Abadie
Fixes pixel inspector with primary and secondary screen percentage.
Change 3738638 by Michael.Lentine
Compile fix due to unclear operator precendence.
Change 3739417 by Daniel.Wright
Fixed a few issues with irradiance cache visualization
Change 3739447 by Daniel.Wright
Skip forward static shadowing in projects with static lighting disabled
Change 3739595 by Daniel.Wright
ConditionalPostLoad DistanceFieldReplacementMesh. Should fix a crash on load when static mesh derived data is being rebuilt, and the DistanceFieldReplacementMesh is in use.
Change 3739598 by Daniel.Wright
Disable capsules shadows on lowest shadow quality
Change 3739611 by Daniel.Wright
Added r.CapsuleDirectShadows and r.CapsuleIndirectShadows for more specific scalability control over capsule shadow features
New Lighting Feature show flags for RTDF shadows and Capsule Shadows
Change 3740516 by Guillaume.Abadie
Fixes VR editor rendering only on eye with TAA upsample.
#jira UE-52016
Change 3740580 by Guillaume.Abadie
Fixes chromatic aberration with TAA upsample and multiple view rendering.
#jira UE-51993
Change 3740588 by Guillaume.Abadie
Gives to FXAA a more explicit draw event name for easier UDN support.
Change 3740845 by Michael.Lentine
Fix shipping build.
Change 3740903 by Guillaume.Abadie
Disables dynamic resolution threading outliers detection by default and includes editor UI GPU cost within dynamic resolution's begin/end frame events for better reliability of timestamp query based dynamic res in editor.
Change 3741355 by Daniel.Wright
Normalize planar reflection plane - fixes crash when scaling a BP with a planar reflection component
Change 3741357 by Daniel.Wright
More info on volumetric lightmap import failure
Change 3742535 by Ryan.Vance
Fix for view rect changes.
Change 3743282 by Guillaume.Abadie
Fixes a bug in dynamic resolution heuristic's outlier detection that was preventing the over budget panic to react.
Change 3743559 by Michael.Lentine
Port Siren changes for recompute tangents. This adds recompute tangents for cloth as well as the ability for recompute tangents to work across seams where vertices are duplicated.
Change 3743679 by Guillaume.Abadie
Cherry-pick 3743621: Fixes subsurface profile fallback to lit shading model when Opacity == 0, introduced by 3447144.
#jira UE-51569
Change 3743906 by Ryan.Brucks
BlueprintMaterialAndTextureNodes Plugin: Fix for clamping sampled HDR render target values by setting ERangeCompressionMode in the FReadSurfaceDataFlags to RCM_MinMax
Change 3744096 by Ryan.Brucks
BlueprintMaterialAndTextureNodes Plugin: removed Mip option from Texture2D_SampleUV_EditorOnly for now since reads from source data cannot access mips and it can be misleading.
Change 3744253 by Guillaume.Abadie
Fixes merge collisions of debug canvas rendering with High DPI, fixes stat unit on high DPI monitors, and fixes secondary screen percentages.
Change 3744953 by Chris.Bunner
Crash workaround.
Change 3745628 by Marcus.Wassmer
Temporarily disable recalctangent normal-smoothing
#jira UE-52166
Change 3745942 by Guillaume.Abadie
Fixes a todo in FCommonViewportClient
Change 3746005 by Guillaume.Abadie
Fixes stat UnitGraph on high DPI monitor.
Change 3746029 by Guillaume.Abadie
Oups.... Fix compilation. :D
Change 3748322 by Guillaume.Abadie
Shows dynamic resolution's primary screen percentage on stat unit/unitgraph console commands.
Change 3748346 by Chris.Bunner
Potential static analysis fix.
Change 3748349 by Chris.Bunner
Mac feature support flag fix on versions < 10.30.
Change 3749336 by Guillaume.Abadie
Fixes some spelling mistakes in dynamic resolution cvars. Thanks Daniel!
Change 3749374 by Guillaume.Abadie
Adds a black background on the stat unitgraph so timing curves can be seen no matter the content.
Change 3749437 by Guillaume.Abadie
Final UI polish up for `stat unitgraph`
Change 3749719 by Guillaume.Abadie
Fixes a crash when changing r.DynamicRes.MaxScreenPercentage below current screen percentage.
Change 3750243 by Chris.Bunner
Increasing controller's automated test timeout to allow for slower machines to complete the longest tests.
#jira UE-48494, UE-51907
Change 3750728 by Guillaume.Abadie
Fixes merge collision in chromatic aberration.
#jira UE-52282
Change 3750791 by Guillaume.Abadie
Fixes chromatic baerration R and G channel swap.
Change 3751246 by Guillaume.Abadie
Bypasses screen percentage apply with mobile LDR rendering.
#jira UE-52089
Change 3752624 by Guillaume.Abadie
Simplies dyn res state's event interface to a single virtual method.
Change 3753766 by Chris.Bunner
Rebuilt volumetric baked lighting test map and updated screenshots.
#jira UE-52322
Change 3755108 by Guillaume.Abadie
Fixes a bug where default dynamic resolution state was created at startup of server build.
#jira UE-52345
Change 3755267 by Mark.Satterthwaite
Fix condition controlling which features are enabled when iOS >= 10.3 - it wasn't working for iOS 11+ which was causing all kinds of problems.
#jira UE-52301
Change 3755811 by Chris.Bunner
Disable some new logging that was causing a stack overflow during EnginePreInit.
#jira UE-52345
Change 3756983 by Mark.Satterthwaite
Prevent different versions of metal_stdlib/ue4_stdlib from causing shader compilation failures due to a time-stamp mismatch between the local file & the PCH. This can happen when working with Xcode Beta releases that change the modification date, but not the content or compiler version, amongst other possibilities.
#jira UE-52073
Change 3757156 by Guillaume.Abadie
Fixes editor compositing with wireframe rendering.
#jira UE-52017
Change 3757435 by Mark.Satterthwaite
Workaround a bug in the MobileSceneCaptureRendering where it was copying the ViewInfo's ViewRect prior to it being configured by the mobile renderer.
#jira UE-52327
Change 3757523 by Uriel.Doyon
Fixed d3ddebug warning with unused inputs
Change 3758318 by Guillaume.Abadie
Cleaner fix for mobile scene captures.
#jira UE-52327
Change 3759541 by Mark.Satterthwaite
Don't enable Manual Vertex Fetch on iOS Metal for the moment as it isn't well tested there and will probably need further changes.
Change 3695086 by Guillaume.Abadie
Render thread dynamic resolution & TAA upsample.
Merging //Tasks/UE4/Dev-DynamicRes/...@3694528 to //UE4/Dev-Rendering/...
New features breakdown:
- TAA upsample compute shader that accepts screen percentage from 50% to 200%, with a faster shader permutation for consoles;
- Material no longer have to deal with BufferUV, and post process material after TAA upsample can sample any scene buffer seamlessly;
- Material texture per view mip bias to produce sharper images with TAA upsample;
- Render thread dynamic resolution heuristic is fully plugable by game code (for VR plugin specific heuristics);
- Dynamic resolution in PIE and game builds;
- Busy time queries in the RHI to be implemented on the different platforms so that the dynamic resolution heuristic can exactly associate GPU frame times with screen percentages in its history;
- Game user settings to enable/disable dynamic resolution;
- In editor viewport screen percentage config to previsualise and test content at different screen percentage.
Fixes:
- Various fixes for algorithms producing different outputs at different screen percentage.
- Various fixes for algorithms sampling outside view rects.
Refactors:
- TAA shader
- Moved some screen percentage specific members from FSceneView to FViewInfo for thread race bullet proofing.
Aknowledgements:
- VR plugins are broken
- DFAO still have some artifacts
Premiliminary review: Marcus.Wassmer
Review for TAA refactor and TAA upsample shader: Brian.Karis
Review for dynamic resolution: Brian.Karis
[CL 3761165 by Chris Bunner in Main branch]
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3441680 by Uriel.Doyon
Added units to point light intensity, to allow the user to specify the value in candelas or lumens.
New point light actors now configure the intensity in candelas by default.
Replaced viewport exposure settings by an EV100 slider.
Hidding the tone mapper in the show flag now still applies the exposure.
Added a new AutoExposure method called EV100 which allows to specify :
- MinEV100, MaxEV100
- Calibration Constnat
- Exposure Compensation
#jira UE-42783
Change 3454934 by Chris.Bunner
Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability.
Change 3512118 by Marc.Olano
Fix rare Sobol shader data problem. Mismatch with CPU code after a large number of points
Resubmit of portion of //UE4/Dev-Rendering@3509854 that was rolled back to avoid massive shader recompiles during integration testing
Change 3512129 by Benjamin.Hyder
Fixing up content in TM-SobolNoise
Change 3512151 by Rolando.Caloca
DR - Fixed some layouts that were general
- Added some extra dump information
Change 3512160 by Benjamin.Hyder
Still Fixing TM-Sobol
Change 3512180 by Marc.Olano
PCSS for spotlights. Like directional PCSS this is experimental, activated by r.Shadow.FilterMethod.
Change 3512261 by Michael.Lentine
Move Subsurface to shared properties.
Previously the same code could be executed multiple times without being optimized out if multiple inputs used the same subsurface output.
#jira UE-44405
Change 3512288 by Rolando.Caloca
DR - Fix issue when recycling image handles
Change 3512338 by Michael.Lentine
Fix precision if user enters a multiple of 90 degree rotation for transforms.
This will only work for exact values. Generally comparing float point numbers using == is unsafe but it should be ok in this case as they are exact values entered from the UI. We may want to later expand this to include thresholding using a value ~1e-7.
#jira UE-46137
Change 3512424 by Michael.Lentine
Regenerate BaseColor.uasset and Specular.uasset to not have the notforclient flags set.
#jira UE-44315
Change 3512686 by Brian.Karis
Fix for quadric assert in infiltrator. Due to bad tangents in source mesh.
Change 3512696 by Brian.Karis
Unrevert TAA. Fixed DOF NaN artifacts
Change 3512717 by Marcus.Wassmer
PR #3714: Fix typo in EOcclusionCombineMode (Contributed by Mumbles4)
Change 3513112 by Richard.Wallis
Crash when packaging for iOS with Shared Material Native Libraries and Share Material Shader Code from windows platform. Offline shader compile for archiving not done - shader header has missing offline compile flag for native Metal library archiving.
Fix includes:
- Handle offline compile failure when not running on Mac and no remote is configured (or remote fails). (I think it's this point at which the crash in the bug report is at).
- Make sure remote can build for native Metal libraries and archive correctly - this should now support Linux platforms or Mac to Mac (if enabled in MetalShaderCompiler.cpp) for testing if required.
- Updated to include remote calling into the xcode 9 Metal pch fix already submitted by Mark Satt.
#jira UE-45657
Change 3513357 by Richard.Wallis
Windows compile fix.
Change 3513375 by Guillaume.Abadie
Exposes the possibility to manually destroy the GPU ressource of UTextureRenderTarget2D.
Change 3513685 by Richard.Hinckley
#jira UEDOC-3822
Fixing a comment that refers to a non-existent function, for documentation purposes.
Change 3513705 by Marc.Olano
Updates to Sobol test levels in RenderTest project
Change 3513730 by Rolando.Caloca
DR - Fix mip size copying resolve targets
- Fix compute fence
- Fix descriptor set texture layout
- More dump info
Change 3513742 by Marc.Olano
Texture-free numeric print for shader debugging
Change 3513777 by Daniel.Wright
Handled edge case where no furthest samples are found in precomputed visibility
Change 3514852 by Rolando.Caloca
DR - Fix -directcompile on SCW
Change 3515049 by Rolando.Caloca
DR - hlslcc dump crash fix
Change 3515167 by Rolando.Caloca
DR - hlslcc - Fix bogus string pointer
- Allow reading from non-scalar UAVs
Change 3515745 by Rolando.Caloca
DR - Linux compile fix
Change 3515862 by Rolando.Caloca
DR - Remove old reference to CCT
- Link with hlslcc debug libs on SCW debug config for easier debugging
Change 3516292 by Rolando.Caloca
DR - glslang exe fixes
Change 3516568 by Rolando.Caloca
DR - hlslcc - Copy fix for *Buffer as functionparameters
Change 3516659 by Marcus.Wassmer
Fix some d3derrors with distance fields
Change 3516801 by Daniel.Wright
Fixed crash when doing editor 'Force Delete' on a static mesh whose distance field is still being built. Any UObject reference that is to an asset can be NULL'ed by the editor.
Change 3516825 by Rolando.Caloca
DR - Some initial fixes for structured buffers
Change 3516843 by Rolando.Caloca
DR - Fix for Vulkan dist fields
Change 3516869 by Marcus.Wassmer
Add format to the createrendertarget blueprint node
Change 3516957 by Daniel.Wright
Fixed bUsesDistortion being editable
Change 3516965 by Daniel.Wright
Still mark the distance field task completed, even if the static mesh has been deleted
Change 3517039 by Yujiang.Wang
GitHub #2655: Optimization for shadow map resolution selection for spot lights
* Use the radius of the inscribed sphere at the cone end as the spot light's screen radius
Note: slight drop of shadow quality of spot lights may occur when they are far away from the camera. This is intended, since before this optimization they tend to be always rendered with the maximum shadow map resolution (2048), which is very costly
#jira UE-33982
Change 3517069 by Yujiang.Wang
Fix for ScissorRect settings in d3d11 being lost under certain scenarios
* Scissor rectangle is always enabled in the low-level d3d11 pipeline, and it is expected that at least one ScissorRect is present no matter whether RHISetScissorRect is called with bEnable=false (when it is false we just use a big rect to make it effectively disabled)
* However FD3D11StateCacheBase::ClearState() clears all the states, which removes scissor rectangles and causes problems for certain routines (FScene::UpdateSkyCaptureContents)
* Now SetScissorRectIfRequiredWhenSettingViewport will always set a effectively disabled ScissorRect on each FD3D11DynamicRHI::RHISetViewport call, just like d3d12 does
#jira UE-45465 UE-44760
Change 3517134 by Yujiang.Wang
CIS fix
Change 3517662 by Rolando.Caloca
DR - Execute upload Vulkan cmds on the RHI thread
- Fix crash with structured buffer
Change 3517677 by Rolando.Caloca
DR - Update/copy textures on RHI thread
Change 3517680 by Rolando.Caloca
DR - Copy texture bulk data on rhi thread
Change 3517748 by Marcus.Wassmer
temporary workaround for one class of GPU crashes
Change 3518832 by Rolando.Caloca
DR - Copy & extend 3518077
- Fix for movable skylight shader missing on simple forward (low lighting quality mode)
Change 3519973 by Richard.Wallis
Jittering in Engine Menu Dropdown Options. Jitter fix: Fix some areas that hadn't been changed from RoundToInt (from previous CL's) to CeilToInt.
#jira UE-46505
Change 3520849 by Uriel.Doyon
Fixed issue with investigate texture command and dynamic component entries.
Change 3521064 by Guillaume.Abadie
Returns absolute path of shader files on error to avoid work loss in visual studio that can't figure out that a sln relative and absolute path might leading to same file on disk.
Change 3521834 by Rolando.Caloca
DR - Fix decals on Vulkan
Change 3521892 by Rolando.Caloca
DR - Fix Vulkan texture streaming
Change 3523181 by Rolando.Caloca
DR - Copy from 3523176
UE4.17 - Fix Vulkan scissor causing text to not clip
Change 3523534 by Yujiang.Wang
UE-46631: Implement a scalable LongGPUTask to fix ProfileGPU
* A new, scalable, platform-independent IssueLongGPUTask is now implemented in UtilityShaders
* Removed IssueLongGPUTask and G*Vector4VertexDeclaration from RHI implementations
* The measurement of the execution time of a basic LongGPUTask unit is kicked off on the very first frame
#jira UE-46631
Change 3524552 by Yujiang.Wang
Fix iteration number calculation of LongGPUTask
Change 3524975 by Joe.Graf
Moved the Hamming-weight function from StaticMeshDrawList.inl to FGenericPlatformMath
Added SSE versions using _mm_popcnt_u64 for platforms that support it
Added a SSE check to gracefully exit when missing the instruction and it was expected to be there
#CodeReview: arciel.rekman, brian.karis
Change 3525306 by Daniel.Wright
Fixed ensure from LPV
Change 3525346 by Rolando.Caloca
DR - Fix linking issue
Change 3525459 by Daniel.Wright
Volumetric Lightmaps - higher quality precomputed GI on dynamic objects and GI on Volumetric Fog
* Enabled by default on all maps, effective after a lighting build. This replaces the existing Precomputed Light Volume and Indirect Lighting Cache features.
* New Lightmass World Settings: VolumeLightingMethod, VolumetricLightmapDetailCellSize and VolumetricLightmapMaximumBrickMemoryMb.
* Lightmass computes lighting samples in an adaptive grid, with higher density around geometry inside the importance volume. Positions outside the importance volume get lit with the border texels.
* Improved Lightmass volume solver to use importance photons and full adaptive final gather, so volume samples have similar quality to 2d lightmaps.
* A static indirection texture is built covering the importance volume and flattening the brick tree by storing the offset to the highest density brick at each indirection cell.
* Seamless and efficient GPU interpolation across density levels is achieved by adding a single row of padding to bricks, copied from neighbors, and stitching up bricks with lower density neighbors
* The Volumetric lightmap stores Irradiance as a 3 band SH, which is 27 floats, quantized into 28 bytes, 7 texture lookups.
* A full screen barebones material using Volumetric Lightmaps costs .42ms on 970 GTX, while Indirect Lighting Cache Point costs .32ms
* Sky bent normal is also stored for stationary skylights and Directional Light Shadowing for Single Sample Shadow receiving.
* Volumetric fog, Movable components, unbuilt Static Components, SingleSampleShadow receiving and Capsule Shadows use Volumetric Lightmaps if available
* New Visualization show flag for Volumetric Lightmap sample points
* Level streaming of volume light data is not currently supported with this method
Change 3525461 by Daniel.Wright
Lowered default r.Shadow.RadiusThreshold for Epic shadow settings as it was causing a lot of visible artifacts from small objects popping out. This will increase shadowmap cost slightly (13.5ms RT -> 14.3ms RT in Fortnite on PS4, no measurable GPU difference).
Change 3526459 by Rolando.Caloca
DR - Fix validation error
Change 3526474 by Rolando.Caloca
DR - Integrate from GV
Change 3526487 by Daniel.Wright
Disabled Volumetric Lightmap filtering with neighbors due to artifacts
Fix linux compile errors
Change 3526833 by Rolando.Caloca
DR - Workaround for hlslcc
Change 3526991 by Uriel.Doyon
Integrated 3526859 : Texture mip bias is now reset whenever the streaming budget increases. This fixes an issue where textures persistently become low res after a memory spike.
Change 3527574 by Rolando.Caloca
DR - Added some missing resource entries for SCW direct mode
Change 3527625 by Rolando.Caloca
DR - Copy from 3527113
UE4.17 - Fix Vulkan not calling Present
Change 3528461 by Brian.Karis
Support larger hash sizes. Added uint list hashing function.
Change 3528780 by Rolando.Caloca
DR - Default Vulkan resources
Change 3528818 by Rolando.Caloca
DR - glslang - Added missing accessor
Change 3528839 by Rolando.Caloca
DR - Fix virtual path issue when using non-engine relative absolute paths
Change 3528900 by Daniel.Wright
Fixed variable shadowing
Change 3529039 by Rolando.Caloca
DR - Read Spirv reflection data (not used yet)
Change 3529040 by Joe.Graf
Fixed the 32bit compile failures for the popcnt optimization
#CodeReview: arciel.rekman
Change 3529060 by Rolando.Caloca
DR - hlslcc - New flag for keeping resource names
Change 3529344 by Rolando.Caloca
DR - Delete unused file
Change 3529723 by Brian.Karis
Fixed static analysis cleaner.
Change 3531357 by Michael.Trepka
Updated Mac glslang libraries with latest changes. Also, updated the Xcode project (generated with CMake) and moved it to a different location so that it no longer uses hardcoded absolute paths. It should be easy to rebuild these libraries in the future.
Change 3531517 by Joe.Graf
Added support for ddx_fine, ddy_fine, ddx_coarse, ddy_coarse to hlslcc
#CodeReview: arciel.rekman, mark.satterthwaite, rolando.caloca
Change 3531626 by Joe.Graf
Mac version of the popcount optimization
Changed Linux version to use the same builtin
#CodeReview: mark.satterthwaite, arciel.rekman
Change 3531837 by Chris.Bunner
SetScissorRectIfRequiredWhenSettingViewport sets the viewport size by default rather than disabling the scissor rect.
#jra UE-46753
Change 3533415 by Joe.Graf
Renamed the SSSE3 checks per feedback
#CodeReview: arciel.rekman
Change 3533480 by Michael.Lentine
Use more accurate descriptions for shader recompile options
Change 3533511 by Joe.Graf
Updated the GenericPlatformMisc to match the SSSE3 name change
#CodeReview: arciel.rekman
Change 3533521 by Marcus.Wassmer
Fix scenerenderer leak when updating out of view planar reflections
Change 3533528 by Joe.Graf
Updated comments
#CodeReview: n/a
Change 3533608 by Mark.Satterthwaite
New manual Xcode project for glslang so that we include all the necessary code and can link again.
Change 3534260 by Mark.Satterthwaite
Fix the Xcode 9 Beta 3 compile errors in MetalRHI without breaking Xcode 8.3.3.
Change 3535789 by Yujiang.Wang
Fix for wrong hair shading in forward shading
* IBL reflections should be turned off for hairs
Change 3537059 by Ben.Marsh
Fixing case of iOS directories, pt1
Change 3537060 by Ben.Marsh
Fixing case of iOS directories, pt2
Change 3538297 by Michael.Lentine
Add shader comparison test.
Adding the basic test case.
Adding logic to Common.ush to enable FP16 conditionally on a define (which is not set by default)
Adding more exported functionality to automation for use in the shader test.
Change 3538309 by Michael.Lentine
Add missing file from Shader Test CL.
Change 3538751 by Michael.Lentine
Add missing pragma once.
Change 3539236 by Michael.Lentine
Do not ignore return values.
Change 3539237 by Michael.Lentine
Check in the correct file
Change 3540343 by Rolando.Caloca
DR - Added t.DumpHitches.AllThreads
Change 3540661 by Yujiang.Wang
Fix spot tube light direction
* The tube direction for a spot light was pointing along the light direction, now it is along the local Z axis which is perpendicular to the light direction. Lightmass is also touched
* A new LightTangent is added to FDeferredLightData
* Packed all the values from LightSceneProxy->GetParameters into a single FLightParameters struct to avoid copy-pasting them everywhere
Change 3541129 by Rolando.Caloca
DR - vk - Copy all Vulkan fixes from 4.17
Change 3541347 by Yujiang.Wang
Fix wrong ViewFlags being set between objects when rendering shadow depth maps
* Bug caused by trying to share DrawRenderState between objects, but SetViewFlagsForShadowPass was designed to start from a fresh render state
* Now SetViewFlagsForShadowPass recalculates and sets the flags on each call
Change 3542603 by Rolando.Caloca
DR - vk - Allow sharing samplers on Vulkan
Change 3542639 by Jian.Ru
Changed warning text to better indicate that global clip plane needs to be enabled for planar reflection
#RB Marcus.Wassmer
Change 3543167 by Michael.Lentine
Fix naming for the shader comparison tests.
Change 3543210 by Uriel.Doyon
Fixed an issue when computing material scales where the default material ends up being used instead of the required material.
In that case, we used the default settings for texture streaming (assuming a scale of 1).
Change 3543221 by Brian.Karis
Simplifier optimizations
Change 3543239 by Arciel.Rekman
hlslcc: remove FCustomStd* workarounds.
- This was previous attempt to work around problems arising from different STL used for building libhlslcc (in the cross-toolchain) and possibly different STL used for building engine (on the system).
- The same problem has been resolved by bundling libc++.
Change 3543946 by Michael.Lentine
Add comparison output.
Change 3544277 by Brian.Karis
Fixed uninitialized var error
Change 3544404 by Rolando.Caloca
DR - Fix broken textures
Change 3544503 by Jian.Ru
Ensure lighting failure delegates are always called
#RB Marcus.Wassmer,Daniel.Wright
#3689
Change 3545241 by Daniel.Wright
Fixed spotlight whole scene shadows using a radius 2x too long
Change 3545347 by Daniel.Wright
Fixed shadow occlusion culling broken by shadowmap caching change. FProjectedShadowKey is now computed correctly for whole scene shadows and SDCM_StaticPrimitivesOnly shadowmaps will fall back to the query for a SDCM_MovablePrimitivesOnly, since the static primitives shadowmap's query is not issued every frame.
Change 3546196 by Marcus.Wassmer
Fix minor typo
Change 3546459 by Daniel.Wright
ULevel::PostEditChangeProperty recreates rendering resources if MapBuildData is modified - fixes a crash when Force Deleting the MapBuildData package.
Change 3546469 by Jian.Ru
Take into account CVarStaticMeshLODDistanceScale during static mesh LOD calculation
Change 3546804 by Daniel.Wright
[Copy] Added SendAllEndOfFrameUpdates draw event to wrap skin cache events
Change 3546814 by Daniel.Wright
[Copy] Only use skylight OcclusionMaxDistance for the global distance field if it casts shadows
Change 3546815 by Daniel.Wright
[Copy] Snap volumetric fog light function target resolution to a factor of 32 to avoid constant texture reallocation
Change 3546817 by Daniel.Wright
[Copy] Warmup time warning
Change 3546828 by Daniel.Wright
[Copy] Fixed UWorld::DestroyActor in PIE calling InvalidateLightingCacheDetailed which can do a FlushRenderingCommands and cause a large hitch
Change 3546836 by Daniel.Wright
[Copy] ULightComponent::InvalidateLightingCacheInner uses MarkRenderStateDirty instead of slow reregister + FlushRendingCommands, and only for lights which might have static lighting data
Change 3546849 by Rolando.Caloca
DR - vk - Fix missing samplerstates
- Fixes for structured buffers
- Add missing Draw and Dispatch Indirect
Change 3547516 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547542 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547563 by Brian.Karis
Fixed some compiler warnings and hopefully some errors.
Change 3547610 by Brian.Karis
Replaced macros with inlined functions
Change 3547620 by Brian.Karis
Clean up includes
Change 3547770 by Marcus.Wassmer
GPU Crash for MTBF analytics
Change 3547773 by Marcus.Wassmer
Updated doxygen comment for new analytic
Change 3548244 by Rolando.Caloca
DR - Fix for translucency
Change 3548352 by Yujiang.Wang
Added soft source radius for point and spot lights
* Soft source radius controls how 'blurry' the shape of specular lighting looks
* Implemented by LobeRoughness modification
* Better approximation for spherical lights so that they don't look sharp when the radius is large using 'smoothed representative point' method
* Suppoted LightTangent in forward shading
Change 3548530 by Brian.Karis
Fix for mac build
Change 3548770 by Rolando.Caloca
DR - vk - Prereq work for Vulkan parallel RHI contexts
Change 3548772 by Jian.Ru
Fixed an issue that caused an ensure when switching levels in D3D10. #rb Marcus.Wassmer
Change 3548865 by Daniel.Wright
With shadowmap caching of whole scene shadows, only one of the cache modes issues an occlusion query. Fixes a crash where the static primitive shadowmap is culled but the movable primitive shadowmap is visible, which is normally not possible.
Change 3548952 by Rolando.Caloca
DR - Allow separate samplers in the shaders on Vulkan
Change 3549197 by Marcus.Wassmer
Fix DX12 PIx not working in cooked builds
Change 3549209 by Daniel.Wright
Occlusion culling for CSM, from the main camera, controlled by 'r.Shadow.OcclusionCullCascadedShadowMaps'. Disabled by default as rapid view changes don't work well with latent occlusion queries.
Change 3549943 by Ben.Marsh
Include better diagnostic information when a modified build product is detected after running a build step.
Change 3550546 by Rolando.Caloca
DR - Fix merge issue
Change 3550962 by Marcus.Wassmer
EarlyZ Masking requires full depth prepass, so just force it to.
Change 3551062 by Daniel.Wright
Handle NULL skylight
Change 3551104 by Rolando.Caloca
DR - vk - Remove assert to match other platforms
Change 3551221 by Rolando.Caloca
DR - vk - Add mirror clamp to edge extension
- Fix framebuffer deletion
Change 3551224 by Daniel.Wright
Volumetric lightmap increase density around static lights affecting a voxel brighter than LightBrightnessSubdivideThreshold.
Change 3551495 by Rolando.Caloca
DR - vk - Intiial support for async queue
Change 3552101 by Rolando.Caloca
DR - vk - Fix for async
Change 3552102 by Rolando.Caloca
DR - SkinCache - Fix potential leak on staging buffers for recompute tangents
- Integrate changes from 4.17 for memory optimizations
Change 3552104 by Rolando.Caloca
DR - vk - Support for SRVs for index buffers
Change 3552838 by Rolando.Caloca
DR - vk - Enable debug markers if found
Change 3553106 by Rolando.Caloca
DR - vk - Fixes for index buffer SRVs
Change 3553107 by Rolando.Caloca
DR - vk - Enable recompute tangents on Vulkan
Change 3553154 by Rolando.Caloca
DR - vk - Fix crash with null uav
Change 3553342 by Yujiang.Wang
Fix redundant skylights in AdvancedPreviewScene
* PreviewScene was changed to using a skylight instead of ambient cubemap to support forward shading
* AdvancedPreviewScene originally had a skylight, now it is changed to using the one inherited from PreviewScene
Change 3553481 by Rolando.Caloca
DR - Integrate fix for D3D12 support of index buffers SRVs
#jira UE-47674
Change 3553715 by Rolando.Caloca
DR - Fix crash when launching PC with -featureleveles31
Change 3553725 by Rolando.Caloca
DR - Redo fix
Change 3553803 by Rolando.Caloca
DR - Shader compile fixes for ES3.1
Change 3553963 by Rolando.Caloca
DR - vk - Remove extra IRDump
Change 3554741 by Ben.Marsh
CIS fix.
Change 3555222 by Rolando.Caloca
DR - vk - static analysis fix
Change 3555362 by Rolando.Caloca
DR - vk - Prep work for separate present queue
Change 3556800 by Daniel.Wright
Fixed screenshot for simple volume material doc
Change 3556942 by Brian.Karis
Fixed Bokeh DOF regression.
Change 3556959 by Rolando.Caloca
DR - vk - Rework staging buffer peak usage
Change 3557497 by Daniel.Wright
Better display name for Unbound property on post process volume
Change 3557499 by Daniel.Wright
Disable r.GenerateLandscapeGIData by default, opt-in for kite demo. Projects that want to use heightfield GI need to opt-in to r.GenerateLandscapeGIData.
Change 3557068 by Olaf.Piesche
Configurable spawn rate scaling reference value; sets the zero-scale reference value (default: 2), so additional quality levels can be added and scaling customized further.
IMPORTANT: This sets the reference to 3 in PS4Scalability.ini; effects on PS4 are again going to have reduced spawn rates versus PC and Neo, as intended by the FX artists starting with this change.
#tests QAGame test maps
Change 3558123 by Rolando.Caloca
DR - vk - static analysis fix
Change 3558685 by Yujiang.Wang
Github #3323: Two sided foliage lightmap directionality fix
* Subsurface is not intended to work with lightmaps that don't have directionality, however we still want it to look similar to a directional one
* Now it uses a constant directionality value
#jira UE-42523
Change 3559052 by Brian.Karis
Hopefully fix static analysis
Change 3559113 by Rolando.Caloca
DR - Fix crash witrh planar reflections
Change 3559275 by Yujiang.Wang
Fix race condition on several scalability CVars between rendering thread and game thread
Change 3559612 by Rolando.Caloca
DR - vk - SM5 with uniform buffers backend support
Change 3559716 by Rolando.Caloca
DR - hlslcc - Fix linker warning on SCW debug
Change 3559768 by Rolando.Caloca
DR - vk - Keep ub names for bindings
Change 3560195 by Rolando.Caloca
DR - accessor
Change 3560275 by Rolando.Caloca
DR - vk - Support for uniform buffers
Change 3560913 by Rolando.Caloca
DR - vk - Fix static analysis
Change 3561145 by Rolando.Caloca
DR - Don't crash if out of resource table bits
Change 3561194 by Rolando.Caloca
DR - vk - Integrate timestamp fixes
Change 3562009 by Rolando.Caloca
DR - vk - Workaround for bad UTexture data
Change 3563884 by Chris.Bunner
VK_NULL_HANDLE fix.
Change 3563885 by Jian.Ru
Ignore a warning caused by enabling distance field generation so that test Cube_Blue and Cube_Section don't fail. #rb Chris.Bunner
Change 3565943 by Jian.Ru
Add extra warning log triggered when attempt to create FRWBuffer greater than 256MB in ComputeLightGrid() #rb Chris.Bunner
Change 3569479 by Michael.Lentine
Integrate rhino shader changes to dev-rendering
Change 3569511 by Michael.Lentine
Fix formating and string out on windows.
Change 3569572 by Yujiang.Wang
Fix MeasureLongGPUTaskExecutionTime crashing on AMD on Macs
Change 3569614 by Yujiang.Wang
Flush rendering commands before measuring the long GPU task's excution time to get accurate results
Change 3570524 by Jian.Ru
Add extra parentheses to avoid compilation warning #rb Chris.Bunner
Change 3570722 by Chris.Bunner
Static analysis workaround - same code, just validating compile-time assumptions a little further.
Change 3570880 by Jian.Ru
Add small depth offset to avoid depth test failing during velocity pass
#jira UE-37556
Change 3572532 by Jian.Ru
Disable a warning to let tests pass
#jira UE-48021
Change 3573109 by Michael.Lentine
Checkin Michael.Trepka's fix for external dynamic libraries on mac.
This is needed to make the build go green on mac.
Change 3573995 by Jian.Ru
Move an include out of define to let nightly build pass
Change 3574777 by Chris.Bunner
Continued merge fixes.
Change 3574792 by Rolando.Caloca
DR - Rename todo
Change 3574794 by Chris.Bunner
Re-adding includes lost in a pre-merge merge.
Change 3574879 by Michael.Trepka
Disabled a couple of Mac deprecation warnings
Change 3574932 by Chris.Bunner
Merge fix.
Change 3575048 by Michael.Trepka
Fixed iOS compile warnings
Change 3575530 by Chris.Bunner
Duplicating static analysis fix CL 3539836.
Change 3575582 by Chris.Bunner
Fixed GetDimensions return type in depth resolve shaders.
Compile error fix.
Change 3576326 by Chris.Bunner
Static analysis fixes.
Change 3576513 by Michael.Trepka
Updated Mac MCPP lib to be compatible with OS X 10.9
Change 3576555 by Richard.Wallis
Metal Validation Errors. Dummy black volume texture is in the wrong format in the Metal shader for the VolumetricLightmapIndirectionTexture. Create a new dummy texture with pixel format PF_R8G8B8A8_UINT.
#jira UE-47549
Change 3576562 by Chris.Bunner
OpenGL SetStreamSource stride updates.
Change 3576589 by Michael.Trepka
Fixed Mac CIS warnings and errors in Dev-Rendering
Change 3576708 by Jian.Ru
Fix cascade preview viewport background color not changing
#jira UE-39687
Change 3576827 by Rolando.Caloca
DR - Minor fix for licensee
Change 3576973 by Chris.Bunner
Fixing up HLSLCC language spec mismatch (potential shader compile crashes in GL and Vulkan).
Change 3577729 by Rolando.Caloca
DR - Fix for info on SCW crashes
Change 3578723 by Chris.Bunner
Fixed issue where custom material attribute was using display name as hlsl function name.
Change 3578797 by Chris.Bunner
Fixed pixel inspector crashing on high-precision normals gbuffer format.
#jira UE-48094
Change 3578815 by Yujiang.Wang
Fix for UE-48207 Orion cooked windows server crash on startup
* Crash caused by rendering features not available in a dedicated server build
* Skip over MeasureLongGPUTaskExecutionTime when !FApp::CanEvenRender()
#jira UE-48207
Change 3578828 by Daniel.Wright
Disable volumetric lightmap 3d texture creation on mobile
Change 3579473 by Daniel.Wright
Added View.SharedBilinearClampSampler and View.SharedBilinearWrapSampler. Used these to reduce base pass sampler counts with volumetric lightmaps.
Change 3580088 by Jian.Ru
Fix QAGame TM-CharacterMovement crashing on PIE
#jira UE-48031
Change 3580388 by Daniel.Wright
Fixed shadowed light injection into volumetric fog fallout from Rhino merge
Change 3580407 by Michael.Trepka
Updated Mac UnrealPak binaries
Change 3581094 by Michael.Trepka
Fix for ScreenSpaceReflections not working properly on iOS 11
Change 3581242 by Michael.Trepka
Fixed a crash on startup on Mac when launching TM-ShaderModels in QAGame
#jira UE-48255
Change 3581489 by Olaf.Piesche
Replicating CL 3578030 from Fortnite-Main to fix #jira UE-46475
#jira FORT-47068, FORT-49705
Don't inappropriaely touch game thread data on the render thread. Push SubUV cutout data into a RT side object owned by the sprite dynamic data.
#tests FN LastPerfTest
Change 3581544 by Simon.Tovey
Fix for ensure accessing cvar from task thread.
#tests no more ensure
Change 3581934 by Chris.Bunner
Fixed ConsoleVariables.ini break from merge.
Change 3581968 by Jian.Ru
Fix QAGame TM-ShaderModels PIE crash when resizing game viewport
#jira UE-48251
Change 3581989 by Richard.Wallis
Fix for NULL PrecomputedLightingBuffer. It is null for first frame request in forward rendering so should have the GEmptyPrecomputedLightingUniformBuffer set in these cases after it's been initially tried to be set not before.
#jira UE-46955
Change 3582632 by Chris.Bunner
Resolved merge error.
Change 3582722 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on GL
#jira UE-48208
Change 3584096 by Rolando.Caloca
DR - Fix for renderdoc crashing in shipping
#jira UE-46867
Change 3584245 by Jian.Ru
Fix System.Promotion.Editor.Particle Editor test crash
#jira UE-48235
Change 3584359 by Yujiang.Wang
Fix for UE-48315 Wall behind base in Monolith is flickering white in -game Orion
* Caused by dot(N, V) being negative
* Clamp to (0, 1)
#jira UE-48315
Change 3587864 by Mark.Satterthwaite
Fix the GPU hang on iOS caused by changes to the Depth-Stencil MSAA handling: you can't store the MSAA stencil results on iOS < 10 unless you use the slower MTLStoreActionStoreAndMultisampleResolve which we don't need for the mobile renderer.
#jira UE-48342
Change 3587866 by Mark.Satterthwaite
Correctly fix iOS compilation errors against Xcode 9 Beta 5 and Xcode 8.3.3 - duplicating function definitions is guaranteed to be wrong.
Change 3588168 by Mark.Satterthwaite
Move the Xcode version into the Metal shader format header, not the DDC key, so that we can handle bad compiler/driver combinations in the runtime and don't force all users to recompile every time the Xcode version changes.
Change 3588192 by Rolando.Caloca
DR - Fix d3d12 linker error when EXECUTE_DEBUG_COMMAND_LISTS is enabled
Change 3588291 by Rolando.Caloca
DR - Fix for d3d12 command list crash: Commited resources can not have aliasing barriers
#jira UE-48299
Change 3590134 by Michael.Trepka
Copy of CL 3578963
Reset automation tests timer after shader compilation when preparing for screenshots taking to make sure tests don't time out.
Change 3590405 by Rolando.Caloca
DR - hlslcc - support for sqrt(uint)
Change 3590436 by Mark.Satterthwaite
Rebuild Mac hlslcc for CL #3590405 - without the various compiler workarounds left over from before the recent code changes.
Change 3590674 by Rolando.Caloca
DR - vk - Integration from working branch
- Fixes distance field maps
- Compute pipelines stored in saved file
- Adds GRHIRequiresRenderTargetForPixelShaderUAVs for platforms that need dummy render targets
Change 3590699 by Rolando.Caloca
DR - Fix distance fields mem leak
Change 3590815 by Rolando.Caloca
DR - vk - Fixes for uniform buffers and empty resource tables
Change 3590818 by Mark.Satterthwaite
Temporarily switch back to OpenVR v1.0.6 for Mac only until I can clarify what to do about a required but missing API hook for Metal. Re-enabled and fixed compile errors with Mac SteamVR plugin code.
Change 3590905 by Mark.Satterthwaite
For Metal shader compilation where the bytecode compiler is unavailable force the debug compiler flag and disable the archiving flag because storing text requires this.
#jira UE-48163
Change 3590961 by Mark.Satterthwaite
Submitted on Richard Wallis's behalf as he's on holiday:
Mac fixes for Compute Skin Cache rendering issues (resulting in incorrect positions and tangents) and for recomputing tangents. Problem sampling from buffers/textures as floats with packed data. Some of the data appears as denorms so get flushed to zero then reinterpreted as uints via asuint or in Metal as_type<uint>(). Fix here for Metal seems to be to use uint types for the skin cache SRV's and as_type<> to floats instead.
There could be some other areas where we're unpacking via floats that could affect Metal and I'm not sure how this will impact on other platforms.
#jira UE-46688, UE-39256, UE-47215
Change 3590965 by Mark.Satterthwaite
Remove the Z-bias workaround from Metal MRT as it isn't required and actually causes more problems.
Change 3590969 by Mark.Satterthwaite
Make all Metal shader platforms compile such that half may be used, unless the material specifies full precision.
Change 3591871 by Rolando.Caloca
DR - Enable PCSS on Vulkan & Metal
- Enable capsule shadows on Vulkan
Change 3592014 by Mark.Satterthwaite
Remove support for Mac OS X El Capitan (10.11) including the stencil view workaround.
Bump the minimum Metal shader standard for Metal SM4, SM5 & Metal MRT to v1.2 (macOS 10.12 Sierra & iOS 10) so we can use FMAs and other newer shader language features globally.
Enable the new GRHIRequiresRenderTargetForPixelShaderUAVs flag as Metal is like Vulkan and needs a target for fragment rendering.
Also fix the filename for direct-compile & remove the old batch file generation in the Metal shader compiler.
Change 3592171 by Rolando.Caloca
DR - CIS fix
Change 3592753 by Jian.Ru
repeat Daniel's fix on xb1 profilegpu crash (draw events cannot live beyond present)
Change 3594595 by Rolando.Caloca
DR - Fix D3D shader compiling run time stack corruption failure on debug triggering falsely
Change 3594794 by Michael.Trepka
Call FPlatformMisc::PumpMessages() before attempting to toggle fullscreen on Mac to fix an issue on some Macs running 10.13 beta that would ignore the toggle fullscreen call freezing the app
Change 3594999 by Mark.Satterthwaite
Disable MallocBinned2 for iOS as on Rhino it worked but on iOS 10.0.2 there are bugs (munmap uses 64kb granularity, not the 4096 the code expects given the reported page-size).
While we are here remove the spurious FORCE_MALLOC_ANSI from the iOS platform header.
#jira UE-48342
Change 3595004 by Mark.Satterthwaite
Disable Metal's Deferred Store Actions and combined Depth/Stencil formats on iOS < 10.3 as there are bugs on earlier versions of iOS 10.
#jira UE-48342
Change 3595386 by Mark.Satterthwaite
Silence the deprecation warning for kIOSurfaceIsGlobal until SteamVR switches to one of the newer IOSurface sharing mechanisms.
Change 3595394 by Rolando.Caloca
DR - Added function for tracking down errors in the hlsl parser
- Added support for simple #if 0...#endif
Change 3599352 by Rolando.Caloca
DR - Fixes for HlslParser
- Added missing attributes for functions
- Fixed nested assignment
Change 3602440 by Michael.Trepka
Fixed Metal shader compilation from Windows with remote compilation disabled
#jira UE-48163
Change 3602898 by Chris.Bunner
Resaving assets.
Change 3603731 by Jian.Ru
fix a crash caused by a material destroyed before the decal component
#jira UE-48587
Change 3604629 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on Android
#jira UE-48208
Change 3604984 by Peter.Sauerbrei
fix for orientation not being limited to that specified in the plist
#jira UE-48360
Change 3605738 by Chris.Bunner
Allow functional screenshot tests to request a camera cut (e.g. tests relying on temporal aa history).
#jira UE-48748
Change 3606009 by Mark.Satterthwaite
Correctly implement ClipDistance for Metal as an array of floats as required by the spec. and fix a few irritating issues from the merge that should not have.
- When compiling a tessellation vertex shader in the SCW direct mode we can't evaluate non-existant defines and we don't actually need to.
- The define names, values & shader file name are irrelevant to the Metal output key, but the shader format name & Metal standard really do matter - should speed up Metal shader compilation a bit.
- Move the shader vertex layer clip-distance to index 2 to avoid conflicts.
- Don't default initialise the debug code string for Metal shaders or it won't print out the actual code....
#jira UE-47663
Change 3606108 by Mark.Satterthwaite
Temporary hack to avoid a crash in AVPlayer.
#jira UE-48758
Change 3606121 by Mark.Satterthwaite
Fix Windows compilation.
Change 3606992 by Chris.Bunner
Static analysis fix.
[CL 3608256 by Marcus Wassmer in Main branch]
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]