#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]
- Fixed eye adaptation to respect override cvar.
- Fixed case where AEM_Max could be returned from GetEyeAdaptationMode.
#jira none
#rb zabir.hoque
[CL 7954533 by zach bethel in Dev-Rendering branch]
Added an "Exposure Compensation Curve" to the post process settings that add a bias based on the scene luminance in EV100.
Enabled the extended range settings for new projects.
#jira UE-69358
guillaume.abadie, brian.karis
#rb none
#ROBOMERGE-SOURCE: CL 5238694 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)
[CL 5238695 by uriel doyon in Main branch]
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3870267 by Arne.Schober
DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources)
Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary
Change 3872507 by Arne.Schober
Back out changelist 3870267
Change 3988916 by Marcin.Undak
Quail/Linux compilation fix #rb none #codereview arciel.rekman
Change 4042277 by Rolando.Caloca
DR - Clear UBs between PSOs on D3D to help track down not setting resources
Change 4042297 by Arne.Schober
DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass)
#jira UE-42135
Change 4042404 by Jian.Ru
Fix a race condition when RT is disabled and then re-enabled
#jira
Change 4042437 by Richard.Wallis
Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's.
Note:
New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding.
Update:
Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates.
#jira UE-49526
Change 4042602 by Guillaume.Abadie
Adds support for alpha channel in DOF.
Change 4042603 by Guillaume.Abadie
Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them.
Change 4042671 by Guillaume.Abadie
Massages DOF's shader code for HLSLCC.
Change 4042772 by Mark.Satterthwaite
Expose the MTLComputePipelineState's label string.
Change 4043013 by Juan.Canada
Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues.
#jira UE-49290
Change 4043171 by Rolando.Caloca
DR - Workaround crash on hlslcc
Change 4043182 by Uriel.Doyon
Fixed skylight issues when using pre-exposure.
Improved IndirectIrradiance gbuffer encoding when using pre-exposure.
Change 4043452 by Mark.Satterthwaite
Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive.
Change 4044732 by Richard.Wallis
Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method.
#jira UE-57549
Change 4044741 by Guillaume.Abadie
Fixes a couple of regressions in DOF when using temporal upsampling.
Change 4044753 by Guillaume.Abadie
Fixes a bug in WaveBroadcastIntrinsics.ush
Change 4045010 by Guillaume.Abadie
Creates TM-DepthOfField in QAGame to test DOF.
Change 4045417 by Jian.Ru
Prevent recursive flush
#jira
Change 4045923 by Mark.Satterthwaite
Further insulate private plugin usage within MetalRHI.
Change 4046006 by Mark.Satterthwaite
Simplify dependency on the private module and hope it now builds properly.
Change 4046612 by Mark.Satterthwaite
Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work.
#jira UE-55234
Change 4047504 by Mark.Satterthwaite
Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms.
Change 4048765 by Uriel.Doyon
Fixed compilation issue from CL 4048308
Change 4048776 by Guillaume.Abadie
Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF.
Change 4049059 by Mark.Satterthwaite
Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore.
Change 4050290 by Mark.Satterthwaite
Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit.
Change 4050822 by Mark.Satterthwaite
Partial custom counter support - still has bugs.
Change 4051210 by Guillaume.Abadie
Dumps PermutationID of shader when shader compile worker crashes.
Change 4051652 by Guillaume.Abadie
Optimises DOF's reduce with wave broadcast instrinsics.
Change 4051839 by Mark.Satterthwaite
Tiny fix to changing custom counters.
Change 4052553 by Guillaume.Abadie
Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass.
Change 4052611 by Guillaume.Abadie
Fixes a crashes in light shaft.
Change 4052916 by Mark.Satterthwaite
Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window.
Change 4053111 by Rolando.Caloca
DR - hlslcc - RequiresNegateDDY()
Change 4053402 by Mark.Satterthwaite
Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement.
Change 4053454 by Mark.Satterthwaite
More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error.
Change 4053765 by Guillaume.Abadie
Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change.
Change 4053911 by Marcus.Wassmer
Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering)
Change 4053915 by Marcus.Wassmer
Attempt to fix what looks like some unity build rearrangement issue.
Change 4053916 by Marcus.Wassmer
Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL
Change 4054642 by Rolando.Caloca
DR - Fix SCW not showing correct callstack/exception info on crashes
Change 4054661 by Mark.Satterthwaite
Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors.
#jira UE-58670
Change 4054780 by Guillaume.Abadie
Cuts number of shader permutation for DOF's gather pass from 138 to 41.
Change 4054950 by Rolando.Caloca
DR - vk - Fix negated ddy
Change 4055019 by Guillaume.Abadie
Cuts number of shader permutation for tonemapper from ~2k to 64.
Change 4055144 by Guillaume.Abadie
Adds an ensure to catch when there is too many permutations on a global shader.
Change 4055240 by Krzysztof.Narkowicz
Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer.
#jira FORT-79981
Change 4055323 by Rolando.Caloca
DR - Fix GLSL-based platforms
Change 4055387 by Guillaume.Abadie
Adds a point mirror between foreground and background bokeh to be phisically accurate.
Change 4055403 by Rolando.Caloca
DR - Fix uninitialized var causing crash
Change 4055709 by Guillaume.Abadie
Fixes a crash in SunTemple.
Change 4055771 by Guillaume.Abadie
Fixes DOF's reduce pass being compiled for SM4.
#jira UE-58714
Change 4055876 by Rolando.Caloca
DR - hlslcc - Fix crash during loop analysis on empty if() blocks
Change 4056026 by Rolando.Caloca
DR - Enable volumetric fog on Vulkan
Change 4056272 by Guillaume.Abadie
Exposes new DOF settings in post process settings.
Change 4056460 by Brian.Karis
Fix uniform buffer assert.
Change 4057151 by Guillaume.Abadie
Fixes a bug in DOF's temporal stability gathering pass.
Change 4057220 by Guillaume.Abadie
Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo.
AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer.
#jira UE-53997
Change 4057587 by Rolando.Caloca
DR - Enable Diaphgram DOF on Vulkan
Change 4058022 by Guillaume.Abadie
Exposes new DOF settings to UCineCameraComponent
Change 4058136 by Guillaume.Abadie
Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback.
Change 4058338 by Jostin.Bilyeu
Checking in new map for verifying Mobile rendering features in conjunction with TAAU
Change 4058352 by Matt.Collins
Wrapped NSString for lambda capture.
Change 4058500 by Rolando.Caloca
DR - Fix bad normals & tangents on GL mobile
#jira UE-57769
Change 4058723 by Rolando.Caloca
DR - vk - Split device pipeline cache off generic cache file
Change 4058782 by Mark.Satterthwaite
Rebuild Mac hlslcc for 4055876
Change 4058791 by Mark.Satterthwaite
Force MetalBackend to pick up new hlslcc.
Change 4058840 by Guillaume.Abadie
Fixes a bug in DOF's scalability setting groups
Change 4058928 by Daniel.Wright
Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array
Change 4059141 by Marcus.Wassmer
PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster)
Change 4059227 by Brian.Karis
Fix for simple forward
Change 4059269 by Marcus.Wassmer
Update test screenshots to account for minroughness changes from devrectlight
Change 4059478 by Mark.Satterthwaite
It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable.
#jira UE-58773
Change 4059870 by Guillaume.Abadie
Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)).
#jira UE-58850
Change 4060324 by Rolando.Caloca
DR - Very minor render pass
Change 4060328 by Rolando.Caloca
DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0
Change 4060461 by Jostin.Bilyeu
Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU
Change 4060698 by Marcus.Wassmer
Merging xbox compile fix
Change 4060930 by Marcus.Wassmer
Fix android compile
Change 4060971 by Mark.Satterthwaite
Some missing #defines to guard functions that require an external plugin.
#jira UE-58910
Change 4061104 by Guillaume.Abadie
Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014.
#jira UE-58900
Change 4061364 by Jostin.Bilyeu
updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc.
Change 4061743 by Mark.Satterthwaite
Fix another build error for iOS.
#jira UE-58827
Change 4061753 by Arne.Schober
DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache
#jira UE-58525
Change 4062236 by Mark.Satterthwaite
AppleTV doesn't appear to support the set*Bytes APIs in Metal.
#jira UE-58580
Change 4062320 by Guillaume.Abadie
Enables bokeh simulation on scattered bokeh on Epic post process settings.
Change 4062402 by Guillaume.Abadie
Phiscally animates the rotation of the bokeh as aperture changes.
Change 4062587 by Mark.Satterthwaite
Fix another Ocean compile error.
#jira N/A
Change 4062811 by Marcus.Wassmer
Only do newton iterations for area lights
Fixes a host of AMD-only bugs
Change 4063174 by Marcus.Wassmer
Workaround shipping build compile error for all clang platforms.
Change 4063760 by Guillaume.Abadie
Changes the default number of diaphragm blades to 7.
Change 4063992 by Marcus.Wassmer
Fix DX12 crash when depthboundstest not available.
Change 4064233 by Rolando.Caloca
DR - Proper fix for GL changes related to tangents
#jira UE-58948
Change 4064323 by Uriel.Doyon
Increase the max number of uavs to 16
#jira 58898
Change 4064428 by Guillaume.Abadie
Fixes a crashes on XB1 when doing async SSAO.
Change 4064525 by Uriel.Doyon
Better logic for depth bound support in d3d12.
#jira 58956
Change 4064694 by Jian.Ru
Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables
Change 4064873 by Guillaume.Abadie
Fixes wrong resource transitions in DOF's reduce passes.
Change 4064956 by Guillaume.Abadie
Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs.
Change 4065215 by Arne.Schober
DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied."
In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated.
Change 4065312 by Guillaume.Abadie
Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect()
Change 4070361 by Guillaume.Abadie
Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy.
Change 4070778 by Marcus.Wassmer
Fix bad merge
Change 4071337 by Rolando.Caloca
DR - vk - Do not spam log
Change 4048308 by Uriel.Doyon
Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 :
- Fixed d3derror when resizing the window in multi-gpu.
- Fixed d3d12 checks when exiting in multi-gpu.
- Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere.
- RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding.
- Removed of IRHIComputeContext::GetContextForGPUMask().
- Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase.
- FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one.
- Command lists now have a GPU mask set at creation time.
- Support for immediate command list GPU mask.
- Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack.
- Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask".
- Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU="
- Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr }
- Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine.
- Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering.
[CL 4072858 by Marcus Wassmer in Main branch]
#lockdown Nick.Penwarden
#rb none
============================
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 3629223 by Rolando.Caloca
DR - Rollback //UE4/Dev-Rendering/Engine/Source/Runtime/VulkanRHI to changelist 3627847
Change 3629708 by Rolando.Caloca
DR - vk - Redo some changes from DevMobile
3601439
3604186
3606672
3617383
3617474
3617483
Change 3636145 by Chris.Bunner
Linux compile fix.
Change 3636198 by Chris.Bunner
Include fix.
Change 3636225 by Daniel.Wright
Removed spammy draw event
Change 3636397 by Daniel.Wright
Visualize volumetric lightmaps uses 18% grey in lit mode
Change 3636398 by Daniel.Wright
Translucency lighting modes work with Volumetric Lightmaps
* The old Indirect Lighting Cache always interpolated one sample per object, while Volumetric lightmaps operate at the frequency of the Translucency Lighting Mode (per-vertex or per-pixel) so the lighting accuracy is much higher.
* The old ILC always applied the single lighting sample with a per-pixel normal, even in per-vertex lighting modes
* Volumetric PerVertex NonDirectional (cheapest lit translucency) went from 74 instructions down to 42
* Volumetric Directional went from 104 up to 122
Change 3636604 by Chris.Bunner
Added a material translation error on identically named/associated but differently valued parameters as this will cause one of them to be lost during parameter evaluation, the result being "random".
Change 3637668 by Rolando.Caloca
DR - hlslcc - Skip preprocessor when not required which reduces peak mem consumption by ~500 MB
- Fix missing indexing on intrinsic return type
Change 3638541 by Chris.Bunner
Fixed editor materials - Skip hardcoded parameter names that we rely on being overridden when checking for non-matching duplicate parameters.
Change 3638798 by Mark.Satterthwaite
Rebuilt hlslcc for Mac for Rolando's 3637668 changes.
Change 3638861 by Mark.Satterthwaite
Missed making a log verbose in the Metal ring-buffer.
Change 3639482 by Rolando.Caloca
DR - vk - Minor fixes
Change 3639909 by Michael.Lentine
Add special case for struct needed to compile.
Workaround issues in parser such that (x)[0] is replaced with x[0] and (x).a is replaced with x.a.
Change 3639916 by Michael.Lentine
Spelling fix.
Change 3640053 by Mark.Satterthwaite
Fix Desktop Forward rendering on Nvidia Metal rendering on macOS by modifying the shader and runtime to treat ForwardLocalLightBuffer data as uint rather than float and invert the use of as*() casts.
Tthis is *necessary* to avoid a bug/limitation of Nvidia's current Metal shader compiler that flushes all denorm values to zero on load from any resource. AMD & iOS Metal only flush-to-zero when sampling from textures and that's what Apple regard as the expected behaviour. I have however asked them to standardise on the D3D behaviour of preserving denorms on all load, move (incl. min/max/as*()-casts) & store operations. This won't happen in the current or imminent OS/Xcode releases.
Now only Intel Metal is broken and their problems run deeper.
#jira UE-48881
Change 3640983 by Olaf.Piesche
Cache the depth buffer collision shader for GPU particles even when simple forward is enabled, as that can be turned off at runtime.
#jira UE-48799
Change 3641480 by Michael.Lentine
Add min16float to FP16Math
Change 3642442 by Mark.Satterthwaite
Fix the native shader libraries again & undo the increase in cook time from changes to the way FShaderCodeLibrary was compiling & deduplicating the shaders.
- Remvoe the single linear array for accumulated shader code: reallocating this is tremendously expensive and will double the time taken to iteratively cook large projects.
- Uncompress the shader data for the native library system so that it actually works again.
- Fix some errant change to the Metal compiler that was trying to wedge the fully compiled library into the single Metal library which is 100% bogus.
#jira UE-49192
Change 3642919 by Chris.Bunner
Reverted unintended changes to material static parameter set serialization.
Bumped material version to force re-serialization.
Fixed a few typos.
Change 3642923 by Richard.Wallis
Fix for "Pixel Inspector On" message not disappearing when closing pixel inspector window while on. Handle tab closed events to cancel the pixel inspector if window closed while running.
#jira UE-46504
Change 3643296 by Michael.Lentine
Convert all structures that aren't use globally to halfs.
Change 3643381 by Ryan.Brucks
New Plugin allowing Blueprint Texture and RT reads as well as MIC creation and modification.
Change 3643929 by Ben.Salem
Added better precision on thread values in Perf Monitor. Also added global thread values to go with per-world ones to help track down the most accurate numbers possible.
#tests Ran locally, changes validated by benj
Change 3644203 by Mark.Satterthwaite
Refactor mtlpp a little bit to make the compiler do more of the work & update for all the latest publicly exposed APIs.
Change 3644336 by Mark.Satterthwaite
Ref-count the mtlpp Device object so that it can be the repository for IMP caching - now just have to go through the types created from a specific device and have them keep a reference....
Change 3644431 by Uriel.Doyon
Added a intensity units property, for point lights and spot lights, that can be set to Candelas, Lumens or Unitless (legacy).
The default units value for newly placed point lights and spot lights is configured in the project settings.
Spot lights configured in lumens have their whole luminous energy redirected toward the cone.
This means that changing the outer cone angle, changes the spot light brightness.
New exposure menu that uses an EV100 slider.
New post process settings "camera" tab regrouping : ShutterSpeed, ISO, Aperture and ExposureCompensation.
Post process settings "auto exposure" tab renamed "exposure".
The calibration constant for "Auto Exposure Basic" is now configurable in the advanced tab.
The auto exposure method is renamed "Metering Mode"
New pre-exposure feature that allows the engine to apply the previous frame exposure before writing to the scene color.
This allows the engine to render the scene with similar range than the final color (after exposure), and avoid arithmetic overflow for low precision RT formats.
The amount of exposure applied directly is called pre-exposure, and is compensated by a smaller post-exposure value.
Change 3645098 by Marcus.Wassmer
Don't add meshes twice when in simpleforward
Change 3645551 by Daniel.Wright
VolumetricScatteringIntensity is greyed out based on Mobility
Change 3645707 by Chris.Bunner
Skip empty parameters when identifying invalid duplicates during material translation.
Change 3646225 by Uriel.Doyon
Texture streaming support for particle sub-uv
Change 3646323 by Rolando.Caloca
DR - vk - Fix bad update texture 2/3d parameters
Change 3646463 by Mark.Satterthwaite
Metal shader files that can serve as extensions to the metal_stdlib rather than trying to wedge even more into the shader compiler. Might as well leverage Metal's C++'ness.
Currently just a skeleton of a buffer type that would better emulate HLSL Buffer<>/RWBuffer<> objects.
Change 3646727 by Marcus.Wassmer
fix linux and nonunity compiles
Change 3647777 by Rolando.Caloca
DR - Mobile Vulkan optimization
Change 3647822 by Lauren.Ridge
Layers are now renameable (except Layer 0 is always "Background") in Material Layers Functions
Change 3647918 by Chris.Bunner
Static analysis fixes - Monolithic include, forward delcared enums, locally shadowed variable.
Change 3648010 by Michael.Lentine
Don't use min16float by default.
Change 3648015 by Michael.Lentine
Add special case fixes for min16float as well as half on console.
Change 3648024 by Lauren.Ridge
Moving MaterialLayersFunctions Layer naming to EditorOnly wrappers
Change 3648127 by Lauren.Ridge
Moving name getter functionality to FMaterialLayersFunctions
Change 3648265 by Lauren.Ridge
Fixing loctext key
Change 3648293 by Rolando.Caloca
DR - D3D12 fix
Change 3648326 by Rolando.Caloca
DR - vk - Added subrectangle support when updating Texture2D and Texture3D
Change 3648522 by Rolando.Caloca
DR - vk - Do not try to create a BufferView of a StructuredBuffer (no valid pixelformat)
Change 3648612 by Rolando.Caloca
DR - vk - Implement RHIMapStagingSurface
Change 3648673 by Rolando.Caloca
DR - vk - Reduce Vulkan pipeline cache disk size by filtering duplicated shader ucodes
Change 3648913 by Arne.Schober
DR - Performance optimization during HLod traversal. using vector load and avoiding array copy by passing it through reference instead through value.
Change 3649443 by Daniel.Wright
Exposed EmissiveBoost, since Lightmass supports Emissive areas on meshes
Change 3650436 by Mark.Satterthwaite
Implemented the necessary extensions for Metal shading language to move lots of complexity out of MetalBackend and into actual shader code to make life *vastly* simpler.
- Full ue4::typed_buffer<T> wrapper type & associated ue4::buffer<>/ue4::buffer_atomic<> API - totally untested but should be functionally equivalent to HLSL Buffer<T>/RWBuffer<T>.
- All the sensible casts I can think of are now defined in ue4_format - any additional ones can just be added. The enurm of formats needs to be exposed to MetalRHI so we upload the correct values, but this should be trivial.
- Added a full series of wrappers around texturecube_array and depthcube_array to insulate code from whether it is backed by a real cube_array or a texture2d_array so we don't have to maintain complicated variants for new/old iOS devices.
- Added implementations for a bunch of annoying HLSL & GLSL intrinsics that were being matched by name + reverse_bits which needs a custom implementation on old shader standards.
Change 3650861 by Rolando.Caloca
DR - vk - Fix warnings
Change 3651116 by Rolando.Caloca
DR - vk - Support for compressed saved PSO cache
Change 3651321 by Rolando.Caloca
DR - vk - Prep for load multiple PSO files
Change 3651337 by Chris.Bunner
Editor-only default material fallback (hardcoded material).
#jira UE-48404
Change 3651839 by Rolando.Caloca
DR - vk - Integrate minor pipeline changes
Change 3652042 by Mark.Satterthwaite
More work on mtlpp:
- Selector class that caches IMP from SEL & Class.
- Fixes to ns::Error.
- Added test case application for testing denorm & float reinterpret-cast behaviour on Metal.
Change 3652370 by Uriel.Doyon
New "stat StreamingOverview" giving high level metrics of texture usage.
New function ResetAverageRequiredTexturePoolSize() and GetAverageRequiredTexturePoolSize() giving the average ideal value for "r.streaming.poolsize".
Change 3653658 by Chris.Bunner
Material vertex interpolator for sprite and gpu sprite particles.
Change 3653676 by Rolando.Caloca
DR - vk - Integrate changes: Multiple PSO caches, shared ucode & compression, size reduction up to 80%
Change 3653940 by Daniel.Wright
Moved Volumetric Lightmap textures out of FScene and into FPrecomputedVolumetricLightmapData so their lifetime can match the MapBuildData. This allows tossing the source BulkData in game after RHI texture creation even though switching lighting scenarios does Release/InitializeRenderingResources multiple times.
Change 3653956 by Daniel.Wright
Fixed leak of BatchVisibilityId's
Change 3653991 by Daniel.Wright
Fixed missing include
Change 3654013 by Daniel.Wright
Refactored reflection capture composite SM4 handling, now forces fully rough even if !REFLECTION_COMPOSITE_USE_BLENDED_REFLECTION_CAPTURES (forward shading default)
Change 3654018 by Daniel.Wright
Remove unused SM4 reflection capture cubemap
Change 3654118 by Rolando.Caloca
DR - vk - Fix for queries; support for r.Vulkan.ProfileCmdBuffers to only time cmd buffers w/o gpu bubbles
Change 3654339 by Chris.Bunner
Temporarily disabed a material error whilst working with content teams to fix the introduced bugs.
Change 3654534 by Daniel.Wright
Editor is only supported on Feature Level 5 platforms. Added a message box and exit when SM4 is detected (d3d10, OpenGL 3).
Change 3654751 by Rolando.Caloca
DR - vk - Add readback for RGB10A2; minor optimization
Change 3654940 by Rolando.Caloca
DR - vk - Warning fix
Change 3655104 by Mark.Satterthwaite
Add a bunch of code to mtlpp to wrap the Xcode command-line Metal tools and use them to provide a convenient command-line tool that can compile two Metal shaders & diff the resulting AIR to make debugging easier. Obviously this only works on macOS.
Change 3655173 by Jian.Ru
Render dithered material as masked if a stencil prepass is not used
#jira UE-50064, UE-49537
Change 3655479 by Daniel.Wright
Fixed HandleLegacyMapBuildData not getting called on P maps loaded in the editor, which apparently was dropped in an integration error, causing all legacy maps (before the BuildData change) to lose their built lighting.
Change 3656341 by Richard.Wallis
Metal validation checks to test for drawing of the end of a vertex stream as seen in UE-48172 (Landscape Mesh Flickers Rapidly When Using Sculpting Landscape). This is not a fix for that but just a error log to catch the bad draw calls.
#jira UE-48172
Change 3656844 by Rolando.Caloca
DR - vk - Avoid microcode copy
- Fix link error
Change 3656894 by Rolando.Caloca
DR - vk - Enable api dump without needing validation enabled
Change 3656915 by Marcus.Wassmer
Fix DX12 buffer lock for read
Change 3657166 by Rolando.Caloca
DR - vk - Proper fix for api dump layer
Change 3657401 by Rolando.Caloca
DR - vk - Linux compile fix
Change 3657607 by Rolando.Caloca
DR - vk - Prep for changes
Change 3658722 by Chris.Bunner
Refresh shared texture samplers when changing max ansiotropy level (e.g. scalability settings).
#jira UE-30086
Change 3659499 by Daniel.Wright
Moved bEnableAutoLODGeneration to LOD category so it's not the only one in HLOD category
Change 3659644 by Mark.Satterthwaite
D3D11 equivalent to 3656341 (only enabled when -d3ddebug is) to validate DrawIndexedPrimitives isn't trying to draw off the end of the instanced vertex streams which has inconsistent (and potentially undefined) behaviour across the various APIs we support. This fires when painting the landscape because the code attempts to render with a FirstInstance value that is as large as the number of elements in the instance-data streams which D3D11 drivers silently fails to render, but which Metal (& probably Vulkan too) will renders as garbage. This pattern is wrong & will be even more dangerous in a Draw*Indirect world.
#jira UE-48172
Change 3659831 by Rolando.Caloca
DR - vk - Copy 3657927 (fixes for Mali)
Change 3661921 by Rolando.Caloca
DR - vk - Minor log/info changes
Change 3661985 by Mark.Satterthwaite
Change the Metal sampler filter translation to better match D3D.
Change 3662050 by Richard.Wallis
Compile fix for Metal enums.
Change 3662062 by Rolando.Caloca
DR - Copy from 3662060
- OpenGL cloth fix
Change 3662100 by Mark.Satterthwaite
Use a temporary file and an atomic move to put the Metal PCH into the right place and reduce the number of false PCH compile failures on the build farm.
Change 3662253 by Daniel.Wright
Reflection Captures support Lighting Scenarios without recapturing
* Reflection Captures are now part of the Map Build
* Modifying a capture in editor will display a preview, but game can only display built captures (black for unbuilt with screen message)
* Reflection Capture build data moved to the BuildData package
* Building lighting / reflection captures no longer dirties ULevels
* Sky lights which capture the scene now work correctly with Lighting Scenarios
* Lighting Scenarios must now be loaded for each time they are made visible (no switching back and forth while keeping both loaded)
Change 3663215 by Mark.Satterthwaite
Initial, incomplete, tool added to mtlpp to help debug macOS Internal Compiler Errors - the mtlpp command-line tool can be fed the debug output from UE4 along with compiler settings to automatically compile shaders and construct the render pipeline that crashes the runtime compiler.
So far only macOS render-pipeline-states are supported currently.
Change 3663293 by Mark.Satterthwaite
Added Metal device selection to the mtlpp command-line tool so I can quickly test compile on dual-GPU Macbook Pro's.
Change 3663471 by Daniel.Wright
Reflection Capture Builds no longer use UEditorLevelUtils::SetLevelVisibility to control level visibility, which streams out sublevels, modifying nav mesh
Fixed status updates during Reflection Capture Build
Captures overflowing GMaxNumReflectionCaptures now log a warning instead of pretending that they built successfully
Change 3664056 by Rolando.Caloca
DR - Linux compile fix
Change 3664460 by Daniel.Wright
Restored unused LoadTimesObjectVersion, packages saved with it will issue a warning on load
Change 3664802 by Uriel.Doyon
Fixed flash created by pre-exposure when the value changed dramatically between frames
Change 3664890 by Daniel.Wright
Created 'Stat MapBuildData' to track the memory size of lighting and reflection capture build outputs
Change 3665163 by Rolando.Caloca
DR - Copy from 3665156
- Gracefully fail when there are mem leaks exiting Vulkan
Change 3665629 by Daniel.Wright
Only Surface domain materials cast shadows in Lightmass
Change 3665855 by Marcus.Wassmer
PR #4032: Fix comparison of SceneColorFormat (Contributed by Hybrid0)
Change 3666707 by Guillaume.Abadie
Replaces some custom material node to get View.BufferSizeAndInvSize with ViewProperty material expression in some engine material functions.
Change 3667239 by Rolando.Caloca
DR - Use hlslcc define for common issues
Change 3668108 by Brian.Karis
Disabled to Catmull-Rom filter. Too many flickering issues. Disabled antiflicker as well.
Change 3668157 by Mark.Satterthwaite
In the prototype Metal stdlib extension library add inline versions of the D3D SM6 "wave" intrinsics that can be expressed in terms of Metal 2.0 simd/quad group operations (macOS=simd, iOS=quad). These are unlikely to be as efficient as direct intrinsics but they should be functionally equivalent.
These functions are not available *yet* as I still need to hook the ue4_stdlib into MetalShaderFormat & MetalRHI.
The following HLSL 6 functions are implemented:
WaveAllBitAnd
WaveAllMax
WaveAllMin
WaveAllBitOr
WaveAllBitXor
WaveAllEqual
WaveAllProduct
WaveAllSum
WaveAllTrue
WaveAnyTrue
WaveBallot
WaveGetLaneCount
WaveGetLaneIndex
WaveOnce
WavePrefixProduct
WavePrefixSum
WaveReadFirstLane
WaveReadLaneAt
The following can't be implemented in Metal as of Metal 2.0 AFAIK:
WaveGetOrderedIndex
WaveIsHelperLane
GlobalOrderedCountIncrement
QuadReadLaneAt
QuadSwapX
QuadSwapY
Change 3668260 by Olaf.Piesche
Cache particle collision shaders regardless of simple forward state
Missed this checkin
#jira FORT-51307
Change 3669243 by Daniel.Wright
Bumped shader version to propagate FReflectionCaptureData rename
Change 3669369 by Mark.Satterthwaite
Duplicating Metal changes from //UE4/Release-4.18 to Dev-Rendering (//UE4/Dev-Rendering)
3662503 Collapse system-variables to one declaration in MetalUtils to avoid later shader compiler errors when they are specified more than once, which is seemingly permissable. Fixes volumetric fog.
#jira UE-50293
3665210 - Invalidate all Metal shaders again to force a recompile to workaround another driver bug.
- On macOS compact the clip-distance value into a single output to avoid bugs in the runtime pipeline compilers.
- In SCW's direct-compile mode MetalShaderForamt should always dump the resulting Metal shader and print any errors we encounter to the log.
- Change FGenerateMetalVisitor to take a FMetalCodeBackend& not a FMetalCodeBackend* to avoid a lot of pointless pointer validation.
#jira UE-50244
3665429 Fix a crash on shutdown due to MetalRHI caching vertex-declarations beyond the lifetime of the RHI by moving the cache into the FMetalDynamicRHI itself.
#jira UE-50356
3665613 Fix DistanceField rendering on Metal & the associated validation layer error when it is enabled - MetalRHI can't use the same approach as Vulkan without a bit more work.
#jira UE-50364
3667584 Fix black flickering on some materials that use World Position Offset - the Metal sincos intrinsic comes into two flavours for single precision floats and we want the precise version not the fast version. The "cross" implementation needed a few more fma's too and this change has to invalidate Metal shaders again to take effect.
#jira UE-50399
3667805 Changing sincos in Metal fragment shaders had undesirable side-effects - the compiler is now re-associating another floating point operation - so limit the use of precise::sincos to vertex-shaders for now. This fixes the WPO materials without causing any other obvious problems.
#jira UE-50399
Change 3669912 by Mark.Satterthwaite
Fix Metal compilation for PCSS shadows - the HLSL that is compiled uses both SampleCmp and Sample which GLSL disallows (shadowSampler types in GLSL only allow SampleCmp) but is perfectly valid in Metal where only the texture type declaration changes.
Duplicate MetalBackend.cpp changes from Joe.Graf's: 3667781
Fixed an extra ) being emitted during HLSL->Metal translation
Added depthcube_array support per Mark's instructions
Change 3670308 by Mark.Satterthwaite
Missing autorelease pool blocks in MetalTexture functions.
Change 3670989 by Mark.Satterthwaite
Stop trying to be so clever with Metal clip-distances: AMD have a bug in 10.13.0 that means we can only emit one clip-distance value, so simply emit the value with the lowest index (we have handily ordered them by importance!) and let the others become user-interpolators until this bug is resolved in a macOS SU (according to Max@AMD the fix is in, just not in time for 4.18). This means planar reflections will work, VR no-multi-view-fallback will work & layered rendering will work either individually or together - the difference being that on macOS *only* the VR no-multi-view-fallback & layered rendering paths may be slower when combined with the global clip plane.
Hit & run fix to MetalCaptureManager and availability of tile-shader functions while I'm here.
#jira UE-50518
Change 3671014 by Mark.Satterthwaite
Correct handling of RowLinearPVRTC blits for iOS Metal desired for Ocean.
Change 3671575 by Rolando.Caloca
DR - Copy 3668036
Stop syncing CPU with GPU on Vulkan
Change 3671637 by Rolando.Caloca
DR - Copy 3670937
Fixes Vulkan editor outline
Change 3672309 by Mark.Satterthwaite
Submitted on behalf of Richard Wallis:
Only disable V-Sync on Metal in macOS 10.13 when running in "true" fullscreen mode (where we switch display modes & forbid switching spaces or tabbing out) so that you won't see the rainbow artefact caused by being out-of-sync with WindowServer, only the tearing you'd expect when V-Sync is disabled. We'll chat with Apple about whether there is a way to avoid the rainbow artefact when switching spaces in Windowed Fullscreen with displaySync disabled.
#jira UE-50134
Change 3672314 by Daniel.Wright
User friendly message dialog for when a required key is missing from BaseLightmass.ini
Change 3672315 by Daniel.Wright
Assert on load when a uniform buffer struct goes missing, instead of a crash on save
Change 3672476 by Chris.Bunner
Removed duplicate material instance editor command binding that appeared in a task stream merge.
Change 3672626 by Mark.Satterthwaite
Move the ue4_stdlib.metal extensions to MetalRHI's Public header directory as it'll need to be available to both modules and that's easier to accomplish from here.
Change 3672643 by Mark.Satterthwaite
iOS compilation fixes.
Change 3672728 by Daniel.Wright
Fixed encoded HDR reflection captures
Change 3672753 by Jian.Ru
Fix texture swimming
#jira UE-49369
Change 3672815 by Daniel.Wright
Tooltip for build button explaining why it might be disabled
Change 3673350 by Rolando.Caloca
DR - vk - Do not reallocate memory every draw call
Change 3673501 by Rolando.Caloca
DR - vk - Remove more reallocations
Change 3673505 by Rolando.Caloca
DR - Remove global variable with semantic
Change 3673514 by Rolando.Caloca
DR - vk - compile fix
Change 3675899 by Chris.Bunner
Fixed support for editor-time transient parameter overrides. This happens when a compiled material's scalar or vector parameter is changed in value only, the active material resources should also update and be reverted when the material graph is closed. The code was incorrectly pulling base parameters from expressions instead of the actual uniform.
Change 3676843 by Arne.Schober
DR - UE-49473 - Fix Stateleak caused by custom drawer in the long for loop, where the depth stencil state might not be reset in a subsequent itteration of the loop.
Change 3678269 by Daniel.Wright
Fixed Encoded HDR reflection capture data getting the wrong Brightness applied when cooking
Change 3678543 by Daniel.Wright
MapBuildData now tosses the unneeded reflection capture format on load. Affects target platforms that require multiple formats at cook time.
Change 3679602 by Jian.Ru
Fix up mesh decal shader complexity view mode
#jira UE-50272
Change 3679959 by Chris.Bunner
Fixed logic on overriden vector parameter retrieval for material instances checking a function owned parameter.
#jira UE-50712
Change 3679998 by Daniel.Wright
Fixed crash when precomputing static visibility only
[CL 3680175 by Marcus Wassmer in Main branch]
#lockdown Nick.Penwarden
#rb None
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3358140 on 2017/03/22 by Rolando.Caloca
DR - Fix copy to cube face
- Compile fix when using dump layer
- Add new error enum
Change 3358301 on 2017/03/22 by Mitchell.Wilson
Initial check in of LODs in InfiltratorForward. First pass on optimization in level. Adding a visibility track for SceneCapture2D in tunnel section.
Change 3358477 on 2017/03/22 by Mitchell.Wilson
Updating Skeletal Mesh DPW_Robot_Export to resolve screen size being too low for LOD1. Cleaned up LOD1 which was showing some visible popping when transitioning.
Change 3358529 on 2017/03/22 by Mark.Satterthwaite
Globally disable clang's "constant-logical-operand" warning when running under Distcc - it is much easier and less invasive than constantly fixing the code.
Change 3358745 on 2017/03/22 by Mark.Satterthwaite
Disable another warning (parentheses-equality) under Distcc because again the separation of preprocessing from compilation means it turns up where it isn't expected.
Change 3358837 on 2017/03/22 by Joe.Graf
Merge of pull request #3214 for the RenderDocPlugin
#CodeReview: matt.kuhlenschmidt, marcus.wassmer
#rb: marcus.wassmer
Change 3359112 on 2017/03/22 by Ben.Salem
Update perf monitor to include frame time by default. Also, use only game/PIE world timers when in editor, instead of all worlds combined.
#tests Ran several Showdown test runs with plugin!
Change 3359363 on 2017/03/22 by Joe.Graf
First pass at non-unity & no pch compilation
Change 3359449 on 2017/03/22 by Joe.Graf
Added missing null check when exporting a EXR on Linux (UE-40268)
#CodeReview: dmitry.rekman
#rb: n/a
Change 3360349 on 2017/03/23 by Guillaume.Abadie
Fixes TAA's AA_FORCE_ALPHA_CLAMP causing DOF layouts.
#jira UE-42920
Change 3360405 on 2017/03/23 by Marcus.Wassmer
Better method for detecting Kepler
Change 3360718 on 2017/03/23 by Daniel.Wright
Planar reflections handle views smaller than the render target in a general way
* Fixes planar reflections with adaptive pixel density (ViewFamily size larger than actual views combined)
* Planar reflections are now supported in splitscreen
Change 3360758 on 2017/03/23 by Daniel.Wright
[Copy] Added new light property bCastVolumetricShadow, which defaults to true for directional and sky lights, but false for point / spot lights as supporting volumetric fog shadowing has significant GPU overhead
Change 3360762 on 2017/03/23 by Daniel.Wright
[Copy] Texture flags are now properly routed to RHICreateTexture3D from the render target pool
Change 3360768 on 2017/03/23 by Daniel.Wright
[Copy] Disabled GPUProfiler histogram by default, controlled by r.ProfileGPU.ShowEventHistogram
Change 3360770 on 2017/03/23 by Daniel.Wright
[Copy] Disabled fast clears on CustomDepth, saves .2ms on xbox
Change 3360771 on 2017/03/23 by Daniel.Wright
[Copy] Particle lights no longer force tiled deferred lighting. Tiled deferred lighting is only used if enough unshadowed lights + particle lights are on screen. Saves 1.5ms Xbox with one particle light.
Change 3360774 on 2017/03/23 by Daniel.Wright
[Copy] Distance field cvar comments
Change 3360782 on 2017/03/23 by Daniel.Wright
[Copy] Disabled selection color on Volume materials
Change 3360795 on 2017/03/23 by Daniel.Wright
[Copy] Volume materials now specify Albedo and Extinction, which is more intuitive than Scattering and Absorption. Albedo is [0-1] reflectance, while Extinction is a world space density.
Change 3360799 on 2017/03/23 by Daniel.Wright
[Copy] Cinematic scalability levels get 2x volumetric fog resolution in x and y
Change 3360806 on 2017/03/23 by Daniel.Wright
[Copy] Fixed volumetric fog being offset when viewport min is not 0
Change 3360809 on 2017/03/23 by Daniel.Wright
[Copy] Volumetric fog now adds a bias to the inverse squared light falloff denominator, prevents extreme aliasing from the hotspot. Can be controlled with r.VolumetricFog.InverseSquaredLightDistanceBiasScale.
Change 3361651 on 2017/03/23 by Brian.Karis
Higher quality sharp SSR at quality 4
Change 3361678 on 2017/03/23 by Brian.Karis
Fresnel darkens diffuse for clearcoat.
Change 3361683 on 2017/03/23 by Brian.Karis
Fixed SSR artifact
Change 3361691 on 2017/03/23 by Brian.Karis
Chagned min roughness limit
Change 3361707 on 2017/03/23 by Brian.Karis
Added inverse film tone map
Change 3361726 on 2017/03/23 by Brian.Karis
Better precision inverse
Change 3361758 on 2017/03/23 by Brian.Karis
Material flag normal curvature to roughness is no longer forward only.
Change 3361765 on 2017/03/23 by Brian.Karis
Update ACES
Change 3361774 on 2017/03/23 by Brian.Karis
Cleaned up alpha support and disabled screen edge clipping.
Change 3362478 on 2017/03/24 by Guillaume.Abadie
Cherry pick 3316084's PostProcessing.cpp: Fixes a bug in Circle DOF where the apply pass was no longer using the downres DOF's TAA output.
#author Brian.Karis
#jira UE-42920
Change 3362738 on 2017/03/24 by Rolando.Caloca
DR - Hide scene capture on IF
Change 3362890 on 2017/03/24 by Guillaume.Abadie
Renames r.SceneAlpha to r.PostProcessing.PropagateAlpha
Change 3363665 on 2017/03/24 by Mark.Satterthwaite
PR #3414: Add command line option "-noheartbeatthread" to disable heart beat thread (Contributed by JeffRous)
Change 3363866 on 2017/03/24 by Arne.Schober
DR - Updated NVAPI
#RB Marcus.Wassmer
Change 3364300 on 2017/03/24 by Brian.Karis
SSR use dynamic velocity
Change 3364372 on 2017/03/24 by Brian.Karis
Fix changing off axis projection velocities.
Change 3364373 on 2017/03/24 by Brian.Karis
Enabled velocity drawing in scene captures
Change 3365531 on 2017/03/27 by Guillaume.Abadie
Computes the material's screen position material expression directly from the pixel shader SvPosition
Change 3365764 on 2017/03/27 by Chris.Bunner
Lowering severity of crash for missing values in scalability.ini.
#jira UE-41331
Change 3365916 on 2017/03/27 by Guillaume.Abadie
Exposes the viewport offset within the view property material expression
Change 3365979 on 2017/03/27 by Brian.Karis
Fixed skylight intensity from double applying
Change 3365987 on 2017/03/27 by Brian.Karis
Stopped post process indirect lighting intensity from scaling skylight reflections
Change 3365991 on 2017/03/27 by Brian.Karis
Fix for static analysis
Change 3366028 on 2017/03/27 by Daniel.Wright
Volumetric fog supports static shadowing from Stationary lights
* Using bilinear on static shadowmap depths + 1 PCF to smooth out results
Change 3366029 on 2017/03/27 by Daniel.Wright
Static shadow depth maps for Stationary point and spot lights are 2x higher res by default (4x more texels), which is more appropriate for volumetric fog
Change 3366055 on 2017/03/27 by Guillaume.Abadie
Cherry picks 3251469: Implements scene capture component's CaptureSortPriority to control GPU execution order in order to manage inter dependencies.
Change 3366447 on 2017/03/27 by Simon.Tourangeau
Fix IES light profile importer.
- Bug in the LM-63-1986 format importer.
Change 3366836 on 2017/03/27 by Brian.Karis
ClearUAV now supports int types
Change 3367435 on 2017/03/28 by Benjamin.Hyder
Submitting Decal Automation map for initial approval
Change 3367572 on 2017/03/28 by Chris.Bunner
Changed ClampedPow {max(abs(x),0.00001)} to PositiveClampedPow {max(x,0)} to give more expected results to Power node in material graphs.
#jira UE-42989
Change 3367756 on 2017/03/28 by Olaf.Piesche
Niagara material usage flags
Change 3367835 on 2017/03/28 by Marcus.Wassmer
Fix crash when TileRenderer runs before anything else. Make explicit behavior when rendering at a time when there is no valid scene.
Change 3367837 on 2017/03/28 by Marcus.Wassmer
Missed a file.
Change 3367838 on 2017/03/28 by Richard.Wallis
Updated items from original shelved version by Mark Satt:
- Added MetalBackend.cpp to change main function string to have an initial crc + code length zero's
**Description below taken from Mark Satt's original verison of this in CL3343280**
Updated for Dev-Rendering's PSOs & integrates Richard's work on RHI shader libraries.
Replace the FShaderCache's cook-time binary shader cache with Dmitriy Dyomin's standalone FShaderCodeLibrary that saves all shader byte-code arrays to files named by the FSHAHash. This de-duplicates shaders so we only ever store the byte code once. Includes optional support for generating a platform specific library file - which Metal implements to provide a single Metal library. The platform-native implementation can perform more de-duplication and in the case of Metal has lower file overheads and will compress more efficiently.
- All of the support code for the FShaderCache's cook caching is gone, which affects all platforms. The FShaderCodeLibrary is currently supported by Cook-By-The-Book but can be used with iterate or child cookers - only DLC cooking requires further work.
- With further modifications it should be possible to support Cook-on-the-Fly as well (output directories would be needed in FShaderCodeLibrary::InitForCooking) and the file-access pattern should be changed to use async. IO so that Material loading is not considered complete until all required byte-code arrays are loaded into the FShaderCodeLibrary.
- For Metal archiving shaders this way will compile with debug information and the FShaderCodeLibrary, with some help from extensions to IShaderFormat, will save the debug information out into separate files during cooking - these can then be used to debug the game without having to locally recompile, recook & repackage but the shipped byte-code is stripped. Global shader caches are also subject to de-duplication in the library in order to support Metal's shader stripping.
- File Move operations need to respect the 'Replace' flag - for FShaderCodeLibrary to work we need Move to be atomic.
- This bumps the object version and will cause all content to recook.
- Native library support is optional - only Metal currently implements one, but so could Vulkan and D3D12. For Metal the big advantages are further de-duplication where different materials generate the same MetalSL text but a different FSHAHash, that the single Metal library has lower overhead and that as a single file it all compresses far better (esp. with LZMA - 5x smaller).
Change 3367854 on 2017/03/28 by Mark.Satterthwaite
Don't track or record draw call resources for non-OpenGL shader platforms in the shader-cache as it is unnecessary and makes it slower on the CPU than it needs to be.
Change 3367877 on 2017/03/28 by Brian.Karis
Fixed linux build hopefully
Change 3368001 on 2017/03/28 by Mark.Satterthwaite
Compile fixes from Richard's checkin caused by not having visibility to all platforms from my original shelves.
Change 3368019 on 2017/03/28 by Mark.Satterthwaite
And another fix for Windows compilation of MetalShaderFormat.
Change 3368042 on 2017/03/28 by Mark.Satterthwaite
And a couple of simpler MSVC errors.
Change 3368271 on 2017/03/28 by Mark.Satterthwaite
Make SceneRenderTargets compile again.
Change 3368691 on 2017/03/28 by Daniel.Wright
[Copy from BenW] Renamed r.Shadow.MaxCSMShadowResolution to r.Shadow.MaxCSMResolution to match scalability inis
Change 3369689 on 2017/03/29 by Marcus.Wassmer
Fix non editor compile for now
Change 3369862 on 2017/03/29 by Marcus.Wassmer
Get the rest of the things compiling again.
Change 3369896 on 2017/03/29 by Chris.Bunner
Enabling AMD HDR support by default.
#jira UE-42113
Change 3370535 on 2017/03/29 by Marcus.Wassmer
DR - Fix template explicit instantiation for ClearUAV permutations
#RB Brian.Karis, Arne.Schober
Change 3370704 on 2017/03/29 by Rolando.Caloca
DR - Rewrote GPU Skin Cache
- Per section buffers
- Limited memory per non-editor worlds (control with r.SkinCache.SceneMemoryLimitInMB)
Copied from 3370529
Change 3371389 on 2017/03/30 by Richard.Wallis
Remove temp working directories after archive packages built.
Change 3371641 on 2017/03/30 by Rolando.Caloca
DR - Copy 3371640 (fix mem leak)
Change 3372436 on 2017/03/30 by Uriel.Doyon
Added flags in UPrimitiveComponent to keep track of its state in the streaming manager.
This allows to avoid unnecessary callback and processing in begin destroy reattach and being destroy logic.
Removed the limitation of only processing UMeshComponent when handling spawed primitive.
This releases the level manager from having to manage dynamic primitives.
This improves performance by not having to manage dynamic references in the level manager.
Primitives managed as dynamic now have a callback when ever their proxy is udpated, handling
many cases automatically where previously a manual callback to notify would have been required.
Fixed an issue where primitives with no reference to streaming textures would loose they dynamic state
because of lack of references in the streamer.
Change 3372740 on 2017/03/30 by Chris.Bunner
[Experimental] Partial compute post process pipeline (r.PostProcess.PreferCompute).
StencilSceneTexture added to deferred list.
A few known issues to be fixed in a follow-up CL.
Change 3372765 on 2017/03/30 by Uriel.Doyon
Disabled concurrent call to NotifyPrimitiveUpdated while we don't have a safe concurrent update
Change 3372979 on 2017/03/30 by Richard.Hinckley
#jira UE-43501
The stencil buffer can now use single-channel bitmasks that ignore depth. This makes it possible to detect overlaps between stencil objects.
Change 3373053 on 2017/03/30 by Simon.Tourangeau
LPV Fade support
- mostly integrated from CL 2959511
Change 3373272 on 2017/03/30 by Uriel.Doyon
Added support for the concurrent update of dynamic primitives by the streaming manager.
Change 3373450 on 2017/03/30 by Rolando.Caloca
DR - FNT - Fix bad data for odd texcoord channels used on skin cache passthrough factory
Copy 3373364
#jira UE-43492
Change 3373470 on 2017/03/30 by Marcus.Wassmer
Nvidia Aftermath support
Change 3374187 on 2017/03/31 by Chris.Bunner
Volume texture support for CombineLUTs/Tonemap compute pass.
Refactored common param code to shared sub-class in CombineLUTs and Tonemap PS/CS.
Skip compute post process out-of-bounds writes.
Unsigned type conversion fixes.
Trimmed compute post process shader inputs.
Change 3374233 on 2017/03/31 by Chris.Bunner
Removed several redundant post process compute fences and resource transitions.
Added testing CVar to force compute post processes to async (r.PostProcess.ForceAsyncDispatch).
Change 3374412 on 2017/03/31 by Rolando.Caloca
DR - Fix static analysis
Change 3374544 on 2017/03/31 by Richard.Wallis
FShaderCache Parallel-Context-Aware Merged with FShaderCache Single Library.
Future Work
- This was done before Engine PSO were in so this now needs a refector in the recording and playback on pipeline states instead an emulate PSO in OpenGL Driver.
- Remove FShaderCacheState and replace the logic with FGraphicsPipelineStateInitializer which should be able to record from the RHI current pipeline state
- This would reduce the Locking required as it's naturally per thread/context and only the final record would need a lock
Change 3374588 on 2017/03/31 by Richard.Wallis
Windows Compile Fixes
Change 3374810 on 2017/03/31 by Benjamin.Hyder
updating recommended GPU drivers
Change 3375207 on 2017/03/31 by Rolando.Caloca
DR - vk - Fixed swapchain format selection for some Linux platforms
Change 3375248 on 2017/03/31 by Rolando.Caloca
DR - vk - Prefer D32S8
Change 3375495 on 2017/03/31 by Rolando.Caloca
DR - vk - Update to sdk 1.0.42.2
Change 3375496 on 2017/03/31 by Rolando.Caloca
DR - Force compiling with updated Vulkan SDK
Change 3375636 on 2017/03/31 by Mark.Satterthwaite
Copying Metal improvements from task stream, with some modifications:
- Off-by-default implementations for MTLFence & MTLHeap, including some small changes to the RHI interface for parallel contexts.
- Support for Apple's Instruments "Points of Interest" tool.
- Consolidation of some Mac & iOS compiler, memory and thread handling code.
- Fixes for Metal not having implicit buffer SRV typecasting for DistanceField effects.
- Improvements to the internal FMetalDebug layer, still off by default.
- Limited support for Xcode automatic code-signing for iOS/tvOS.
- Minimisation of render-target changes in some rendering code, esp. SceneOcclusion, DBufferDecals.
- Added RHISetResourceAliasability_RenderThread to FDynamicRHI for RHIs to implement simple render-target aliasing.
- Added FApplePlatformObject, a custom block allocator for Objective-C types (with NSZombie support) which is now used in MetalRHI to decrease allocation costs of Objective-C types.
- Smattering of lesser fixes.
Change 3375654 on 2017/03/31 by Mark.Satterthwaite
Incremental Windows build fix.
Change 3375656 on 2017/04/01 by Mark.Satterthwaite
Correct extern declaration, including the module export macro which Mac unhelpfully doesn't enforce (for now...).
Change 3375797 on 2017/04/01 by Mark.Satterthwaite
Nullability qualifiers to fix Mac build-farm compilation: perversely this is not a problem for local builds...
Change 3375798 on 2017/04/01 by Mark.Satterthwaite
Fix the first mis-merge in ParticleGpuSimulation - these changes clearly weren't properly resolved in the task-stream.
Change 3375835 on 2017/04/01 by Mark.Satterthwaite
Try again with nullability and fix the occlusion changes as the PSO work wasn't merged correctly.
Change 3376143 on 2017/04/02 by Mark.Satterthwaite
Switch back to flat dSYMs for Dev-Rendering - they don't work with Instruments etc. but they are required by our build system.
Change 3376324 on 2017/04/03 by Chris.Bunner
Fixed cvar re-registration log spam and flagged a testing-only cvar as such.
Change 3376726 on 2017/04/03 by Benjamin.Hyder
Submitting initial HDR test map (WIP)
Change 3376756 on 2017/04/03 by Guillaume.Abadie
Fixes scene captures ordering's backward compatibility.
Before, 2d scene captures were rendered before cube scene captures. The CaptureSortPriority broke backward compatibility by settings this new member to 0 in the USceneCaptureComponent's constructor. Since it is a higher come first policy, this CL set the default of this value to 1 in USceneCaptureComponent2D's constructor.
Change 3377378 on 2017/04/03 by Arne.Schober
DR - Fix ShaderRecompiling over and over again
#RB Chris.Bunner
Change 3377512 on 2017/04/03 by Daniel.Wright
[Copy] Fixed profilegpu in d3d12 - initialize FLongGPUTaskPS when it is safe to do so, and fixed FSlateRHIRenderer's incorrect usage of draw events
Change 3377518 on 2017/04/03 by Daniel.Wright
[Copy] Distance field atlas coalesces updates to reduce RHIUpdateTexture3D memory overhead on d3d12
Change 3377526 on 2017/04/03 by Daniel.Wright
[Copy] "Ran out of GPU queries!" log only happens once
Change 3377535 on 2017/04/03 by Daniel.Wright
[Copy] Fixed unreferenced local variable
Change 3377539 on 2017/04/03 by Daniel.Wright
[Copy] Xbox One RHIGetResourceInfo takes ESRAM into account - fixes render target pool 'VRamInKB request failed' messages
Change 3377546 on 2017/04/03 by Daniel.Wright
[Copy] Added r.LightMaxDrawDistanceScale for local light scalability
Change 3377553 on 2017/04/03 by Daniel.Wright
[Copy] Removed NEW_ESRAM_ALLOCATOR define and old unused path
Change 3377560 on 2017/04/03 by Daniel.Wright
[Copy] Fixed two d3d12 refcounting bugs causing -norhithread crashes
Change 3377565 on 2017/04/03 by Daniel.Wright
[Copy] Fixed Xbox One deleting GPU resources before the GPU is done reading from them (GRHINeedsExtraDeletionLatency was false)
Change 3377572 on 2017/04/03 by Daniel.Wright
[Copy] Disabled point / spot lights with MaxDrawDistance on LowPC
Change 3377586 on 2017/04/03 by Daniel.Wright
Fixed compile error
Change 3377699 on 2017/04/03 by David.Hill
FFT Code. Moved over from raven and refactored
#review-3374589 @guillaume.abadie
Change 3377910 on 2017/04/03 by David.Hill
GPU FFT: Fix Linux Build
adding a missing template<> to an IMPLEMENT_SHADER_TYPE
Change 3378751 on 2017/04/04 by Marcus.Wassmer
HQ particle lights now spawn attached to the same socket as their parent module.
Change 3378819 on 2017/04/04 by Richard.Wallis
Should be no need to protect shader cache against RHI thread now.
Change 3378823 on 2017/04/04 by Richard.Wallis
FRHIShaderLibrary Opaque Type
- Base FRHIShaderLibrary has no Create*Shader functions and is passed to Overloaded RHICreate*Shader functions instead of creation directly through the library.
- Assumed that only Native libraries will end up in the RHICreate*Shader functions.
- ShaderCache and ShaderCode Libraries now inherit from a common factory interface.
Change 3378883 on 2017/04/04 by Arne.Schober
DR - Fix DCC build
Change 3378885 on 2017/04/04 by Richard.Wallis
Metal resource cast compile fix post merge.
Change 3378946 on 2017/04/04 by Chris.Bunner
SM4 assert fix.
Change 3378953 on 2017/04/04 by Chris.Bunner
Fixed type-correctness on legacy BreakMA material nodes and set more flexible formats to global attributes which should result in much more forgiving graphs for users.
Allowed material nodes to opt out of mask-based pin coloration.
#tests Compiled most Paragon materials + QAGame test maps.
#jira UE-39885
Change 3379189 on 2017/04/04 by Arne.Schober
DR - Fix aftermath staging
Change 3379229 on 2017/04/04 by Arne.Schober
DR - Fix missing include
Change 3379374 on 2017/04/04 by Mark.Satterthwaite
Revert an accidentally merged change in MacPlatformProcess that relies on further changes from the Metal task stream.
Change 3379505 on 2017/04/04 by Rolando.Caloca
DR - Fix mismatched interpolators
Change 3379539 on 2017/04/04 by Mark.Satterthwaite
No FFT for any hlslcc platform - the IR for one or more RWTexture2D isn't quite right...
#jira UE-43626
Change 3379561 on 2017/04/04 by Rolando.Caloca
DR - Fix root signature issues on D3D12 PC
Change 3379590 on 2017/04/04 by Mark.Satterthwaite
Back out changelist 3379539 & change the shader slightly instead, the HLSLCC library generates bogus IR when you have an inout RWTexture.
#jira UE-43626
Change 3379917 on 2017/04/04 by Uriel.Doyon
Fix to input mismatch
Change 3380578 on 2017/04/05 by Chris.Bunner
Shader type fixes.
#jira UE-43652
Change 3380639 on 2017/04/05 by Rolando.Caloca
DR - Expose GetOrCreate PSO and document
Change 3380821 on 2017/04/05 by Guillaume.Abadie
Fixes a crash in USceneCaptureComponent::UpdateDeferredCaptures()
#jira UE-43642
Change 3381092 on 2017/04/05 by Guillaume.Abadie
Cherry pick 3362517: Implements TAA's scene color unpremultiplication from alpha channel to reduce DOF alpha channel temporal ghosting.
This CL take the oportunity to transform AA_ALPHA to an compile time enumeration, and add a basic TAA compile time configuration validation to improve readability of the different TAA passes' configurations.
Change 3381300 on 2017/04/05 by Mark.Satterthwaite
Quick fix for changes to MetalRHI's render-thread safe texture creation not correctly handling AVFoundation video player handing us an IOSurface.
#jira UE-43597
Change 3381359 on 2017/04/05 by Guillaume.Abadie
Back out changelist 3381092
Change 3381421 on 2017/04/05 by Mark.Satterthwaite
Amended CL #3380995 from Richard Wallis to address crash in the Material Editor under the validation layer - when there are no textures bound the default pass descriptor assigns store actions, which means we can't override them with our deferred store actions.
#jira UE-43689
Change 3381422 on 2017/04/05 by Mark.Satterthwaite
Absolute time queries can't be batched in Metal but I also can't rely on them being started with a call to BeginQuery - only EndQuery.
#jira UE-43691
Change 3381503 on 2017/04/05 by Daniel.Wright
More intuitive controls for Volumetric Fog
* Removed ScatteringScale / AbsorptionScale on Exponential Height Fog and added Albedo / Extinction
* InscatteringColorCubemap is now supported by Volumetric Fog
* Particle lights have a default VolumetricScatteringIntensity of 0 to avoid trailing
* Tweaked GVolumetricFogDepthDistributionScale better for nearby details
* Volume Materials have twice the interpolators available
Change 3381527 on 2017/04/05 by Mark.Satterthwaite
Disable Private GPU storage for PVRTC texture formats on iOS Metal - these require more changes to the blit-encoder usage as PVRTC has strange requirements.
Change 3381671 on 2017/04/05 by Mark.Satterthwaite
Better error message for failure to compile shaders remotely from PC for Metal.
Change 3381769 on 2017/04/05 by Rolando.Caloca
DR - Added lock texture array 2d on Vulkan
Change 3382003 on 2017/04/05 by Mark.Satterthwaite
Remove the automatic Metal aliasing/re-use when releasing some resource types as it doesn't work as intended.
Change 3382030 on 2017/04/05 by Zachary.Wilson
Fix compiling Metal text shaders from PC broken in merge from task stream.
#submitter mark.satterthwaite
#jira UE-43652
Change 3382880 on 2017/04/06 by Mark.Satterthwaite
Michael Trepka's CL #3379927:
VolumetricFogVoxelization implementation for Mac
Change 3383315 on 2017/04/06 by Mark.Satterthwaite
Partially revert CL #3382003 - the emulated Metal heaps require invoking makeAliasable in order to reclaim memory.
#jira UE-43739
Change 3384639 on 2017/04/07 by Marcus.Wassmer
Move ShaderResource version bump to RenderingObjectVersion
Change 3384704 on 2017/04/07 by Mark.Satterthwaite
Compile fix for merge.
Change 3384933 on 2017/04/07 by Rolando.Caloca
DR - Fix skin cache crash with BP (copy 3384714)
Change 3385104 on 2017/04/07 by Mark.Satterthwaite
Fix MetalRHI's abs(int2) handling - it can't be translated to fabs(int2) as that won't compile. Also rebuild hlslcc for my sanity.
#jira UE-43783
Change 3385105 on 2017/04/07 by Mark.Satterthwaite
Force a shader rebuild to ensure that everybody picks up the fix for #jira UE-43783
#jira UE-43783
Change 3385118 on 2017/04/07 by Arne.Schober
DR - [OR-37359] - Fix disapearing Decals when StencilLod Fade is enabled
#RB none
Change 3385149 on 2017/04/07 by Marcus.Wassmer
Fix skincache motion blur
Change 3385189 on 2017/04/07 by Rolando.Caloca
DR - Fix swapchain format for editor on Vulkan
Change 3385287 on 2017/04/07 by Mark.Satterthwaite
Enable SM5 on Intel as of 10.12.4 and later.
Change 3385347 on 2017/04/07 by Rolando.Caloca
DR - Temp fix for GL4 corruption on editor
#jira UE-43785
Change 3385363 on 2017/04/07 by Rolando.Caloca
DR - Actually fix all win platforms for GL bug
#jira UE-43785
Change 3385557 on 2017/04/07 by Arne.Schober
DR - [UE-43205] - Fix mesh paint
#RB none
Change 3385608 on 2017/04/07 by Daniel.Wright
Fixed SampleCmp being used on a non-depth texture, causing a d3d error
Change 3385980 on 2017/04/10 by Rolando.Caloca
DR - Remove transition functions RHIClearColor* RHIClearDepthStencilTexture
Change 3386042 on 2017/04/10 by Rolando.Caloca
DR - Fix metal merge issue
Change 3386157 on 2017/04/10 by Rolando.Caloca
DR - Remove VS2013 libs generation off hlslcc & glslang (to match main)
Change 3386356 on 2017/04/10 by Chris.Bunner
Resolving merge errors.
Change 3386414 on 2017/04/10 by Chris.Bunner
Resolved merge issue in RendererScene.cpp.
Change 3386700 on 2017/04/10 by Mark.Satterthwaite
Silence documentation warnings.
Change 3387178 on 2017/04/10 by Chris.Bunner
Removed invalid mask correction on MakeMA material nodes.
Change 3388177 on 2017/04/11 by Marcus.Wassmer
Disable ensure that is no longer relevant now that we bind clear colors on texture creation
Change 3388261 on 2017/04/11 by Chris.Bunner
Static analysis fix.
[CL 3388266 by Chris Bunner in Main branch]