* List of dependencies for Lightmass needs to be derived from the engine directory at runtime, rather than assuming that the base directory is Engine/Binaries/Win64.
* AgentInterface.dll is now copied to the same output folder as the editor SwarmInterface DLL at build time, rather than being checked into P4 in two places.
#rb none
#jira UE-70911
#ROBOMERGE-SOURCE: CL 5274269 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 5274270 by ben marsh in Main branch]
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3503468 by Marcus.Wassmer
Fix merge conflicts
Change 3537059 by Ben.Marsh
Fixing case of iOS directories, pt1
Change 3537060 by Ben.Marsh
Fixing case of iOS directories, pt2
Change 3608300 by Chris.Bunner
Added post process material to preview compile cache set to allow post process volume preview scene improvements.
Change 3608302 by Chris.Bunner
Fixed decal lifetime fading.
#jira UE-48400
Change 3608303 by Chris.Bunner
Updated default WritesAllPixels input to ignore dithering (as intended, was disabled due to isues at the time).
Fixed material instances returning their local data when not overridden.
#jira UE-48254
Change 3608455 by Mark.Satterthwaite
Enabling WorldPositionOffset requires disabling fast-math on Metal because the manually specified FMA's are not respected if one or more arguments is a literal which then leads to very different compiler optimisation between the depth-only shader and the base-pass shader. This change will only affect the way Metal compiles shaders.
#jira UE-47372
Change 3608462 by Rolando.Caloca
DR - Cloth vertex buffers no longer generate dummy vertices
Copy from 3608349 and 3608407
Change 3608491 by Rolando.Caloca
DR - hlsl - Fix crash when type was not found
Change 3608513 by Rolando.Caloca
DR - Default to real uniform buffers for Vulkan SM4 & SM5
Change 3608794 by Mark.Satterthwaite
Implement SV_DepthLessEqual (maybe right?) for Metal - seems to work in the ParallaxOcclusionMapping test map.
#jira UE-47614
Change 3608929 by Mark.Satterthwaite
Fix ambiguous expression compile error.
Change 3608991 by Mark.Satterthwaite
Fix a dumb bug when parsing the Metal compiler version that breaks Metal shader PCH generation on HFS+ volumes.
Change 3609090 by Uriel.Doyon
StaticMeshComponent and LandscapeComponent now register AO material mask and sky occlusion texture in the texture streamer.
Changing the current lighting scenario now triggers an update of the texture streamer, and a refresh of lighting data for instanced static meshes.
Added an option to the "liststreamingtextures" named UNKOWNREF allowing to inspect texture without references in the texture streamer.
BUILDMATERIALTEXTURESTREAMINGDATA now rebuild every shader in memory and mark for save those with different data.
MipBias now behaves the same way in shipping than in other builds.
Fixed texture resolution logic for editor tooltips and in game stats.
Change 3609659 by Richard.Wallis
Remove Eye Adaption Pixel Shader Workaround for macOS 10.11 (El Cap) Nividia.
#jira UE-48642
Change 3610552 by Mark.Satterthwaite
Optimise the constant-propagation pass in hlslcc by using a hash-table to reduce the cost of looking up the existing constant assignment instructions. The get_assignment_entry drops from 25% of runtime to 2.2% of runtime on a 4.2Ghz Quad i7 2017 iMac.
Change 3610662 by Rolando.Caloca
DR - hlsl - Fix for rwstructured buffer
Fix for floats printed as ints
Change 3610830 by Michael.Lentine
ByteAddressBuffer does not have a subtype.
Change 3610869 by Rolando.Caloca
DR - hlsl - Fix disambiguation between 1.r and 1.0.r
Change 3610982 by Mark.Satterthwaite
Use the correct code to dump Metal shader text for debugging at runtime.
Change 3610996 by Rolando.Caloca
DR - hlsl - Actual fix for 0.r
Change 3611312 by Rolando.Caloca
DR - Integrate: Improve performance of bokeh depth of field.
* Fewer instances with more work (higher quad count) per instance.
* Improves performance on RX 480 in the Infiltrator demo by 0.37 ms at 1080p and 0.50 ms at 1440p (average frame time over the beginning of the demo, including the hallway confrontation between the guard and the infiltrator, where heavy DOF is used).
* Similar optimizations may be possible for other systems that perform similar "instanced draws of quads" (e.g. virtual texture page table updates, lens blur, and velocity scatter).
Change 3611345 by Mark.Satterthwaite
Missed the hash-table destructor in previous change.
Change 3611372 by Rolando.Caloca
DR - vk - New barrier/layout api
Change 3611445 by Mark.Satterthwaite
Fix stupid bugs in MetalBackend's LoadRWBuffer helper function where the wrong type was being used - won't fix problems in the LinearTexture case though.
Change 3611686 by Mark.Satterthwaite
Remove the sampler from the Metal Linear Texture SRV path as for reasons so far unknown it doesn?╟╓t work with the light grid culling.
#jira UE-48881
Change 3611743 by Mark.Satterthwaite
Implement early depth test for Metal - it is implemented such that manual specification of the SV_Depth* outputs will elide the early_fragment_test qualifier as Metal does not permit both at present.
Change 3611746 by Mark.Satterthwaite
Use early fragment tests implicitly unless we perform a direct resource write or use discard - explicit depth writes always disable early fragment tests as Metal doesn?╟╓t allow both. This should better match D3D driver behaviour.
Change 3611756 by Mark.Satterthwaite
Missed a header file in last commit.
Change 3611836 by Mark.Satterthwaite
Fixed the use of Metal?╟╓s capture manager so that it doesn?╟╓t capture more frames than intended.
Change 3611843 by Mark.Satterthwaite
Tidy up the handling of when to increment the frame count for the Metal capture manager.
Change 3612279 by Michael.Lentine
Move FP16 Math to Public so that it can be included as part of platform which is where the other float/half defines happen.
Change 3612595 by Rolando.Caloca
DR - hlslcc - Rebuilt with CL 3611345
Change 3612665 by Rolando.Caloca
DR - Make cubemap mip barrier consistent with HZB mip barriers
Change 3612758 by Daniel.Wright
FColor usage comment
Change 3612980 by Rolando.Caloca
DR - hlsl - Do not overflow ints
Change 3613068 by Rolando.Caloca
DR - vk - Initial fix for transition validation warnings
Change 3613115 by Daniel.Wright
Volumetric lightmap voxels are now always cubes
Bricks outside of any Lightmass Importance Volume will never be refined
Change 3613124 by zachary.wilson
Enabling Eye-Adaptation in TM-ShaderModels.
Change 3613205 by Mark.Satterthwaite
Fully disable linear textures in Metal - they simply aren't performant. Instead we'll have to use helper functions to dynamically type-cast appropriately within the shader. This is currently only configured for a handful of UAV types and will need to be extended.
Change 3613208 by Mark.Satterthwaite
Add code to MetalBackend to promote half types to float for math operations to avoid compiler errors.
Change 3613354 by zachary.wilson
Fixing up the Bloom_FFT map. Renaming to fit qa conventions, updating content and improving workflow.
Change 3613409 by Rolando.Caloca
DR - vk - Layout as part of descriptor writes
Some access flag warning fixes
Change 3613518 by Daniel.Wright
Added 'Render Unbuilt Preview Shadows in game' rendering project setting and r.Shadow.UnbuiltPreviewInGame cvar
Change 3613610 by Daniel.Wright
Volumetric lightmap visualization sphere size is now a fraction of the corresponding brick world size
Change 3613651 by Daniel.Wright
[Copy] Fixed landscape in the Global Distance field on PS4. Multiple updates to a vertex buffer using BUF_Dynamic cause a race condition on PS4 with no assert.
Also added shrinking for GDistanceFieldUploadData which saved 15Mb.
Change 3613696 by Mark.Satterthwaite
Add the Metal SRV format for Index buffers so that they can be properly type-cast inside the shader. Fixes recompute tangents with latest changes.
Change 3613697 by Rolando.Caloca
DR - vk - Fix missing layout
Change 3613922 by Rolando.Caloca
DR - vk - Some fixes for layout/transitions
- Disable GSupportsDepthFetchDuringDepthTest on desktop as the deferred renderer is not copying the aux depth in the right spot and will be removed
Change 3614009 by Mark.Satterthwaite
TPS Approved: Integrating the MIT-licensed mtlpp C++ Metal wrapper from Nikolay Aleksiev which will slowly replace previous Metal API wrappers in MetalRHI.
Change 3614015 by Mark.Satterthwaite
Initial extensions to mtlpp:
- Fixed over retention of alloc-init'd objects.
- Added 10_13 & 11_0 availablity macros.
- Started, but have not yet finished adding new Metal API function wrappers.
Change 3614909 by Rolando.Caloca
DR - Fix static analysis
Change 3614916 by Michael.Lentine
Add function to convert FP32 to FP16
Change 3614957 by Mark.Satterthwaite
mtlpp declarations for macOS 10.13 & iOS 11 Metal features - no matching definitions yet.
Change 3614995 by Mark.Satterthwaite
Revert all changes to project config's from Rhino that should not have come back to Dev-Rendering, keeping only the solitary change to Metal shader standard necessary for ShowdownDemo.
Change 3615035 by Rolando.Caloca
DR - Generate mips using shader for HZB
Change 3615561 by Rolando.Caloca
DR - Fix deprecation warning
Change 3615787 by Mark.Satterthwaite
Only emit min. OS version specification into the Metal shader bytecode for macOS as we share shaders between iOS & tvOS and this option inhibts that.
#jira UE-48919
Change 3616317 by Mark.Satterthwaite
Make TonemapperConfBitmaskPC the proper size so we dn't attempt to access uninitialized memory.
Change 3616357 by Mark.Satterthwaite
And fix some compile errors...
Change 3616473 by Rolando.Caloca
DR - Render pass api minor changes
Change 3616518 by Mark.Satterthwaite
Fix a merge snafu where dead code was retained where it shouldn't be.
#jira UE-48472
Change 3616706 by Rolando.Caloca
DR - Vulkan fixes (integration from Vulkan working branch)
- Fix for editor outline
- Fix for profilegpu
Change 3616770 by Rolando.Caloca
DR - vk - Mark GIsGPUCrashed on device lost
Change 3616993 by Daniel.Wright
IndirectLightingCacheQuality respects VolumetricLightingMethod
Change 3616996 by Daniel.Wright
Volumetric Lightmap show flag is respected by Volumetric Fog
Change 3616999 by Daniel.Wright
Fixed ObjectRadius in Volume domain materials
Change 3617777 by Rolando.Caloca
DR - Fix static analysis warning
Change 3617863 by Guillaume.Abadie
PR #3875: Removed Duplicated "RHI" Module Dependency (Contributed by DavidNSilva)
#jira UE-48159
Change 3618133 by Rolando.Caloca
DR - vk - Set general layout for compute shader resources
- Assume transitions to writable imply end render pass
Change 3618292 by Michael.Lentine
Add support for Expressions, Jump Statments, and Structs.
Change 3618326 by Rolando.Caloca
DR - vk - Fix transition flags
Change 3618408 by Daniel.Wright
Lightmass skylight solver improvements
* Lightmass uses a filtered cubemap to represent the skylight instead of a 3rd order Spherical Harmonic. Directionality in shadowed areas is improved. Mip level is chosen based on the ray differential for anti-aliasing.
* Multiple skylight and emissive bounces are now supported with a radiosity solver, controlled by NumSkyLightingBounces in Lightmass WorldSettings. More bounces results in longer build times, and the radiosity time is not distributable.
* The mapping surface cache is now rasterized with supersampling, reduces incorrect darkness in corners
* Combined direct lighting, photon irradiance, skylight radiosity and diffuse in the mapping surface cache so final gather rays only have to do one memory fetch, speeds up lighting builds by 7%.
* Added support for Embree packet tracing although no solver algorithms use it yet
Change 3618413 by Daniel.Wright
Swarm hands out the most expensive tasks in roughly a round robin ordering among distribution agents. Lightmass processing of a single task is multithreaded, so ideally the most expensive tasks are evenly distributed among active agents. This has the biggest impact in small scenes with 10's of high resolution lightmaps, and with a distribution farm. Build time in one scene went from to 113s -> 47s.
Change 3618439 by Mark.Satterthwaite
Fix the assert in hlslcc when we have saturate(int) and the shader language spec. supports a native saturate intrinsic.
Change 3618468 by Rolando.Caloca
DR - vk - Fix copy to non render target surface
Change 3618696 by Daniel.Wright
Worked around Lightmass crash callstacks not getting reported back to the editor
Change 3618779 by Mark.Satterthwaite
mtlpp definitions for a few of the new calls & fixing the max. number of samplers it assumes.
Change 3618789 by Daniel.Wright
Added missing file
Change 3618816 by Daniel.Wright
Another missing file
Change 3618855 by Rolando.Caloca
DR - vk - Show user debug markers when using dump layers
- Remove old defines
Change 3618887 by Rolando.Caloca
DR - Fix for missing transition to readable for blur widget. Was causing corruption on Vulkan.
Change 3618999 by Mark.Satterthwaite
Definitions for Metal's new CaptureManager & CaptureScope classes.
Change 3619790 by Jian.Ru
Add some debug info
#jira UE-48710
Change 3619834 by Rolando.Caloca
DR - vk - static analysis fix
Change 3619952 by Rolando.Caloca
DR - vk - Static analysis not smart enough...
Change 3620191 by Jian.Ru
Revert 3584245 to prevent focus stealing
#jira UE-49044
Change 3620402 by Mark.Satterthwaite
Remaining Metal definitions for mtlpp.
Change 3620803 by Brian.Karis
Removed faceting bug I introduced to Dither Opacity Mask. Removes the attempt to make opacity stack properly.
Change 3620904 by Michael.Lentine
Change the order of static and const
Change 3620975 by Rolando.Caloca
DR - Updated Vulkan headers to SDK 1.0.57.0
Change 3621026 by Rolando.Caloca
DR - Remove unused type
- Force recompile with new Vulkan headers
Change 3621070 by Rolando.Caloca
DR - glslang - Fix pdb option
Change 3621157 by Arciel.Rekman
Added files to cross-build glslang on Windows.
(Edigrating //UE4/Main/...@3621127 to //UE4/Dev-Rendering/...)
Change 3621194 by Rolando.Caloca
DR - glslang - Update to 1.0.57.0
- Fix some tab/whitespace mismatch
Change 3621225 by Rolando.Caloca
DR - Revert glslang (Back out changelist 3621194)
Change 3621254 by Mark.Satterthwaite
Duplicate 3610656 and revert the incorrect merge from the Rhino task stream. Fixes EyeAdaptation on all clang platforms properly thanks to RCL.
Change 3621261 by Mark.Satterthwaite
Trivial FMetalStateCache optimisations - won't help much but equally they shouldn't hurt.
Change 3621262 by Mark.Satterthwaite
Correct the handling of MSAA target in Desktop Forward for iOS - now the problem is that iOS always creates an internal resolve target so which texture to bind depends on the shader parameter type. Not sure (yet) how best to solve that.
Change 3621263 by Mark.Satterthwaite
Don't mandate Mobile Metal for projects that have Metal MRT enabled.
Change 3621301 by Rolando.Caloca
DR - Unity build fix
Change 3621349 by Mark.Satterthwaite
Fix a bug in MetalBackend that was omitting the depth-output variable from the hlslcc signature if the semantic was SV_DepthLessEqual rather than SV_Depth.
Change 3621546 by Uriel.Doyon
Refactor of the texture 2D mip update logic to offload more work on the async thread.
#jira UE-45332
#jira UE-45789
Change 3622210 by Rolando.Caloca
DR - Do not store DDC data if static mesh failed to build
#jira UE-48358
Change 3622349 by Arciel.Rekman
Better build script for Linux glslang and a bugfix.
(Edigrating CL 3622235 from //UE4/Main/... to //UE4/Dev-Rendering/...)
Change 3622401 by Rolando.Caloca
DR - vk - Integration
- Support for r.Vulkan.ProfileCmdBuffers
Change 3622506 by Rolando.Caloca
DR - vk - Back out changelist 3622401
Change 3622521 by Mark.Satterthwaite
Support disabling V-Sync in MetalRHI on macOS 10.13+.
Change 3622910 by Rolando.Caloca
DR - static analysis fix
Change 3622964 by Mark.Satterthwaite
Fix generation of .metallib on local Macs and exclude .metallib files from the pak - they must always be loaded from disk.
#jira UE-48193
Change 3622986 by Mark.Satterthwaite
A couple more trivial optimisations to MetalRHI for iOS:
- Metal page size is 4k but only buffers under 512 bytes should go through set*Bytes on iOS to balance CPU cost.
- On iOS the minimum buffer size should therefore be 1k and on Mac 4k as nothing else makes much sense.
- No need to rebind uniform buffers if to the same slot - it just wastes cycles.
Change 3623266 by Rolando.Caloca
DR - Fix GL4 rendering
#jira UE-49187
Change 3623377 by Daniel.Wright
Volume materials applied to static meshes operate on the object's bounding sphere
Change 3623427 by Mark.Satterthwaite
Fix MetalViewport compile errors on Xode 8.3.
#jira UE-49231
Change 3623443 by Daniel.Wright
Fixed out of bounds crash in lightmass
Change 3623751 by Daniel.Wright
Volume materials on static meshes now voxelize the mesh's Object space bounding box
Change 3625142 by Guillaume.Abadie
PR #2992: Fixing aspect ratio issue of SceneCapture2D rendering in "Ortho" camera mode (Contributed by monsieurgustav)
Change 3625983 by Jian.Ru
Fix a LPV race condtion due to parallel RSM draw-call submission
#jira UE-48247
Change 3626015 by Jian.Ru
Small fix to 3625983
Change 3626294 by Michael.Trepka
Copy of CL 3535792 and 3576637
Added support for changing monitor's display mode on Mac in fullscreen mode. This greatly improves performance on Retina screens when playing in resolutions lower than native.
Fixed a problem with incorrect viewport size being set in windowed fullscreen in some cases. Also, slightly improved screen fades for fullscreen mode transitions on Mac.
#jira UE-48018
Change 3626532 by Marcus.Wassmer
Fix divide by 0 crash when GPU timing frequency not available for whatever reason.
Change 3626548 by Ryan.Brucks
KismetRenderingLibrary: Added EditorOnly function for creating static textures from Render Targets. Has options for Mip and Compression Settings
Change 3626874 by Mark.Satterthwaite
Fix Metal 2.0 compilation.
Change 3626997 by Rolando.Caloca
DR - vk - cis fix
- Initial RGBA16 readback
Change 3627016 by Mark.Satterthwaite
Workaround more of Metal's unfortunate tendency to re-associate float mul/add/sub operations - this time from Metal's own standard-library.
Change 3627040 by Brian.Karis
Removed old rasterized deferred reflection env path.
Removed reflection compute shader. Replaced with PS. Small perf gain.
Change 3627055 by Mark.Satterthwaite
No MSAA support on Intel Metal or iOS Desktop Forward for the moment as neitehr work and I don't want to have lots of crashes out in the wild until we have a solution.
Change 3627057 by Mark.Satterthwaite
Make SCW's directcompile not fall over with Metal when there are compilation errors.
Change 3627083 by Mark.Satterthwaite
Invalidate Metal shaders so QA testing picks up the most recent changes.
Change 3627788 by Chris.Bunner
[Duplicate, CL 3627751] - VisibleExpressions static switch value evaluation needs to handle reroute nodes rather than only verify first expression.
Change 3627834 by Rolando.Caloca
DR - cis fix
Change 3627847 by Rolando.Caloca
DR - 4th try to fix static analysis
Change 3627877 by Guillaume.Abadie
Works arround a HLSLCC bug in a SimpleComposure project's material where x != x does not work for an unknown reason yet.
#jira UE-48063
Change 3628035 by Marcus.Wassmer
Duplicate 3620990
Smarter scenecapture allocation behavior.
Change 3628204 by Daniel.Wright
Fixed denormalization scale on one of the 2nd SH band of volumetric lightmaps
Change 3628217 by Mark.Satterthwaite
Fix InfiltratorForward project defaults so that iOS will package.
Change 3628515 by Arne.Schober
DR - [UE-49213] - Fix case where HZB was not generated for SSR and SSAO when Occlusion culling was disabled.
#RB Marcus.Wassmer
Change 3628550 by Chris.Bunner
Merge fixes.
Change 3628597 by Chris.Bunner
Merge fixes.
Change 3628656 by Michael.Trepka
One more workaround for a bug in StandardPlatformString.cpp. It doesn't handle %lf format correctly, parsing it as long double instead of ignoring the 'l' format sub-specifier.
Change 3628685 by Daniel.Wright
CPU interpolation of Volumetric Lightmaps for the mobile renderer. They use a scene cache based on interpolation position, since the precomputed lighting buffer for movable objects is recreated every frame.
Change 3629094 by Ryan.Brucks
Fixes to RenderTargetCreateStaticTexture2DEditorOnly with additional error checks
#RB none
Change 3629223 by Rolando.Caloca
DR - Rollback //UE4/Dev-Rendering/Engine/Source/Runtime/VulkanRHI to changelist 3627847
Change 3629491 by Rolando.Caloca
DR - Revert back to emulated uniform buffers on SM4/SM5
Change 3629663 by Daniel.Wright
Fixed NaN when capsule shadow direction is derived from volumetric lightmap with completely black lighting
Change 3629664 by Daniel.Wright
Don't render dynamic indirect occlusion from mesh distance fields when operating on a movable skylight, since DFAO fills that role
Change 3629708 by Rolando.Caloca
DR - vk - Redo some changes from DevMobile
3601439
3604186
3606672
3617383
3617474
3617483
Change 3629770 by Mark.Satterthwaite
Fix a mobile Metal shader compilation error when using the FMA workaround for "cross" which should only be applied if the min. Metal version is 1.2 (as FMA is not known to work prior to this).
Change 3629793 by Daniel.Wright
Fixed VolumetricLightmapDetailCellSize not being respected in small levels, causing too much volumetric lightmap density and memory
Change 3629859 by Mark.Satterthwaite
macOS 10.12 also had problems with MSAA in forward rendering - so only permit it to work on macOS 10.13 and above.
Change 3630790 by Mark.Satterthwaite
Move RHISupportsMSAA so that the Metal related complications for when it is viable can be hidden within.
Change 3630990 by Rolando.Caloca
DR - vk - Redid CL 3617437 (optimize number of Buffer Views, eg 165 to 58)
Change 3631071 by Mark.Satterthwaite
Fix a small gotcha in a change from Dev-Mobile: for MetalRHI we need to explicitly configure the ShaderCacheContext for the immediate/device context after initialising the shader-cache.
#jira UE-49431
Change 3631076 by Rolando.Caloca
DR - vk - Redo 3617574, reduce number of render pass objects created
Change 3631250 by Mark.Satterthwaite
Make another Metal warning a Verbose log instead as it isn't interesting unless you are me.
Change 3631911 by Chris.Bunner
Back out changelist 3628035.
#jira UE-49364, UE-49365
Change 3632041 by Mark.Satterthwaite
Fix cloth rendering on Metal - some of the data in FClothVertex is uint but we load it from a float buffer. This could be due to a bug in Metal's as_type<uint4>() or it could be that Xcode 9's compiler is now finally enforcing Metal's official flush-to-zero-on-load semantics for denorms - it isn't immediately obvious.
#jira UE-49439
Change 3632261 by Brian.Karis
SM4 fallback for reflection captures.
Change 3632281 by Mark.Satterthwaite
Fix an intermittent assert on startup when the AVFoundation movie player gets the QAGame TM-ShaderModels video ready to play prior to the rendering thread being back online when resizing the window. This is done by deferring the processing of AVFoundation events to the game-thread where it won't cause a threading violation.
Change 3632382 by Rolando.Caloca
DR - vk - Fix clang warning
Change 3633338 by Chris.Bunner
Static analysis/Linux compile fix.
#jira UE-49502
Change 3633616 by Jian.Ru
Force alpha to 0xff for functional UI screenshot tests
#jira UE-48266
Change 3633818 by Daniel.Wright
Better indirection texture clamping and asserts
Change 3634319 by Mark.Satterthwaite
Stop FVolumetricLightmapDataLayer ::Discard which is invoked by the Editor RHI during texture-upload from chucking the backing data when in the Editor - because if we do that then cooking will serialise an empty array. This was only apparent on Mac because Metal always invokes Discard on BulkDataInterfaces and D3D11 never does.
#jira UE-49381
Change 3634613 by Rolando.Caloca
DR - Call discard on bulk data for textures
#jira UE-49533
Change 3634654 by Mark.Satterthwaite
Fixes for broken iOS builds:
- Fix RHIGetShaderLanguageVersion returning the wrong version for iOS Metal if the Mac version had already been queried - this has been wrong for a long while.
- Remove the precise:: qualifier for Metal's fma intrinsic - it isn't necessary and breaks on older OSes.
#jira UE-49381
Change 3634820 by Mark.Satterthwaite
Change the hash-function for the preprocessed HLSL source in FMetalShaderOutputCooker to reduce risk of hash-collisions. Fixes one cause of UE-49381 and reveals an underlying driver bug on iOS 9 with runtime-compiled text shaders *only*.
#jira UE-49381
Change 3634821 by Mark.Satterthwaite
Force Metal shaders only to recompile by incrementing the format version.
[CL 3635058 by Chris Bunner in Main branch]
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3121996 on 2016/09/12 by Ben.Marsh
Add support for Visual Studio 2017 (aka "15"; assuming consistent naming with other versions until final name is announced).
* Compiler, STL implementation and CRT are binary compatible with VS2015 (see https://blogs.msdn.microsoft.com/vcblog/2016/08/24/c1417-features-and-stl-fixes-in-vs-15-preview-4/), so no new third-party libraries needed so far. WindowsPlatform.GetVisualStudioCompilerVersionName() returns "2015" as a result.
* Default compiler for compiling and generating project files is still VS 2015 for now. Pass -2017 on the command line to GenerateProjectFiles.bat to generate VS2017 projects. Projects generated for VS2017 will use the 2017 compiler by default.
* Visual Studio source code accessor can talk to VS 2017 instances.
* Added a VS2017 configuration for UnrealVS, and added precompiled vsix package.
* Switched GetVSComnTools to check the SOFTWARE\Microsoft\VisualStudio\SxS\VS7 registry key rather than the individual product install registry key. "15" doesn't seem to have it's own "InstallDir" key, but this system seems to work for all versions of Visual Studio (including previous releases of VS Express).
* Removed ATL dependency from VisualStudioSourceCodeAccessor. It's not installed with VS by default any more, and is only used for a couple of smart pointer classes.
Tested running the editor and packaging TP_Flying for Win64. Packaging from the editor still defaults to using the 2015 compiler, so ConfigureToolchain() needs to be overriden from the .target.cs file if multiple Visual Studio versions are installed.
Change 3189363 on 2016/11/07 by Ben.Marsh
Consolidate functionality for determining the path to MSBuild.exe to use for compiling UE4 tools into a single batch file (GetMSBuildToolPath) and fix "Clean" not working on PS4 due to include/library paths being set to something by the Visual Studio environment.
Change 3210598 on 2016/11/27 by Ben.Marsh
UBT: Prevent the name of each file compiled being output twice on XboxOne. Compiler already outputs this string; the action doesn't need to.
Change 3210601 on 2016/11/27 by Ben.Marsh
PR #2967: Add silent version of switch game version (Contributed by EricLeeFriedman)
Change 3210602 on 2016/11/27 by Ben.Marsh
PR #2964: GitDependencies shouldn't try to clean up working directory files that are excluded or ignored (Contributed by joelmcginnis)
Change 3210605 on 2016/11/27 by Ben.Marsh
UGS: Add a warning when syncing latest would remove changes that have been authored locally. Typically happens when working with precompiled binaries.
Change 3211656 on 2016/11/28 by Ben.Marsh
UBT: Move ModuleRules and TargetRules into their own file.
Change 3211797 on 2016/11/28 by Ben.Marsh
UBT: Remove utility functions from TargetRules for checking different classes of target types. Moving TargetRules to be data-only.
Change 3211833 on 2016/11/28 by Ben.Marsh
UBT: Remove overridable configuration name from target rules. This feature is not used anywhere.
Change 3211859 on 2016/11/28 by Ben.Marsh
UBT: Deprecate the GetGeneratedCodeVersion() callback in favor of a member variable instead.
Change 3211942 on 2016/11/28 by Ben.Marsh
UBT: Remove legacy code which tries to change the output paths for console binaries. Output paths for monolithic binaries are always in the project folder now.
Change 3215333 on 2016/11/30 by Ben.Marsh
UBT: Replace the GetSupportedPlatforms() callback on TargetRules with a SupportedPlatforms attribute. Since a TargetRules object can only be instantiated with an actual platform, it doesn't make sense for it to be an instance method.
Change 3215482 on 2016/11/30 by Ben.Marsh
UBT: Remove the GetSupportedConfigurations() callback on the TargetRules class. A configuration is required to construct a TargetRules instance, so it doesn't make sense to need to call an instance method to find out which configurations are supported.
Change 3215743 on 2016/11/30 by Ben.Marsh
UBT: Deprecate the TargetRules.ShouldCompileMonolithic() function: this function requires access to the global command line to operate correctly, which prevents creating target-specific instances, and does not use the platform/configuration passed into the TargetRules constructor.
Rather than being a callback, the LinkType field can now be set to TargetLinkType.Modular or TargetLinkType.Monolithic from the constructor as appropriate. The default value (TargetLinkType.Default) results in the default link type for the target type being used. Parsing of the command-line overrides is now done when building the TargetDescriptor.
Change 3215778 on 2016/11/30 by Ben.Marsh
UBT: Mark overrides of the TargetRules.GetModulesToPrecompile method as obsolete.
Change 3217681 on 2016/12/01 by Ben.Marsh
UAT: Prevent UE4Build deleting .modules files when running with the -Clean argument; these files are artifacts generated by UBT itself, not by the exported XGE script.
Change 3217723 on 2016/12/01 by Ben.Marsh
UBT: Run pre- and post-build steps for all plugins that are being built, not just those that are enabled.
Change 3217930 on 2016/12/01 by Ben.Marsh
UGS: Add a perforce settings window, allowing users to set optional values for tuning Perforce performance on unreliable connections.
Change 3218762 on 2016/12/02 by Ben.Marsh
Enable warnings whenever an undefined macro is used in a constant expression inside an #if or #elif directive, and fix existing violations.
Change 3219161 on 2016/12/02 by Ben.Marsh
Core: Use the directory containing the current module to derive the UE4 base directory, rather than the executable directory. Allows UE4 to be hosted by a process in a different directory.
Change 3219197 on 2016/12/02 by Ben.Marsh
Core: When loading a DLL from disk, convert any relative paths to absolute before calling LoadLibrary. The OS resolves these paths relative to the directory containing the process executable -- not the working directory -- so paths need to be absolute to allow UE4 to be hosted by a process elsewhere.
Change 3219209 on 2016/12/02 by Ben.Marsh
Replace some calls to LoadLibrary() with FPlatformProcess::GetDllHandle(). The UE4 function makes sure that relative paths are resolved relative to the correct base directory, which is important when the host executable is not in Engine/Binaries/Win64.
Change 3219610 on 2016/12/02 by Ben.Marsh
Add the -q (quiet) option to the Mac unzip command, since it's creating too much log output to be useful.
Change 3219731 on 2016/12/02 by Ben.Marsh
UBT: Add option to disable IWYU checks regarding the use of monolithic headers (Engine.h, UnrealEd.h, etc...) and including the matching header for a cpp file first. bEnforceIWYU can be set to false in UEBuildConfiguration or on a per-module basis in the module rules.
Change 3220796 on 2016/12/04 by Ben.Marsh
Remove PrepForUATPackageOrDeploy from the UEBuildDeploy base class. It never has to be accessed through the base class anyway.
Change 3220825 on 2016/12/04 by Ben.Marsh
UBT: Change all executors to derive from a common base class (ActionExecutor).
Change 3220834 on 2016/12/04 by Ben.Marsh
UBT: Remove the global CommandLineContains() function.
Change 3222706 on 2016/12/05 by Ben.Marsh
Merging CL 3221949 from //UE4/Release-4.14: Fixes to code analysis template causing problems with stock install of VS2017.
Change 3222712 on 2016/12/05 by Ben.Marsh
Merging CL 3222021 from //UE4/Release-4.14: Change detection of MSBuild.exe path to match GetMSBuildPath.bat
Change 3223628 on 2016/12/06 by Ben.Marsh
Merging CL 3223369 from 4.14 branch: Use the same logic as GetMsBuildPath.bat inside FDesktopPlatformBase to determine path to MSBuild.exe
Change 3223817 on 2016/12/06 by Ben.Marsh
Remove non-ANSI characters from source files. Compiler/P4 support is patchy for this, and we want to avoid failing prey to different codepages resulting in different interpretations of the source text.
Change 3224046 on 2016/12/06 by Ben.Marsh
Remove the need for the iOS/TVOS deployment instances to have an IOSPlatformContext instance. The only dependency between the two -- a call to GetRequiredCapabilities() -- is now implemented by querying the INI file for the supported architectures when neeeded.
Change 3224792 on 2016/12/07 by Ben.Marsh
UBT: Touch PCH wrapper files whenever the file they include is newer rather than writing the timestamp for the included file into it as a comment. Allows use of ccache and similar tools.
Change 3225212 on 2016/12/07 by Ben.Marsh
UBT: Move settings required for deployment into the UEBuildDeployTarget class, allowing them to be serialized to and from a file the intermediate directory without having to construct a phony UEBuildTarget to deploy.
Deployment is now performed by a method on UEBuildPlatform, rather than having to create a UEBuildPlatformContext and using that to create a UEBuildDeploy object.
The -prepfordeploy UBT invocation from UAT, previously done by the per-platform PostBuildTarget() callback when building with XGE, is replaced by running UBT with a path to the serialized UEBuildDeployTarget object, and can be done in a platform agnostic manner.
Change 3226310 on 2016/12/07 by Ben.Marsh
PR #3015: Fixes wrong VSC++ flags being passed for .c files (Contributed by badlogic)
Change 3228273 on 2016/12/08 by Ben.Marsh
Update copyright notices for QAGame.
Change 3229166 on 2016/12/09 by Ben.Marsh
UBT: Rewritten config file parser. No longer requires hard-coded list of sections to be parsed, but parses them on demand. Measured 2x faster read speeds (largely due to eliminating construction of temporary string objects when parsing each line, to trim whitespace and so on). Also includes an attribute-driven parser, which allows reading named config values for marked up fields in an object.
Change 3230601 on 2016/12/12 by Ben.Marsh
Swarm: Change Swarm AgentInterface to target .NET framework 4.5, to remove dependency on having 4.0 framework installed.
Change 3230737 on 2016/12/12 by Ben.Marsh
UAT: Stop UE4Build deriving from CommandUtils. Confusing pattern, and causes problems trying to access instance variables that are only set for build commands.
Change 3230751 on 2016/12/12 by Ben.Marsh
UAT: Move ParseParam*() functions which use the instanced parameter list from CommandUtils to BuildCommand, since that's the only thing that it's instanced for.
Change 3230804 on 2016/12/12 by Ben.Marsh
UBT: Add the IsPromotedBuild flag to Build.version, and only set the bFormalBuild flag in UBT if it's set. This allows UGS users to avoid having to compile separate RC files for each output binary.
Change 3230831 on 2016/12/12 by Ben.Marsh
UGS: Warn when trying to switch streams if files are checked out.
Change 3231281 on 2016/12/12 by Chad.Garyet
Fixing a bug where .modules files were getting put into receipts with their absolute path instead of their relative one
Change 3231496 on 2016/12/12 by Ben.Marsh
Disable code analysis in CrashReportProcess; causes warnings when compiled with VS2015.
Change 3231979 on 2016/12/12 by Ben.Marsh
UBT: Suppress LNK4221 when generating import libraries. This can happen often when generating import libraries separately to linking.
Change 3232619 on 2016/12/13 by Ben.Marsh
Fix "#pragma once in main file" errors on Mac, which are occurring in //UE4/Main.
[CL 3232653 by Ben Marsh in Main branch]