2019-12-26 14:45:42 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
# include "PostProcess/PostProcessBloomSetup.h"
2019-10-01 13:03:04 -04:00
# include "PostProcess/PostProcessDownsample.h"
# include "PostProcess/PostProcessFFTBloom.h"
# include "PostProcess/PostProcessWeightedSampleSum.h"
2021-12-07 12:33:06 -05:00
# include "PixelShaderUtils.h"
2014-03-14 14:13:41 -04:00
2019-09-03 19:19:28 -04:00
namespace
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
const int32 GBloomSetupComputeTileSizeX = 8 ;
const int32 GBloomSetupComputeTileSizeY = 8 ;
2019-10-01 13:03:04 -04:00
TAutoConsoleVariable < float > CVarBloomCross (
2021-12-06 13:45:02 -05:00
TEXT ( " r.GaussianBloom.Cross " ) ,
2019-10-01 13:03:04 -04:00
0.0f ,
TEXT ( " Experimental feature to give bloom kernel a more bright center sample (values between 1 and 3 work without causing aliasing) \n " )
TEXT ( " Existing bloom get lowered to match the same brightness \n " )
TEXT ( " <0 for a anisomorphic lens flare look (X only) \n " )
TEXT ( " 0 off (default) \n " )
TEXT ( " >0 for a cross look (X and Y) " ) ,
ECVF_RenderThreadSafe ) ;
2019-09-03 19:19:28 -04:00
BEGIN_SHADER_PARAMETER_STRUCT ( FBloomSetupParameters , )
SHADER_PARAMETER_STRUCT_REF ( FViewUniformShaderParameters , View )
SHADER_PARAMETER_STRUCT ( FScreenPassTextureViewportParameters , Input )
SHADER_PARAMETER_RDG_TEXTURE ( Texture2D , InputTexture )
SHADER_PARAMETER_SAMPLER ( SamplerState , InputSampler )
2020-09-24 00:43:27 -04:00
SHADER_PARAMETER_RDG_TEXTURE ( Texture2D , EyeAdaptationTexture )
2019-09-03 19:19:28 -04:00
SHADER_PARAMETER ( float , BloomThreshold )
END_SHADER_PARAMETER_STRUCT ( )
FBloomSetupParameters GetBloomSetupParameters (
const FViewInfo & View ,
const FScreenPassTextureViewport & InputViewport ,
FRDGTextureRef InputTexture ,
FRDGTextureRef EyeAdaptationTexture ,
float BloomThreshold )
2014-03-14 14:13:41 -04:00
{
2019-09-03 19:19:28 -04:00
FBloomSetupParameters Parameters ;
Parameters . View = View . ViewUniformBuffer ;
Parameters . Input = GetScreenPassTextureViewportParameters ( InputViewport ) ;
Parameters . InputTexture = InputTexture ;
Parameters . InputSampler = TStaticSamplerState < SF_Bilinear , AM_Clamp , AM_Clamp , AM_Clamp > : : GetRHI ( ) ;
2020-09-24 00:43:27 -04:00
Parameters . EyeAdaptationTexture = EyeAdaptationTexture ;
2019-09-03 19:19:28 -04:00
Parameters . BloomThreshold = BloomThreshold ;
return Parameters ;
}
2014-03-14 14:13:41 -04:00
2019-09-03 19:19:28 -04:00
class FBloomSetupPS : public FGlobalShader
2015-01-25 14:54:46 -05:00
{
2019-08-06 18:34:02 -04:00
public :
2019-09-03 19:19:28 -04:00
DECLARE_GLOBAL_SHADER ( FBloomSetupPS ) ;
SHADER_USE_PARAMETER_STRUCT ( FBloomSetupPS , FGlobalShader ) ;
2019-08-06 18:34:02 -04:00
BEGIN_SHADER_PARAMETER_STRUCT ( FParameters , )
2019-09-03 19:19:28 -04:00
SHADER_PARAMETER_STRUCT_INCLUDE ( FBloomSetupParameters , BloomSetup )
2021-12-07 12:33:06 -05:00
SHADER_PARAMETER ( FScreenTransform , SvPositionToInputTextureUV )
2019-08-06 18:34:02 -04:00
RENDER_TARGET_BINDING_SLOTS ( )
END_SHADER_PARAMETER_STRUCT ( )
2015-01-25 14:54:46 -05:00
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3809756)
#rb None
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
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 3761370 by Arne.Schober
DR - Added CityHash to use with conatiners and stuff. It provides good performance and high quallity across multiple platforms.
Change 3761437 by Guillaume.Abadie
Optimises motion blur compute shader for consoles.
Change 3761483 by Guillaume.Abadie
Fixes D3D11 RHI lying to dynamic resolution heuristic with t.MaxFPS.
Change 3761995 by Mark.Satterthwaite
Add the Metal compiler path to the local .pch filename to avoid problems when Xcode moves.
Change 3761996 by Mark.Satterthwaite
Emit more details when a pixel shader is found to have no outputs at all which Metal doesn't permit. More likely this is a bug in the shader compiler not configuring the in-out mask correctly...
#jira UE-52292
Change 3761999 by Mark.Satterthwaite
No need to avoid tessellation for FMetalRHICommandContext::RHIEndDrawIndexedPrimitiveUP anymore - that was from back when the tessellation logic was replicated in each RHI*Draw* implementation.
#jira UE-51937
Change 3762181 by Joe.Graf
Changed MaxShaderJobBatchSize to 25 on Mac as it reduced shader compile time by 21%
Change 3762607 by Mark.Satterthwaite
Remove accidentally included changes from 3761995.
Change 3762612 by Mark.Satterthwaite
Enable the explicit sincos intrinsic for Metal to avoid instances of UE-52477 that can cause shaders to compile incorrectly through hlslcc.
#jira UE-52477
Change 3762772 by Michael.Lentine
Move RHI calls to render thread.
Change 3763021 by Richard.Wallis
Remove shader cache tool project and implementation.
#jira UE-51613
Change 3763082 by Guillaume.Abadie
More SceneTexture, SceneColor and SceneDepth automated tests
Change 3763111 by Richard.Wallis
Clone of CL 3763033 (Release-4.18):
Fix for crash upon launching packaged game on Mac with Share Material Shader Code enabled.
#jira UE-52121
Change 3763657 by Michael.Lentine
Invalidate ddc for skeletal mesh render data so that the duplicated vertex render structures are properly serialized.
Change 3763727 by Jian.Ru
Fix Player Collision view mode. It is caused by checking an uninitialized vertex buffer so the check always fail.
#jira UE-52052
Change 3763738 by Guillaume.Abadie
Implements SSR input post process material location.
Change 3764271 by Mark.Satterthwaite
Allow ControlPointPatch lists to flow through MetalRHI as it was setup to handle this transparently - the VSHS compute shader will convert them to triangles to draw. Report the same warning as in the pipeline creation stage as this hasn't been formally validated.
#jira UE-52454
Change 3764316 by Daniel.Wright
Added AVolumetricLightmapDensityVolume - gives local control over Volumetric Lightmap density. Dropping the top mip outside of the play area in Monolith saves 20Mb (35Mb original).
Volumetric Lightmap no longer refines around static translucent geometry - saves 5Mb in Monolith
Reworked brick culling by error mechanism. Now compares error to interpolated parent lighting instead of the brick average - prevents dropping constant value bricks which are near a wall and cause leaking due to parent interpolation after being culled.
Change 3764318 by Daniel.Wright
Missing file
Change 3764321 by Daniel.Wright
Shader compiling memory optimizations
* Editor memory: Sharing uniform buffer includes and GeneratedInstancedStereo.ush per FShaderType (was previously duplicated per FShader job)
* SCW input size: Sharing uniform buffer includes and SharedEnvironment per batch
* 7.6Gb of shader job inputs in memory -> .5Gb (13x less) when doing a full shader compile of Paragon Editor
* 13.8Gb written into worker input files -> 2.9Gb (4.7x less). Global shaders are never batched when sent to SCW so unoptimized by these changes.
Change 3764595 by Daniel.Wright
Added VolumetricLightmapDensityVolume asset icons
Change 3764701 by Michael.Lentine
Add duplicated vertices merging for meshmerge.
Change 3766002 by Guillaume.Abadie
Fixes a crash in translucency.
Change 3766007 by Guillaume.Abadie
Oups.... Fixes compilation failure.
Change 3766697 by Guillaume.Abadie
Giant refactor of global shader interface for upcoming native support of permutation.
CL generated by python script.
Change 3767205 by Chris.Bunner
Deferring FMaterial::RenderingThreadShaderMap update to render-thread rather than assumption commands have been flushed.
#jira UE-50652
Change 3767207 by Chris.Bunner
Clamp fetched texture coordinates to those available on the mesh.
Change 3767209 by Chris.Bunner
PR #4203: Early-outs in UMaterialInstance parameter setters (Contributed by stefanzimecki)
#jira UE-52193
Change 3767772 by Mark.Satterthwaite
MetalShaderFormat will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely) - this ensures that the DDC can't be poisoned by incorrectly configured clients. The Editor is already setup such that if the remote shader compiler is not configured & Xcode is not available locally the shader-compiler will be invoked to generate text shaders.
#jira UE-52554
Change 3768604 by Guillaume.Abadie
Polish up with new global shader function signature.
Change 3768993 by Guillaume.Abadie
Fixes r.Upscale.Panini cvars
Change 3769478 by Mark.Satterthwaite
Move the ue4_stdlib.metal & PCH into a temporary directory that exists for the lifetime of the SCW on the remote side as well as the local one and add this path as an include directory.
#jira UE-52587
Change 3769703 by Mark.Satterthwaite
For all Metal platforms >= Metal v1.2 transform mul(a,b) into fma(a,b,0) to prevent the Apple compiler reordering operations differently between the base & depth passes which results in variance in the position output.
For iOS disable fast-math when the vertex-shader uses World-Position-Offset because there are additional problems on the iOS shader compiler that result in position variance even with the above fix - WPO performance will suffer but I don't have any alternatives.
Remove the depth-offset hack from the depth-only vertex shader again.
#jira UES-5651
Change 3769763 by Mark.Satterthwaite
Handle swizzle's in the hlslcc fma identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up.
Change 3769849 by Mark.Satterthwaite
Fix CIS error.
Change 3770517 by Richard.Wallis
Fix for crash when creating a new media texture (AppleIntelHD5000GraphicsMTLDriver!SamplerStage::bindSamplerToTexture()). Missing texture resource for binding. Old InitDynamicRHI() code has been refactored out into seperate functions which leaves us on Mac with a NULL resource initially after creation which Metal doesn't like. This fix puts InitDynamicRHI down the default setup/clear path which inits default resources - I don't think we should use a global dummy in this instance as this is a render target.
#jira UE-51940
Change 3770688 by Uriel.Doyon
Fixed texture resolution returning 0 when running blueprint construction scripts at cook time.
Change 3771115 by Mark.Satterthwaite
Report errors from failed attempts to compile global shaders or we can't see why things fail on non-Windows platforms.
Change 3771263 by Mark.Satterthwaite
Change the way ManualVertexFetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+). This brings iOS in the Desktop Forward renderer back into line with the Mac.
#jira UERNDR-300
Change 3773472 by Guillaume.Abadie
Fixes a crash on PIE of SimpleComposure project.
Change 3773475 by Guillaume.Abadie
Fixes bug in editor viewport caused by SSR input changes.
Change 3774677 by Arne.Schober
DR - Deprecated SetLocal from the RHICmdlist
Fixed some unnecessary PSO collisions.
Change 3777037 by Mark.Satterthwaite
Remove incorrect change that caused a reference to "accurate::sincos" to appear in some Metal shaders rather than "precise::sincos".
Change 3777122 by Mark.Satterthwaite
Back out changelist 3777037 - I'm blind and wasn't seeing the real problem was a stale shader cache...
Change 3777196 by Mark.Satterthwaite
Fix text-shader compilation on iOS 10 - maybe iOS 9 too (untested!).
We need our own make_scalar type-trait template for ue4_stdlib.metal so that we still compile with older iOS runtime compilers and we can't use as_type to directly implement the packHalf2x16/unpackHalf2x16 intrinsics for these older runtime compilers either.
Change 3779098 by Rolando.Caloca
DR - vk - Fix query index
Change 3779275 by Mark.Satterthwaite
Silence the Metal runtime compiler warning caused by use of a deprecated enum value when running text shaders compiled for Metal v1.0/1.1 on a Metal v1.2+ OS.
#jira UE-52554
Change 3779427 by Rolando.Caloca
DR - vk - Fix for allocator contention
Change 3779608 by Uriel.Doyon
Fixed invalid access in the resave package commantlet when building texture streaming material data for materials enabling tesselation.
Change 3784496 by Mark.Satterthwaite
Temporarily disable USE_OBJECT_COMPOSITING_TILE_CULLING for Metal shader compilation only - other platforms are unaffected - as it isn't working properly for some reason. need to work out what's up but don't want Distance Fields to be completely snookered in the interim.
#jira UE-52952
Change 3784608 by Rolando.Caloca
DR - Copy 3784588
- Fix for drivers returning out of date swapchains during resizes
Change 3784734 by Mark.Satterthwaite
Real fix for UE-52952 - MetalShaderFormat wasn't propagating the full thread-group value.
#jira UE-52952
Change 3784741 by Mark.Satterthwaite
More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect.
Change 3787103 by Guillaume.Abadie
Kills BuiltinSamplers UB
Change 3787207 by Guillaume.Abadie
Sorry, compile fix that were fine with local changes...
Change 3787396 by Marcus.Wassmer
PR #4271: UE-52901: Set VIS_Max meta to hidden (Contributed by projectgheist)
Change 3788028 by Peter.Sumanaseni
Working linear HDR exr output from sequencer
Change 3788536 by Mark.Satterthwaite
Track whether the Metal shader uses the discard_fragment function as when this is used but without any other outputs we know we need to bind at least one render-target or a depth-stencil surface but we don't know which. This lets us correctly error when we encounter a shader with no outputs at all which Metal doesn't permit.
#jira UE-52292
Change 3788538 by Mark.Satterthwaite
Let's try mitigating UE-46604 on Nvidia by retaining resource references in the command-buffer. This shouldn't be necessary and isn't typically on other vendors but we haven't been able to reproduce this reliably enough to get to the bottom of it.
#jira UE-46604
Change 3789083 by Guillaume.Abadie
Implements global shader permutations. Example in ScreenSpaceReflections.cpp.
Change 3789090 by Guillaume.Abadie
Fixes linux build.
Change 3789106 by Guillaume.Abadie
Fixes compilation failure in niagara plugin.
Change 3789274 by Guillaume.Abadie
Avoid hit proxies to clobber TAA's hitsory.
#jira UE-52968
Change 3789380 by Guillaume.Abadie
Back out changelist 3789083: global shader permutation because compilation failure in clang.
Change 3789648 by Guillaume.Abadie
Relands global shader permutation, with clang support.
Change 3789712 by Guillaume.Abadie
Fixes TestImage show flag with TAAU on.
#jira UE-53061
Change 3791593 by Guillaume.Abadie
Reinvalidates shaders with shader permutations.
Change 3791884 by Daniel.Wright
Added BP setter for LowerHemisphereColor
Change 3791886 by Daniel.Wright
Added LightmapType to PrimitiveComponent
* ForceVolumetric allows forcing static geometry to use Volumetric Lightmaps, which can be useful on instanced foliage where seams are prevalent. Lightmass internal caching still requires lightmap UVs and reasonable lightmap resolution.
* ForceSurface replaces bLightAsIfStatic
Improvements to Volumetric Lightmap quality needed for static geometry
* Stationary light shadowing is now dilated inside geometry
* Now doing two dilation passes since samples near geometry see inside due to ray start bias
* Refinement around geometry uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking
Lightmass debug primitives are now tied to a swarm task instead of global - allows debugging of Volumetric Lightmap tasks
Change 3792256 by Guillaume.Abadie
Fixes a bug where permutation was not actually serialised in FShader, so was ending up recompiling shader at every load.
Change 3792884 by Marcus.Wassmer
Copying //UE4/Partner-AMD to Dev-Rendering (//UE4/Dev-Rendering)
Change 3793200 by Marcus.Wassmer
Copying //UE4/Partner-IDV-SpeedTree to Dev-Rendering (//UE4/Dev-Rendering)
Speedtree 8 support
Change 3793206 by Brian.Karis
Added color grading control BlueCorrection to correct for artifacts with "electric" blues due to the ACEScg color space. Bright blue desaturates instead of going to violet.
Added color grading control ExpandGamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering.
ACES changes.
Change 3793344 by Marcus.Wassmer
Fix editortest compile
Change 3794285 by Guillaume.Abadie
Serializes PermutationId according to archive rendering version to avoid issues with old material that were serializing a shader map into UObject.
Change 3794307 by Guillaume.Abadie
Resaves uassets that were modified between 3789648 and 3794285
Change 3794627 by Mark.Satterthwaite
Implement two components for MTLPP, an IMP cache for Objective-C selector implementations & an interposition framework for those same selectors:
- imp_SelectorCache & friends provide the IMP caching for each of the Metal protocols which constitute most of the API, so far I've not covered the Metal classes used for the various descriptor/initializer types. Each type has its own IMPTable which caches the selector's implementation pointer and provides the mechanism to hook that implementation. As Objective-C is runtime dynamic this look up must be performed on the actual Class value returned by an object at runtime - you can't do this at compile time. Even things like NSString which appear compile-time static are really not as NSString is an alias for a class-cluster (NSString, NSMutableString, __NSInlineString and more).
- The interpose directory contains MTI* files which are the framework for interposing all the functions in Metal's runtime API - I deliberately omit the descriptor classes & read-only functions as there's no benefit to interposing them - which I can build off to create a trace tool or a superior validation layer. Right now this is Mac only as there'll be some problems to solve for iOS/tvOS due to difference in linking requirements - not insurmountable.
- Rebuild MTLPP's implementation of the C++ wrapper classes around the IMPTable's - this means we avoid all the objc_msgSend overhead for all the classes and functions whose implementations are cached. Right now the IMPTable is going to incur a look-up for all non-copy/move constructors which is suboptimal - ideally the Metal IMPTables would be cached in the Device object as they will be consistent within a single Device.
- Sort out the MTLPP availability logic - it now exports the availability warnings to the caller and internally just blithely assumes it may call the functions, the caller is responsible for ensuring that calls are made only on appropriate devices & OSes. This reduces MTLPP complexity and better fits how MetalRHI works.
- Fix a number of retain/release bugs that were lying dormant in MTLPP but exposed by the switch to IMPTables.
- Add tvOS support.
Next up, put this into MetalRHI and start fixing all the fallout.
Change 3794631 by Mark.Satterthwaite
Missed updating mtlpp's build.cs for TVOS.
Change 3794651 by Uriel.Doyon
UPointLightComponent::GetUnitsConversionFactor() now takes the cone angle as parameter. This allows to fix spotlight unit conversion when using lumens.
Change 3794720 by Guillaume.Abadie
Fixes a bug in Global{Bilinear,Trilinear}ClampedSampler that was actually doing a Point sampling.
Change 3794749 by Mark.Satterthwaite
Fix mtlpp.build.cs paths.
Change 3794856 by Mark.Satterthwaite
Fix some shadowing warnings.
Change 3795484 by Daniel.Wright
Implemented the Spherical Harmonic windowing algorithm from 'Stupid Spherical Harmonics (SH) Tricks'
New WorldSettings Lightmass property VolumetricLightmapSphericalHarmonicSmoothing controls the global amount of smoothing applied
Change 3795590 by Brian.Karis
Area light fixes
Fixed order of operations. This helps mixing of SourceRadius, SourceLength, and SoftSourceRadius.
Change 3796832 by Marcus.Wassmer
Correct shouldcache condition for new resolve shader
Change 3796884 by Marcus.Wassmer
Doing it right this time.
Change 3797196 by Mark.Satterthwaite
More updates to MTLPP to make things simpler and reduce the number of spurious Objective-C warnings that are emitted because of the way we are using the runtime.
Change 3797200 by Daniel.Wright
Lightmass now uses the highest density VolumetricLightmapDensityVolume settings that affect any part of a cell
Change 3797221 by Daniel.Wright
Reduced default SphericalHarmonicSmoothing based on RoboRecall tests. Now only active with strong direct lighting from static lights by default.
Change 3797411 by Brian.Karis
Disable ExpandGamut for old tone mapper.
Change 3797462 by Mark.Satterthwaite
More build warnings silenced after changing to the lowest possible deployment target OS for each library.
Change 3797585 by Mark.Satterthwaite
Range-based-For support in the NSArray wrapper.
Change 3797836 by Mark.Satterthwaite
Even more forward-declarations to avoid system headers poking through to the including code from mtlpp.
Change 3798027 by Mark.Satterthwaite
Fix handling of nil objects, on which no functions may be called, command-buffer retention and IMP declaration.
Change 3798154 by Mark.Satterthwaite
Fix some egregious memory leaks that rewriting to use mtlpp exposed before we carry on - don't want these slipping into 4.19.
Change 3800990 by Mark.Satterthwaite
Typedef all the completion-handler callback types in mtlpp to make future me's life easier.
Change 3801400 by Chris.Bunner
Improving automated test errors on failure to generate report data.
Change 3801726 by Mark.Satterthwaite
Correct some function availability and the command-buffer error status in mtlpp.
Change 3801808 by Chris.Bunner
Added DefaultScalability.ini to EngineTest that forces all quality levels to Engine default Epic for now to improve consistency.
Change 3801862 by Marcus.Wassmer
Update automated tests with color gamut change
Change 3802214 by Chris.Bunner
When running automated tests in and editor-locked PIE viewport, skip resizing as the editor can't handle this.
Added bindable delegate called when ScreenshotRequest is processed - Useful to allow screenshots to override and restore settings per capture.
#jira UE-53188
Change 3802243 by Chris.Bunner
Added button to automated test screenshot browser to add or replace all outstanding test reports if appropriate.
DeleteAllReports button is now only enabled whilst there are reports in the list.
Change 3802372 by Chris.Bunner
Updating more test screenshots.
Change 3803683 by Chris.Bunner
Adding more logging and multiple attempts to automated test report network save.
Added small wait on repeated operations that are known to fail.
Change 3803826 by Rolando.Caloca
DR - vk - Fix merge issue
Change 3804181 by Chris.Bunner
Tentative fix for CIS test failure.
Change 3804236 by Chris.Bunner
Additional logging for case where file write silently fails, report platform-specific error.
Change 3804303 by zachary.wilson
Cleaning up assets in QAGame saved with empty engine versions to resolve warnings seen when launching on
Change 3804410 by Chris.Bunner
Added additional logging when automated screenshot test fails due to size mismatch.
Mismatched bounds are colored red in the delta.
Change 3804455 by Mark.Satterthwaite
Fix a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor - interacting with menu's was particularly egregious as each NSMenu would leak after you move away.
#jira NA
Change 3804667 by Chris.Bunner
Speculative CIS fixes.
Change 3806008 by Chris.Bunner
Partially reimplementing backed-out CL 3804181 to improve consistency of how automated screenshot test settings are applied/restored.
#tests CIS preflight job 8174412
Change 3806909 by Mark.Satterthwaite
Use the vertex-shader's in-out mask to ensure that we only validate legitmate vertex-streams in Metal's DrawIndexedPrimitive implementation.
#jira UE-53046
Change 3807059 by laz.matech
Checking in QAGame Rendering Map, QA-PhysicalLightingUnits, for testing Physical Light Units.
Wanted to get this in before copy up.
#Jira none
Change 3807726 by Chris.Bunner
Removed a check that we can't fix up. The check hits unbound buffers which it assumes means a failure but is actually due to m.v.fetch. We don't have the information available to know which are which removed from the input without reading from the shader.
#jira UE-53046
Change 3807800 by Guillaume.Abadie
Fixes some warning in shader headers.
Change 3807804 by Guillaume.Abadie
Back out changelist 3807800
Change 3807807 by Guillaume.Abadie
Relands shader header warnings.
Change 3808046 by Chris.Bunner
Dropping a new automated test error back to a warning as this may lead to genuine issues being ignored in the short term.
Change 3809579 by Chris.Bunner
Back out changelist 3774677.
#jira UE-53483
Change 3809620 by Chris.Bunner
Updating animated cloth test screenshot.
Change 3803629 by Chris.Bunner
Rebuilt CornellBox and DistanceField test maps, updated screenshots.
Change 3787045 by Guillaume.Abadie
Moves some global samplers to Common.ush
Change 3809756 by Chris.Bunner
Updating animated cloth test screenshot.
[CL 3809764 by Chris Bunner in Main branch]
2017-12-15 12:47:47 -05:00
static bool ShouldCompilePermutation ( const FGlobalShaderPermutationParameters & Parameters )
2015-01-25 14:54:46 -05:00
{
2019-08-13 13:51:12 -04:00
return IsFeatureLevelSupported ( Parameters . Platform , ERHIFeatureLevel : : SM5 ) ;
2015-01-25 14:54:46 -05:00
}
} ;
2019-09-03 19:19:28 -04:00
IMPLEMENT_GLOBAL_SHADER ( FBloomSetupPS , " /Engine/Private/PostProcessBloom.usf " , " BloomSetupPS " , SF_Pixel ) ;
2015-01-25 14:54:46 -05:00
2019-09-03 19:19:28 -04:00
class FBloomSetupCS : public FGlobalShader
2015-01-25 14:54:46 -05:00
{
2019-09-03 19:19:28 -04:00
public :
DECLARE_GLOBAL_SHADER ( FBloomSetupCS ) ;
SHADER_USE_PARAMETER_STRUCT ( FBloomSetupCS , FGlobalShader ) ;
2015-01-25 14:54:46 -05:00
2019-09-03 19:19:28 -04:00
BEGIN_SHADER_PARAMETER_STRUCT ( FParameters , )
SHADER_PARAMETER_STRUCT_INCLUDE ( FBloomSetupParameters , BloomSetup )
SHADER_PARAMETER_RDG_TEXTURE_UAV ( RWTexture2D < float4 > , RWOutputTexture )
END_SHADER_PARAMETER_STRUCT ( )
2015-01-25 16:45:04 -05:00
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3809756)
#rb None
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
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 3761370 by Arne.Schober
DR - Added CityHash to use with conatiners and stuff. It provides good performance and high quallity across multiple platforms.
Change 3761437 by Guillaume.Abadie
Optimises motion blur compute shader for consoles.
Change 3761483 by Guillaume.Abadie
Fixes D3D11 RHI lying to dynamic resolution heuristic with t.MaxFPS.
Change 3761995 by Mark.Satterthwaite
Add the Metal compiler path to the local .pch filename to avoid problems when Xcode moves.
Change 3761996 by Mark.Satterthwaite
Emit more details when a pixel shader is found to have no outputs at all which Metal doesn't permit. More likely this is a bug in the shader compiler not configuring the in-out mask correctly...
#jira UE-52292
Change 3761999 by Mark.Satterthwaite
No need to avoid tessellation for FMetalRHICommandContext::RHIEndDrawIndexedPrimitiveUP anymore - that was from back when the tessellation logic was replicated in each RHI*Draw* implementation.
#jira UE-51937
Change 3762181 by Joe.Graf
Changed MaxShaderJobBatchSize to 25 on Mac as it reduced shader compile time by 21%
Change 3762607 by Mark.Satterthwaite
Remove accidentally included changes from 3761995.
Change 3762612 by Mark.Satterthwaite
Enable the explicit sincos intrinsic for Metal to avoid instances of UE-52477 that can cause shaders to compile incorrectly through hlslcc.
#jira UE-52477
Change 3762772 by Michael.Lentine
Move RHI calls to render thread.
Change 3763021 by Richard.Wallis
Remove shader cache tool project and implementation.
#jira UE-51613
Change 3763082 by Guillaume.Abadie
More SceneTexture, SceneColor and SceneDepth automated tests
Change 3763111 by Richard.Wallis
Clone of CL 3763033 (Release-4.18):
Fix for crash upon launching packaged game on Mac with Share Material Shader Code enabled.
#jira UE-52121
Change 3763657 by Michael.Lentine
Invalidate ddc for skeletal mesh render data so that the duplicated vertex render structures are properly serialized.
Change 3763727 by Jian.Ru
Fix Player Collision view mode. It is caused by checking an uninitialized vertex buffer so the check always fail.
#jira UE-52052
Change 3763738 by Guillaume.Abadie
Implements SSR input post process material location.
Change 3764271 by Mark.Satterthwaite
Allow ControlPointPatch lists to flow through MetalRHI as it was setup to handle this transparently - the VSHS compute shader will convert them to triangles to draw. Report the same warning as in the pipeline creation stage as this hasn't been formally validated.
#jira UE-52454
Change 3764316 by Daniel.Wright
Added AVolumetricLightmapDensityVolume - gives local control over Volumetric Lightmap density. Dropping the top mip outside of the play area in Monolith saves 20Mb (35Mb original).
Volumetric Lightmap no longer refines around static translucent geometry - saves 5Mb in Monolith
Reworked brick culling by error mechanism. Now compares error to interpolated parent lighting instead of the brick average - prevents dropping constant value bricks which are near a wall and cause leaking due to parent interpolation after being culled.
Change 3764318 by Daniel.Wright
Missing file
Change 3764321 by Daniel.Wright
Shader compiling memory optimizations
* Editor memory: Sharing uniform buffer includes and GeneratedInstancedStereo.ush per FShaderType (was previously duplicated per FShader job)
* SCW input size: Sharing uniform buffer includes and SharedEnvironment per batch
* 7.6Gb of shader job inputs in memory -> .5Gb (13x less) when doing a full shader compile of Paragon Editor
* 13.8Gb written into worker input files -> 2.9Gb (4.7x less). Global shaders are never batched when sent to SCW so unoptimized by these changes.
Change 3764595 by Daniel.Wright
Added VolumetricLightmapDensityVolume asset icons
Change 3764701 by Michael.Lentine
Add duplicated vertices merging for meshmerge.
Change 3766002 by Guillaume.Abadie
Fixes a crash in translucency.
Change 3766007 by Guillaume.Abadie
Oups.... Fixes compilation failure.
Change 3766697 by Guillaume.Abadie
Giant refactor of global shader interface for upcoming native support of permutation.
CL generated by python script.
Change 3767205 by Chris.Bunner
Deferring FMaterial::RenderingThreadShaderMap update to render-thread rather than assumption commands have been flushed.
#jira UE-50652
Change 3767207 by Chris.Bunner
Clamp fetched texture coordinates to those available on the mesh.
Change 3767209 by Chris.Bunner
PR #4203: Early-outs in UMaterialInstance parameter setters (Contributed by stefanzimecki)
#jira UE-52193
Change 3767772 by Mark.Satterthwaite
MetalShaderFormat will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely) - this ensures that the DDC can't be poisoned by incorrectly configured clients. The Editor is already setup such that if the remote shader compiler is not configured & Xcode is not available locally the shader-compiler will be invoked to generate text shaders.
#jira UE-52554
Change 3768604 by Guillaume.Abadie
Polish up with new global shader function signature.
Change 3768993 by Guillaume.Abadie
Fixes r.Upscale.Panini cvars
Change 3769478 by Mark.Satterthwaite
Move the ue4_stdlib.metal & PCH into a temporary directory that exists for the lifetime of the SCW on the remote side as well as the local one and add this path as an include directory.
#jira UE-52587
Change 3769703 by Mark.Satterthwaite
For all Metal platforms >= Metal v1.2 transform mul(a,b) into fma(a,b,0) to prevent the Apple compiler reordering operations differently between the base & depth passes which results in variance in the position output.
For iOS disable fast-math when the vertex-shader uses World-Position-Offset because there are additional problems on the iOS shader compiler that result in position variance even with the above fix - WPO performance will suffer but I don't have any alternatives.
Remove the depth-offset hack from the depth-only vertex shader again.
#jira UES-5651
Change 3769763 by Mark.Satterthwaite
Handle swizzle's in the hlslcc fma identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up.
Change 3769849 by Mark.Satterthwaite
Fix CIS error.
Change 3770517 by Richard.Wallis
Fix for crash when creating a new media texture (AppleIntelHD5000GraphicsMTLDriver!SamplerStage::bindSamplerToTexture()). Missing texture resource for binding. Old InitDynamicRHI() code has been refactored out into seperate functions which leaves us on Mac with a NULL resource initially after creation which Metal doesn't like. This fix puts InitDynamicRHI down the default setup/clear path which inits default resources - I don't think we should use a global dummy in this instance as this is a render target.
#jira UE-51940
Change 3770688 by Uriel.Doyon
Fixed texture resolution returning 0 when running blueprint construction scripts at cook time.
Change 3771115 by Mark.Satterthwaite
Report errors from failed attempts to compile global shaders or we can't see why things fail on non-Windows platforms.
Change 3771263 by Mark.Satterthwaite
Change the way ManualVertexFetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+). This brings iOS in the Desktop Forward renderer back into line with the Mac.
#jira UERNDR-300
Change 3773472 by Guillaume.Abadie
Fixes a crash on PIE of SimpleComposure project.
Change 3773475 by Guillaume.Abadie
Fixes bug in editor viewport caused by SSR input changes.
Change 3774677 by Arne.Schober
DR - Deprecated SetLocal from the RHICmdlist
Fixed some unnecessary PSO collisions.
Change 3777037 by Mark.Satterthwaite
Remove incorrect change that caused a reference to "accurate::sincos" to appear in some Metal shaders rather than "precise::sincos".
Change 3777122 by Mark.Satterthwaite
Back out changelist 3777037 - I'm blind and wasn't seeing the real problem was a stale shader cache...
Change 3777196 by Mark.Satterthwaite
Fix text-shader compilation on iOS 10 - maybe iOS 9 too (untested!).
We need our own make_scalar type-trait template for ue4_stdlib.metal so that we still compile with older iOS runtime compilers and we can't use as_type to directly implement the packHalf2x16/unpackHalf2x16 intrinsics for these older runtime compilers either.
Change 3779098 by Rolando.Caloca
DR - vk - Fix query index
Change 3779275 by Mark.Satterthwaite
Silence the Metal runtime compiler warning caused by use of a deprecated enum value when running text shaders compiled for Metal v1.0/1.1 on a Metal v1.2+ OS.
#jira UE-52554
Change 3779427 by Rolando.Caloca
DR - vk - Fix for allocator contention
Change 3779608 by Uriel.Doyon
Fixed invalid access in the resave package commantlet when building texture streaming material data for materials enabling tesselation.
Change 3784496 by Mark.Satterthwaite
Temporarily disable USE_OBJECT_COMPOSITING_TILE_CULLING for Metal shader compilation only - other platforms are unaffected - as it isn't working properly for some reason. need to work out what's up but don't want Distance Fields to be completely snookered in the interim.
#jira UE-52952
Change 3784608 by Rolando.Caloca
DR - Copy 3784588
- Fix for drivers returning out of date swapchains during resizes
Change 3784734 by Mark.Satterthwaite
Real fix for UE-52952 - MetalShaderFormat wasn't propagating the full thread-group value.
#jira UE-52952
Change 3784741 by Mark.Satterthwaite
More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect.
Change 3787103 by Guillaume.Abadie
Kills BuiltinSamplers UB
Change 3787207 by Guillaume.Abadie
Sorry, compile fix that were fine with local changes...
Change 3787396 by Marcus.Wassmer
PR #4271: UE-52901: Set VIS_Max meta to hidden (Contributed by projectgheist)
Change 3788028 by Peter.Sumanaseni
Working linear HDR exr output from sequencer
Change 3788536 by Mark.Satterthwaite
Track whether the Metal shader uses the discard_fragment function as when this is used but without any other outputs we know we need to bind at least one render-target or a depth-stencil surface but we don't know which. This lets us correctly error when we encounter a shader with no outputs at all which Metal doesn't permit.
#jira UE-52292
Change 3788538 by Mark.Satterthwaite
Let's try mitigating UE-46604 on Nvidia by retaining resource references in the command-buffer. This shouldn't be necessary and isn't typically on other vendors but we haven't been able to reproduce this reliably enough to get to the bottom of it.
#jira UE-46604
Change 3789083 by Guillaume.Abadie
Implements global shader permutations. Example in ScreenSpaceReflections.cpp.
Change 3789090 by Guillaume.Abadie
Fixes linux build.
Change 3789106 by Guillaume.Abadie
Fixes compilation failure in niagara plugin.
Change 3789274 by Guillaume.Abadie
Avoid hit proxies to clobber TAA's hitsory.
#jira UE-52968
Change 3789380 by Guillaume.Abadie
Back out changelist 3789083: global shader permutation because compilation failure in clang.
Change 3789648 by Guillaume.Abadie
Relands global shader permutation, with clang support.
Change 3789712 by Guillaume.Abadie
Fixes TestImage show flag with TAAU on.
#jira UE-53061
Change 3791593 by Guillaume.Abadie
Reinvalidates shaders with shader permutations.
Change 3791884 by Daniel.Wright
Added BP setter for LowerHemisphereColor
Change 3791886 by Daniel.Wright
Added LightmapType to PrimitiveComponent
* ForceVolumetric allows forcing static geometry to use Volumetric Lightmaps, which can be useful on instanced foliage where seams are prevalent. Lightmass internal caching still requires lightmap UVs and reasonable lightmap resolution.
* ForceSurface replaces bLightAsIfStatic
Improvements to Volumetric Lightmap quality needed for static geometry
* Stationary light shadowing is now dilated inside geometry
* Now doing two dilation passes since samples near geometry see inside due to ray start bias
* Refinement around geometry uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking
Lightmass debug primitives are now tied to a swarm task instead of global - allows debugging of Volumetric Lightmap tasks
Change 3792256 by Guillaume.Abadie
Fixes a bug where permutation was not actually serialised in FShader, so was ending up recompiling shader at every load.
Change 3792884 by Marcus.Wassmer
Copying //UE4/Partner-AMD to Dev-Rendering (//UE4/Dev-Rendering)
Change 3793200 by Marcus.Wassmer
Copying //UE4/Partner-IDV-SpeedTree to Dev-Rendering (//UE4/Dev-Rendering)
Speedtree 8 support
Change 3793206 by Brian.Karis
Added color grading control BlueCorrection to correct for artifacts with "electric" blues due to the ACEScg color space. Bright blue desaturates instead of going to violet.
Added color grading control ExpandGamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering.
ACES changes.
Change 3793344 by Marcus.Wassmer
Fix editortest compile
Change 3794285 by Guillaume.Abadie
Serializes PermutationId according to archive rendering version to avoid issues with old material that were serializing a shader map into UObject.
Change 3794307 by Guillaume.Abadie
Resaves uassets that were modified between 3789648 and 3794285
Change 3794627 by Mark.Satterthwaite
Implement two components for MTLPP, an IMP cache for Objective-C selector implementations & an interposition framework for those same selectors:
- imp_SelectorCache & friends provide the IMP caching for each of the Metal protocols which constitute most of the API, so far I've not covered the Metal classes used for the various descriptor/initializer types. Each type has its own IMPTable which caches the selector's implementation pointer and provides the mechanism to hook that implementation. As Objective-C is runtime dynamic this look up must be performed on the actual Class value returned by an object at runtime - you can't do this at compile time. Even things like NSString which appear compile-time static are really not as NSString is an alias for a class-cluster (NSString, NSMutableString, __NSInlineString and more).
- The interpose directory contains MTI* files which are the framework for interposing all the functions in Metal's runtime API - I deliberately omit the descriptor classes & read-only functions as there's no benefit to interposing them - which I can build off to create a trace tool or a superior validation layer. Right now this is Mac only as there'll be some problems to solve for iOS/tvOS due to difference in linking requirements - not insurmountable.
- Rebuild MTLPP's implementation of the C++ wrapper classes around the IMPTable's - this means we avoid all the objc_msgSend overhead for all the classes and functions whose implementations are cached. Right now the IMPTable is going to incur a look-up for all non-copy/move constructors which is suboptimal - ideally the Metal IMPTables would be cached in the Device object as they will be consistent within a single Device.
- Sort out the MTLPP availability logic - it now exports the availability warnings to the caller and internally just blithely assumes it may call the functions, the caller is responsible for ensuring that calls are made only on appropriate devices & OSes. This reduces MTLPP complexity and better fits how MetalRHI works.
- Fix a number of retain/release bugs that were lying dormant in MTLPP but exposed by the switch to IMPTables.
- Add tvOS support.
Next up, put this into MetalRHI and start fixing all the fallout.
Change 3794631 by Mark.Satterthwaite
Missed updating mtlpp's build.cs for TVOS.
Change 3794651 by Uriel.Doyon
UPointLightComponent::GetUnitsConversionFactor() now takes the cone angle as parameter. This allows to fix spotlight unit conversion when using lumens.
Change 3794720 by Guillaume.Abadie
Fixes a bug in Global{Bilinear,Trilinear}ClampedSampler that was actually doing a Point sampling.
Change 3794749 by Mark.Satterthwaite
Fix mtlpp.build.cs paths.
Change 3794856 by Mark.Satterthwaite
Fix some shadowing warnings.
Change 3795484 by Daniel.Wright
Implemented the Spherical Harmonic windowing algorithm from 'Stupid Spherical Harmonics (SH) Tricks'
New WorldSettings Lightmass property VolumetricLightmapSphericalHarmonicSmoothing controls the global amount of smoothing applied
Change 3795590 by Brian.Karis
Area light fixes
Fixed order of operations. This helps mixing of SourceRadius, SourceLength, and SoftSourceRadius.
Change 3796832 by Marcus.Wassmer
Correct shouldcache condition for new resolve shader
Change 3796884 by Marcus.Wassmer
Doing it right this time.
Change 3797196 by Mark.Satterthwaite
More updates to MTLPP to make things simpler and reduce the number of spurious Objective-C warnings that are emitted because of the way we are using the runtime.
Change 3797200 by Daniel.Wright
Lightmass now uses the highest density VolumetricLightmapDensityVolume settings that affect any part of a cell
Change 3797221 by Daniel.Wright
Reduced default SphericalHarmonicSmoothing based on RoboRecall tests. Now only active with strong direct lighting from static lights by default.
Change 3797411 by Brian.Karis
Disable ExpandGamut for old tone mapper.
Change 3797462 by Mark.Satterthwaite
More build warnings silenced after changing to the lowest possible deployment target OS for each library.
Change 3797585 by Mark.Satterthwaite
Range-based-For support in the NSArray wrapper.
Change 3797836 by Mark.Satterthwaite
Even more forward-declarations to avoid system headers poking through to the including code from mtlpp.
Change 3798027 by Mark.Satterthwaite
Fix handling of nil objects, on which no functions may be called, command-buffer retention and IMP declaration.
Change 3798154 by Mark.Satterthwaite
Fix some egregious memory leaks that rewriting to use mtlpp exposed before we carry on - don't want these slipping into 4.19.
Change 3800990 by Mark.Satterthwaite
Typedef all the completion-handler callback types in mtlpp to make future me's life easier.
Change 3801400 by Chris.Bunner
Improving automated test errors on failure to generate report data.
Change 3801726 by Mark.Satterthwaite
Correct some function availability and the command-buffer error status in mtlpp.
Change 3801808 by Chris.Bunner
Added DefaultScalability.ini to EngineTest that forces all quality levels to Engine default Epic for now to improve consistency.
Change 3801862 by Marcus.Wassmer
Update automated tests with color gamut change
Change 3802214 by Chris.Bunner
When running automated tests in and editor-locked PIE viewport, skip resizing as the editor can't handle this.
Added bindable delegate called when ScreenshotRequest is processed - Useful to allow screenshots to override and restore settings per capture.
#jira UE-53188
Change 3802243 by Chris.Bunner
Added button to automated test screenshot browser to add or replace all outstanding test reports if appropriate.
DeleteAllReports button is now only enabled whilst there are reports in the list.
Change 3802372 by Chris.Bunner
Updating more test screenshots.
Change 3803683 by Chris.Bunner
Adding more logging and multiple attempts to automated test report network save.
Added small wait on repeated operations that are known to fail.
Change 3803826 by Rolando.Caloca
DR - vk - Fix merge issue
Change 3804181 by Chris.Bunner
Tentative fix for CIS test failure.
Change 3804236 by Chris.Bunner
Additional logging for case where file write silently fails, report platform-specific error.
Change 3804303 by zachary.wilson
Cleaning up assets in QAGame saved with empty engine versions to resolve warnings seen when launching on
Change 3804410 by Chris.Bunner
Added additional logging when automated screenshot test fails due to size mismatch.
Mismatched bounds are colored red in the delta.
Change 3804455 by Mark.Satterthwaite
Fix a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor - interacting with menu's was particularly egregious as each NSMenu would leak after you move away.
#jira NA
Change 3804667 by Chris.Bunner
Speculative CIS fixes.
Change 3806008 by Chris.Bunner
Partially reimplementing backed-out CL 3804181 to improve consistency of how automated screenshot test settings are applied/restored.
#tests CIS preflight job 8174412
Change 3806909 by Mark.Satterthwaite
Use the vertex-shader's in-out mask to ensure that we only validate legitmate vertex-streams in Metal's DrawIndexedPrimitive implementation.
#jira UE-53046
Change 3807059 by laz.matech
Checking in QAGame Rendering Map, QA-PhysicalLightingUnits, for testing Physical Light Units.
Wanted to get this in before copy up.
#Jira none
Change 3807726 by Chris.Bunner
Removed a check that we can't fix up. The check hits unbound buffers which it assumes means a failure but is actually due to m.v.fetch. We don't have the information available to know which are which removed from the input without reading from the shader.
#jira UE-53046
Change 3807800 by Guillaume.Abadie
Fixes some warning in shader headers.
Change 3807804 by Guillaume.Abadie
Back out changelist 3807800
Change 3807807 by Guillaume.Abadie
Relands shader header warnings.
Change 3808046 by Chris.Bunner
Dropping a new automated test error back to a warning as this may lead to genuine issues being ignored in the short term.
Change 3809579 by Chris.Bunner
Back out changelist 3774677.
#jira UE-53483
Change 3809620 by Chris.Bunner
Updating animated cloth test screenshot.
Change 3803629 by Chris.Bunner
Rebuilt CornellBox and DistanceField test maps, updated screenshots.
Change 3787045 by Guillaume.Abadie
Moves some global samplers to Common.ush
Change 3809756 by Chris.Bunner
Updating animated cloth test screenshot.
[CL 3809764 by Chris Bunner in Main branch]
2017-12-15 12:47:47 -05:00
static bool ShouldCompilePermutation ( const FGlobalShaderPermutationParameters & Parameters )
2015-01-25 16:45:04 -05:00
{
2019-08-13 13:51:12 -04:00
return IsFeatureLevelSupported ( Parameters . Platform , ERHIFeatureLevel : : SM5 ) ;
2015-01-25 16:45:04 -05:00
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3809756)
#rb None
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
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 3761370 by Arne.Schober
DR - Added CityHash to use with conatiners and stuff. It provides good performance and high quallity across multiple platforms.
Change 3761437 by Guillaume.Abadie
Optimises motion blur compute shader for consoles.
Change 3761483 by Guillaume.Abadie
Fixes D3D11 RHI lying to dynamic resolution heuristic with t.MaxFPS.
Change 3761995 by Mark.Satterthwaite
Add the Metal compiler path to the local .pch filename to avoid problems when Xcode moves.
Change 3761996 by Mark.Satterthwaite
Emit more details when a pixel shader is found to have no outputs at all which Metal doesn't permit. More likely this is a bug in the shader compiler not configuring the in-out mask correctly...
#jira UE-52292
Change 3761999 by Mark.Satterthwaite
No need to avoid tessellation for FMetalRHICommandContext::RHIEndDrawIndexedPrimitiveUP anymore - that was from back when the tessellation logic was replicated in each RHI*Draw* implementation.
#jira UE-51937
Change 3762181 by Joe.Graf
Changed MaxShaderJobBatchSize to 25 on Mac as it reduced shader compile time by 21%
Change 3762607 by Mark.Satterthwaite
Remove accidentally included changes from 3761995.
Change 3762612 by Mark.Satterthwaite
Enable the explicit sincos intrinsic for Metal to avoid instances of UE-52477 that can cause shaders to compile incorrectly through hlslcc.
#jira UE-52477
Change 3762772 by Michael.Lentine
Move RHI calls to render thread.
Change 3763021 by Richard.Wallis
Remove shader cache tool project and implementation.
#jira UE-51613
Change 3763082 by Guillaume.Abadie
More SceneTexture, SceneColor and SceneDepth automated tests
Change 3763111 by Richard.Wallis
Clone of CL 3763033 (Release-4.18):
Fix for crash upon launching packaged game on Mac with Share Material Shader Code enabled.
#jira UE-52121
Change 3763657 by Michael.Lentine
Invalidate ddc for skeletal mesh render data so that the duplicated vertex render structures are properly serialized.
Change 3763727 by Jian.Ru
Fix Player Collision view mode. It is caused by checking an uninitialized vertex buffer so the check always fail.
#jira UE-52052
Change 3763738 by Guillaume.Abadie
Implements SSR input post process material location.
Change 3764271 by Mark.Satterthwaite
Allow ControlPointPatch lists to flow through MetalRHI as it was setup to handle this transparently - the VSHS compute shader will convert them to triangles to draw. Report the same warning as in the pipeline creation stage as this hasn't been formally validated.
#jira UE-52454
Change 3764316 by Daniel.Wright
Added AVolumetricLightmapDensityVolume - gives local control over Volumetric Lightmap density. Dropping the top mip outside of the play area in Monolith saves 20Mb (35Mb original).
Volumetric Lightmap no longer refines around static translucent geometry - saves 5Mb in Monolith
Reworked brick culling by error mechanism. Now compares error to interpolated parent lighting instead of the brick average - prevents dropping constant value bricks which are near a wall and cause leaking due to parent interpolation after being culled.
Change 3764318 by Daniel.Wright
Missing file
Change 3764321 by Daniel.Wright
Shader compiling memory optimizations
* Editor memory: Sharing uniform buffer includes and GeneratedInstancedStereo.ush per FShaderType (was previously duplicated per FShader job)
* SCW input size: Sharing uniform buffer includes and SharedEnvironment per batch
* 7.6Gb of shader job inputs in memory -> .5Gb (13x less) when doing a full shader compile of Paragon Editor
* 13.8Gb written into worker input files -> 2.9Gb (4.7x less). Global shaders are never batched when sent to SCW so unoptimized by these changes.
Change 3764595 by Daniel.Wright
Added VolumetricLightmapDensityVolume asset icons
Change 3764701 by Michael.Lentine
Add duplicated vertices merging for meshmerge.
Change 3766002 by Guillaume.Abadie
Fixes a crash in translucency.
Change 3766007 by Guillaume.Abadie
Oups.... Fixes compilation failure.
Change 3766697 by Guillaume.Abadie
Giant refactor of global shader interface for upcoming native support of permutation.
CL generated by python script.
Change 3767205 by Chris.Bunner
Deferring FMaterial::RenderingThreadShaderMap update to render-thread rather than assumption commands have been flushed.
#jira UE-50652
Change 3767207 by Chris.Bunner
Clamp fetched texture coordinates to those available on the mesh.
Change 3767209 by Chris.Bunner
PR #4203: Early-outs in UMaterialInstance parameter setters (Contributed by stefanzimecki)
#jira UE-52193
Change 3767772 by Mark.Satterthwaite
MetalShaderFormat will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely) - this ensures that the DDC can't be poisoned by incorrectly configured clients. The Editor is already setup such that if the remote shader compiler is not configured & Xcode is not available locally the shader-compiler will be invoked to generate text shaders.
#jira UE-52554
Change 3768604 by Guillaume.Abadie
Polish up with new global shader function signature.
Change 3768993 by Guillaume.Abadie
Fixes r.Upscale.Panini cvars
Change 3769478 by Mark.Satterthwaite
Move the ue4_stdlib.metal & PCH into a temporary directory that exists for the lifetime of the SCW on the remote side as well as the local one and add this path as an include directory.
#jira UE-52587
Change 3769703 by Mark.Satterthwaite
For all Metal platforms >= Metal v1.2 transform mul(a,b) into fma(a,b,0) to prevent the Apple compiler reordering operations differently between the base & depth passes which results in variance in the position output.
For iOS disable fast-math when the vertex-shader uses World-Position-Offset because there are additional problems on the iOS shader compiler that result in position variance even with the above fix - WPO performance will suffer but I don't have any alternatives.
Remove the depth-offset hack from the depth-only vertex shader again.
#jira UES-5651
Change 3769763 by Mark.Satterthwaite
Handle swizzle's in the hlslcc fma identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up.
Change 3769849 by Mark.Satterthwaite
Fix CIS error.
Change 3770517 by Richard.Wallis
Fix for crash when creating a new media texture (AppleIntelHD5000GraphicsMTLDriver!SamplerStage::bindSamplerToTexture()). Missing texture resource for binding. Old InitDynamicRHI() code has been refactored out into seperate functions which leaves us on Mac with a NULL resource initially after creation which Metal doesn't like. This fix puts InitDynamicRHI down the default setup/clear path which inits default resources - I don't think we should use a global dummy in this instance as this is a render target.
#jira UE-51940
Change 3770688 by Uriel.Doyon
Fixed texture resolution returning 0 when running blueprint construction scripts at cook time.
Change 3771115 by Mark.Satterthwaite
Report errors from failed attempts to compile global shaders or we can't see why things fail on non-Windows platforms.
Change 3771263 by Mark.Satterthwaite
Change the way ManualVertexFetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+). This brings iOS in the Desktop Forward renderer back into line with the Mac.
#jira UERNDR-300
Change 3773472 by Guillaume.Abadie
Fixes a crash on PIE of SimpleComposure project.
Change 3773475 by Guillaume.Abadie
Fixes bug in editor viewport caused by SSR input changes.
Change 3774677 by Arne.Schober
DR - Deprecated SetLocal from the RHICmdlist
Fixed some unnecessary PSO collisions.
Change 3777037 by Mark.Satterthwaite
Remove incorrect change that caused a reference to "accurate::sincos" to appear in some Metal shaders rather than "precise::sincos".
Change 3777122 by Mark.Satterthwaite
Back out changelist 3777037 - I'm blind and wasn't seeing the real problem was a stale shader cache...
Change 3777196 by Mark.Satterthwaite
Fix text-shader compilation on iOS 10 - maybe iOS 9 too (untested!).
We need our own make_scalar type-trait template for ue4_stdlib.metal so that we still compile with older iOS runtime compilers and we can't use as_type to directly implement the packHalf2x16/unpackHalf2x16 intrinsics for these older runtime compilers either.
Change 3779098 by Rolando.Caloca
DR - vk - Fix query index
Change 3779275 by Mark.Satterthwaite
Silence the Metal runtime compiler warning caused by use of a deprecated enum value when running text shaders compiled for Metal v1.0/1.1 on a Metal v1.2+ OS.
#jira UE-52554
Change 3779427 by Rolando.Caloca
DR - vk - Fix for allocator contention
Change 3779608 by Uriel.Doyon
Fixed invalid access in the resave package commantlet when building texture streaming material data for materials enabling tesselation.
Change 3784496 by Mark.Satterthwaite
Temporarily disable USE_OBJECT_COMPOSITING_TILE_CULLING for Metal shader compilation only - other platforms are unaffected - as it isn't working properly for some reason. need to work out what's up but don't want Distance Fields to be completely snookered in the interim.
#jira UE-52952
Change 3784608 by Rolando.Caloca
DR - Copy 3784588
- Fix for drivers returning out of date swapchains during resizes
Change 3784734 by Mark.Satterthwaite
Real fix for UE-52952 - MetalShaderFormat wasn't propagating the full thread-group value.
#jira UE-52952
Change 3784741 by Mark.Satterthwaite
More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect.
Change 3787103 by Guillaume.Abadie
Kills BuiltinSamplers UB
Change 3787207 by Guillaume.Abadie
Sorry, compile fix that were fine with local changes...
Change 3787396 by Marcus.Wassmer
PR #4271: UE-52901: Set VIS_Max meta to hidden (Contributed by projectgheist)
Change 3788028 by Peter.Sumanaseni
Working linear HDR exr output from sequencer
Change 3788536 by Mark.Satterthwaite
Track whether the Metal shader uses the discard_fragment function as when this is used but without any other outputs we know we need to bind at least one render-target or a depth-stencil surface but we don't know which. This lets us correctly error when we encounter a shader with no outputs at all which Metal doesn't permit.
#jira UE-52292
Change 3788538 by Mark.Satterthwaite
Let's try mitigating UE-46604 on Nvidia by retaining resource references in the command-buffer. This shouldn't be necessary and isn't typically on other vendors but we haven't been able to reproduce this reliably enough to get to the bottom of it.
#jira UE-46604
Change 3789083 by Guillaume.Abadie
Implements global shader permutations. Example in ScreenSpaceReflections.cpp.
Change 3789090 by Guillaume.Abadie
Fixes linux build.
Change 3789106 by Guillaume.Abadie
Fixes compilation failure in niagara plugin.
Change 3789274 by Guillaume.Abadie
Avoid hit proxies to clobber TAA's hitsory.
#jira UE-52968
Change 3789380 by Guillaume.Abadie
Back out changelist 3789083: global shader permutation because compilation failure in clang.
Change 3789648 by Guillaume.Abadie
Relands global shader permutation, with clang support.
Change 3789712 by Guillaume.Abadie
Fixes TestImage show flag with TAAU on.
#jira UE-53061
Change 3791593 by Guillaume.Abadie
Reinvalidates shaders with shader permutations.
Change 3791884 by Daniel.Wright
Added BP setter for LowerHemisphereColor
Change 3791886 by Daniel.Wright
Added LightmapType to PrimitiveComponent
* ForceVolumetric allows forcing static geometry to use Volumetric Lightmaps, which can be useful on instanced foliage where seams are prevalent. Lightmass internal caching still requires lightmap UVs and reasonable lightmap resolution.
* ForceSurface replaces bLightAsIfStatic
Improvements to Volumetric Lightmap quality needed for static geometry
* Stationary light shadowing is now dilated inside geometry
* Now doing two dilation passes since samples near geometry see inside due to ray start bias
* Refinement around geometry uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking
Lightmass debug primitives are now tied to a swarm task instead of global - allows debugging of Volumetric Lightmap tasks
Change 3792256 by Guillaume.Abadie
Fixes a bug where permutation was not actually serialised in FShader, so was ending up recompiling shader at every load.
Change 3792884 by Marcus.Wassmer
Copying //UE4/Partner-AMD to Dev-Rendering (//UE4/Dev-Rendering)
Change 3793200 by Marcus.Wassmer
Copying //UE4/Partner-IDV-SpeedTree to Dev-Rendering (//UE4/Dev-Rendering)
Speedtree 8 support
Change 3793206 by Brian.Karis
Added color grading control BlueCorrection to correct for artifacts with "electric" blues due to the ACEScg color space. Bright blue desaturates instead of going to violet.
Added color grading control ExpandGamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering.
ACES changes.
Change 3793344 by Marcus.Wassmer
Fix editortest compile
Change 3794285 by Guillaume.Abadie
Serializes PermutationId according to archive rendering version to avoid issues with old material that were serializing a shader map into UObject.
Change 3794307 by Guillaume.Abadie
Resaves uassets that were modified between 3789648 and 3794285
Change 3794627 by Mark.Satterthwaite
Implement two components for MTLPP, an IMP cache for Objective-C selector implementations & an interposition framework for those same selectors:
- imp_SelectorCache & friends provide the IMP caching for each of the Metal protocols which constitute most of the API, so far I've not covered the Metal classes used for the various descriptor/initializer types. Each type has its own IMPTable which caches the selector's implementation pointer and provides the mechanism to hook that implementation. As Objective-C is runtime dynamic this look up must be performed on the actual Class value returned by an object at runtime - you can't do this at compile time. Even things like NSString which appear compile-time static are really not as NSString is an alias for a class-cluster (NSString, NSMutableString, __NSInlineString and more).
- The interpose directory contains MTI* files which are the framework for interposing all the functions in Metal's runtime API - I deliberately omit the descriptor classes & read-only functions as there's no benefit to interposing them - which I can build off to create a trace tool or a superior validation layer. Right now this is Mac only as there'll be some problems to solve for iOS/tvOS due to difference in linking requirements - not insurmountable.
- Rebuild MTLPP's implementation of the C++ wrapper classes around the IMPTable's - this means we avoid all the objc_msgSend overhead for all the classes and functions whose implementations are cached. Right now the IMPTable is going to incur a look-up for all non-copy/move constructors which is suboptimal - ideally the Metal IMPTables would be cached in the Device object as they will be consistent within a single Device.
- Sort out the MTLPP availability logic - it now exports the availability warnings to the caller and internally just blithely assumes it may call the functions, the caller is responsible for ensuring that calls are made only on appropriate devices & OSes. This reduces MTLPP complexity and better fits how MetalRHI works.
- Fix a number of retain/release bugs that were lying dormant in MTLPP but exposed by the switch to IMPTables.
- Add tvOS support.
Next up, put this into MetalRHI and start fixing all the fallout.
Change 3794631 by Mark.Satterthwaite
Missed updating mtlpp's build.cs for TVOS.
Change 3794651 by Uriel.Doyon
UPointLightComponent::GetUnitsConversionFactor() now takes the cone angle as parameter. This allows to fix spotlight unit conversion when using lumens.
Change 3794720 by Guillaume.Abadie
Fixes a bug in Global{Bilinear,Trilinear}ClampedSampler that was actually doing a Point sampling.
Change 3794749 by Mark.Satterthwaite
Fix mtlpp.build.cs paths.
Change 3794856 by Mark.Satterthwaite
Fix some shadowing warnings.
Change 3795484 by Daniel.Wright
Implemented the Spherical Harmonic windowing algorithm from 'Stupid Spherical Harmonics (SH) Tricks'
New WorldSettings Lightmass property VolumetricLightmapSphericalHarmonicSmoothing controls the global amount of smoothing applied
Change 3795590 by Brian.Karis
Area light fixes
Fixed order of operations. This helps mixing of SourceRadius, SourceLength, and SoftSourceRadius.
Change 3796832 by Marcus.Wassmer
Correct shouldcache condition for new resolve shader
Change 3796884 by Marcus.Wassmer
Doing it right this time.
Change 3797196 by Mark.Satterthwaite
More updates to MTLPP to make things simpler and reduce the number of spurious Objective-C warnings that are emitted because of the way we are using the runtime.
Change 3797200 by Daniel.Wright
Lightmass now uses the highest density VolumetricLightmapDensityVolume settings that affect any part of a cell
Change 3797221 by Daniel.Wright
Reduced default SphericalHarmonicSmoothing based on RoboRecall tests. Now only active with strong direct lighting from static lights by default.
Change 3797411 by Brian.Karis
Disable ExpandGamut for old tone mapper.
Change 3797462 by Mark.Satterthwaite
More build warnings silenced after changing to the lowest possible deployment target OS for each library.
Change 3797585 by Mark.Satterthwaite
Range-based-For support in the NSArray wrapper.
Change 3797836 by Mark.Satterthwaite
Even more forward-declarations to avoid system headers poking through to the including code from mtlpp.
Change 3798027 by Mark.Satterthwaite
Fix handling of nil objects, on which no functions may be called, command-buffer retention and IMP declaration.
Change 3798154 by Mark.Satterthwaite
Fix some egregious memory leaks that rewriting to use mtlpp exposed before we carry on - don't want these slipping into 4.19.
Change 3800990 by Mark.Satterthwaite
Typedef all the completion-handler callback types in mtlpp to make future me's life easier.
Change 3801400 by Chris.Bunner
Improving automated test errors on failure to generate report data.
Change 3801726 by Mark.Satterthwaite
Correct some function availability and the command-buffer error status in mtlpp.
Change 3801808 by Chris.Bunner
Added DefaultScalability.ini to EngineTest that forces all quality levels to Engine default Epic for now to improve consistency.
Change 3801862 by Marcus.Wassmer
Update automated tests with color gamut change
Change 3802214 by Chris.Bunner
When running automated tests in and editor-locked PIE viewport, skip resizing as the editor can't handle this.
Added bindable delegate called when ScreenshotRequest is processed - Useful to allow screenshots to override and restore settings per capture.
#jira UE-53188
Change 3802243 by Chris.Bunner
Added button to automated test screenshot browser to add or replace all outstanding test reports if appropriate.
DeleteAllReports button is now only enabled whilst there are reports in the list.
Change 3802372 by Chris.Bunner
Updating more test screenshots.
Change 3803683 by Chris.Bunner
Adding more logging and multiple attempts to automated test report network save.
Added small wait on repeated operations that are known to fail.
Change 3803826 by Rolando.Caloca
DR - vk - Fix merge issue
Change 3804181 by Chris.Bunner
Tentative fix for CIS test failure.
Change 3804236 by Chris.Bunner
Additional logging for case where file write silently fails, report platform-specific error.
Change 3804303 by zachary.wilson
Cleaning up assets in QAGame saved with empty engine versions to resolve warnings seen when launching on
Change 3804410 by Chris.Bunner
Added additional logging when automated screenshot test fails due to size mismatch.
Mismatched bounds are colored red in the delta.
Change 3804455 by Mark.Satterthwaite
Fix a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor - interacting with menu's was particularly egregious as each NSMenu would leak after you move away.
#jira NA
Change 3804667 by Chris.Bunner
Speculative CIS fixes.
Change 3806008 by Chris.Bunner
Partially reimplementing backed-out CL 3804181 to improve consistency of how automated screenshot test settings are applied/restored.
#tests CIS preflight job 8174412
Change 3806909 by Mark.Satterthwaite
Use the vertex-shader's in-out mask to ensure that we only validate legitmate vertex-streams in Metal's DrawIndexedPrimitive implementation.
#jira UE-53046
Change 3807059 by laz.matech
Checking in QAGame Rendering Map, QA-PhysicalLightingUnits, for testing Physical Light Units.
Wanted to get this in before copy up.
#Jira none
Change 3807726 by Chris.Bunner
Removed a check that we can't fix up. The check hits unbound buffers which it assumes means a failure but is actually due to m.v.fetch. We don't have the information available to know which are which removed from the input without reading from the shader.
#jira UE-53046
Change 3807800 by Guillaume.Abadie
Fixes some warning in shader headers.
Change 3807804 by Guillaume.Abadie
Back out changelist 3807800
Change 3807807 by Guillaume.Abadie
Relands shader header warnings.
Change 3808046 by Chris.Bunner
Dropping a new automated test error back to a warning as this may lead to genuine issues being ignored in the short term.
Change 3809579 by Chris.Bunner
Back out changelist 3774677.
#jira UE-53483
Change 3809620 by Chris.Bunner
Updating animated cloth test screenshot.
Change 3803629 by Chris.Bunner
Rebuilt CornellBox and DistanceField test maps, updated screenshots.
Change 3787045 by Guillaume.Abadie
Moves some global samplers to Common.ush
Change 3809756 by Chris.Bunner
Updating animated cloth test screenshot.
[CL 3809764 by Chris Bunner in Main branch]
2017-12-15 12:47:47 -05:00
static void ModifyCompilationEnvironment ( const FGlobalShaderPermutationParameters & Parameters , FShaderCompilerEnvironment & OutEnvironment )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3809756)
#rb None
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
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 3761370 by Arne.Schober
DR - Added CityHash to use with conatiners and stuff. It provides good performance and high quallity across multiple platforms.
Change 3761437 by Guillaume.Abadie
Optimises motion blur compute shader for consoles.
Change 3761483 by Guillaume.Abadie
Fixes D3D11 RHI lying to dynamic resolution heuristic with t.MaxFPS.
Change 3761995 by Mark.Satterthwaite
Add the Metal compiler path to the local .pch filename to avoid problems when Xcode moves.
Change 3761996 by Mark.Satterthwaite
Emit more details when a pixel shader is found to have no outputs at all which Metal doesn't permit. More likely this is a bug in the shader compiler not configuring the in-out mask correctly...
#jira UE-52292
Change 3761999 by Mark.Satterthwaite
No need to avoid tessellation for FMetalRHICommandContext::RHIEndDrawIndexedPrimitiveUP anymore - that was from back when the tessellation logic was replicated in each RHI*Draw* implementation.
#jira UE-51937
Change 3762181 by Joe.Graf
Changed MaxShaderJobBatchSize to 25 on Mac as it reduced shader compile time by 21%
Change 3762607 by Mark.Satterthwaite
Remove accidentally included changes from 3761995.
Change 3762612 by Mark.Satterthwaite
Enable the explicit sincos intrinsic for Metal to avoid instances of UE-52477 that can cause shaders to compile incorrectly through hlslcc.
#jira UE-52477
Change 3762772 by Michael.Lentine
Move RHI calls to render thread.
Change 3763021 by Richard.Wallis
Remove shader cache tool project and implementation.
#jira UE-51613
Change 3763082 by Guillaume.Abadie
More SceneTexture, SceneColor and SceneDepth automated tests
Change 3763111 by Richard.Wallis
Clone of CL 3763033 (Release-4.18):
Fix for crash upon launching packaged game on Mac with Share Material Shader Code enabled.
#jira UE-52121
Change 3763657 by Michael.Lentine
Invalidate ddc for skeletal mesh render data so that the duplicated vertex render structures are properly serialized.
Change 3763727 by Jian.Ru
Fix Player Collision view mode. It is caused by checking an uninitialized vertex buffer so the check always fail.
#jira UE-52052
Change 3763738 by Guillaume.Abadie
Implements SSR input post process material location.
Change 3764271 by Mark.Satterthwaite
Allow ControlPointPatch lists to flow through MetalRHI as it was setup to handle this transparently - the VSHS compute shader will convert them to triangles to draw. Report the same warning as in the pipeline creation stage as this hasn't been formally validated.
#jira UE-52454
Change 3764316 by Daniel.Wright
Added AVolumetricLightmapDensityVolume - gives local control over Volumetric Lightmap density. Dropping the top mip outside of the play area in Monolith saves 20Mb (35Mb original).
Volumetric Lightmap no longer refines around static translucent geometry - saves 5Mb in Monolith
Reworked brick culling by error mechanism. Now compares error to interpolated parent lighting instead of the brick average - prevents dropping constant value bricks which are near a wall and cause leaking due to parent interpolation after being culled.
Change 3764318 by Daniel.Wright
Missing file
Change 3764321 by Daniel.Wright
Shader compiling memory optimizations
* Editor memory: Sharing uniform buffer includes and GeneratedInstancedStereo.ush per FShaderType (was previously duplicated per FShader job)
* SCW input size: Sharing uniform buffer includes and SharedEnvironment per batch
* 7.6Gb of shader job inputs in memory -> .5Gb (13x less) when doing a full shader compile of Paragon Editor
* 13.8Gb written into worker input files -> 2.9Gb (4.7x less). Global shaders are never batched when sent to SCW so unoptimized by these changes.
Change 3764595 by Daniel.Wright
Added VolumetricLightmapDensityVolume asset icons
Change 3764701 by Michael.Lentine
Add duplicated vertices merging for meshmerge.
Change 3766002 by Guillaume.Abadie
Fixes a crash in translucency.
Change 3766007 by Guillaume.Abadie
Oups.... Fixes compilation failure.
Change 3766697 by Guillaume.Abadie
Giant refactor of global shader interface for upcoming native support of permutation.
CL generated by python script.
Change 3767205 by Chris.Bunner
Deferring FMaterial::RenderingThreadShaderMap update to render-thread rather than assumption commands have been flushed.
#jira UE-50652
Change 3767207 by Chris.Bunner
Clamp fetched texture coordinates to those available on the mesh.
Change 3767209 by Chris.Bunner
PR #4203: Early-outs in UMaterialInstance parameter setters (Contributed by stefanzimecki)
#jira UE-52193
Change 3767772 by Mark.Satterthwaite
MetalShaderFormat will no longer fallback to text shaders when you ask it to compile to bytecode but the bytecode compiler is not available (either locally or remotely) - this ensures that the DDC can't be poisoned by incorrectly configured clients. The Editor is already setup such that if the remote shader compiler is not configured & Xcode is not available locally the shader-compiler will be invoked to generate text shaders.
#jira UE-52554
Change 3768604 by Guillaume.Abadie
Polish up with new global shader function signature.
Change 3768993 by Guillaume.Abadie
Fixes r.Upscale.Panini cvars
Change 3769478 by Mark.Satterthwaite
Move the ue4_stdlib.metal & PCH into a temporary directory that exists for the lifetime of the SCW on the remote side as well as the local one and add this path as an include directory.
#jira UE-52587
Change 3769703 by Mark.Satterthwaite
For all Metal platforms >= Metal v1.2 transform mul(a,b) into fma(a,b,0) to prevent the Apple compiler reordering operations differently between the base & depth passes which results in variance in the position output.
For iOS disable fast-math when the vertex-shader uses World-Position-Offset because there are additional problems on the iOS shader compiler that result in position variance even with the above fix - WPO performance will suffer but I don't have any alternatives.
Remove the depth-offset hack from the depth-only vertex shader again.
#jira UES-5651
Change 3769763 by Mark.Satterthwaite
Handle swizzle's in the hlslcc fma identification pass so that we reduce the number of instructions and the platform compiler can't break the instructions up.
Change 3769849 by Mark.Satterthwaite
Fix CIS error.
Change 3770517 by Richard.Wallis
Fix for crash when creating a new media texture (AppleIntelHD5000GraphicsMTLDriver!SamplerStage::bindSamplerToTexture()). Missing texture resource for binding. Old InitDynamicRHI() code has been refactored out into seperate functions which leaves us on Mac with a NULL resource initially after creation which Metal doesn't like. This fix puts InitDynamicRHI down the default setup/clear path which inits default resources - I don't think we should use a global dummy in this instance as this is a render target.
#jira UE-51940
Change 3770688 by Uriel.Doyon
Fixed texture resolution returning 0 when running blueprint construction scripts at cook time.
Change 3771115 by Mark.Satterthwaite
Report errors from failed attempts to compile global shaders or we can't see why things fail on non-Windows platforms.
Change 3771263 by Mark.Satterthwaite
Change the way ManualVertexFetch is enabled on Metal platforms so that it is enabled when targeting Metal v1.2 and higher (macOS 10.12+/iOS 10+). This brings iOS in the Desktop Forward renderer back into line with the Mac.
#jira UERNDR-300
Change 3773472 by Guillaume.Abadie
Fixes a crash on PIE of SimpleComposure project.
Change 3773475 by Guillaume.Abadie
Fixes bug in editor viewport caused by SSR input changes.
Change 3774677 by Arne.Schober
DR - Deprecated SetLocal from the RHICmdlist
Fixed some unnecessary PSO collisions.
Change 3777037 by Mark.Satterthwaite
Remove incorrect change that caused a reference to "accurate::sincos" to appear in some Metal shaders rather than "precise::sincos".
Change 3777122 by Mark.Satterthwaite
Back out changelist 3777037 - I'm blind and wasn't seeing the real problem was a stale shader cache...
Change 3777196 by Mark.Satterthwaite
Fix text-shader compilation on iOS 10 - maybe iOS 9 too (untested!).
We need our own make_scalar type-trait template for ue4_stdlib.metal so that we still compile with older iOS runtime compilers and we can't use as_type to directly implement the packHalf2x16/unpackHalf2x16 intrinsics for these older runtime compilers either.
Change 3779098 by Rolando.Caloca
DR - vk - Fix query index
Change 3779275 by Mark.Satterthwaite
Silence the Metal runtime compiler warning caused by use of a deprecated enum value when running text shaders compiled for Metal v1.0/1.1 on a Metal v1.2+ OS.
#jira UE-52554
Change 3779427 by Rolando.Caloca
DR - vk - Fix for allocator contention
Change 3779608 by Uriel.Doyon
Fixed invalid access in the resave package commantlet when building texture streaming material data for materials enabling tesselation.
Change 3784496 by Mark.Satterthwaite
Temporarily disable USE_OBJECT_COMPOSITING_TILE_CULLING for Metal shader compilation only - other platforms are unaffected - as it isn't working properly for some reason. need to work out what's up but don't want Distance Fields to be completely snookered in the interim.
#jira UE-52952
Change 3784608 by Rolando.Caloca
DR - Copy 3784588
- Fix for drivers returning out of date swapchains during resizes
Change 3784734 by Mark.Satterthwaite
Real fix for UE-52952 - MetalShaderFormat wasn't propagating the full thread-group value.
#jira UE-52952
Change 3784741 by Mark.Satterthwaite
More Metal debugging commandline options "-metalfastmath" & "-metalnofastmath" to force fast-math on or off for all shaders, must be using runtime-compiled shaders (i.e. -metalshaderdebug or r.Shaders.Optimise=0) to take effect.
Change 3787103 by Guillaume.Abadie
Kills BuiltinSamplers UB
Change 3787207 by Guillaume.Abadie
Sorry, compile fix that were fine with local changes...
Change 3787396 by Marcus.Wassmer
PR #4271: UE-52901: Set VIS_Max meta to hidden (Contributed by projectgheist)
Change 3788028 by Peter.Sumanaseni
Working linear HDR exr output from sequencer
Change 3788536 by Mark.Satterthwaite
Track whether the Metal shader uses the discard_fragment function as when this is used but without any other outputs we know we need to bind at least one render-target or a depth-stencil surface but we don't know which. This lets us correctly error when we encounter a shader with no outputs at all which Metal doesn't permit.
#jira UE-52292
Change 3788538 by Mark.Satterthwaite
Let's try mitigating UE-46604 on Nvidia by retaining resource references in the command-buffer. This shouldn't be necessary and isn't typically on other vendors but we haven't been able to reproduce this reliably enough to get to the bottom of it.
#jira UE-46604
Change 3789083 by Guillaume.Abadie
Implements global shader permutations. Example in ScreenSpaceReflections.cpp.
Change 3789090 by Guillaume.Abadie
Fixes linux build.
Change 3789106 by Guillaume.Abadie
Fixes compilation failure in niagara plugin.
Change 3789274 by Guillaume.Abadie
Avoid hit proxies to clobber TAA's hitsory.
#jira UE-52968
Change 3789380 by Guillaume.Abadie
Back out changelist 3789083: global shader permutation because compilation failure in clang.
Change 3789648 by Guillaume.Abadie
Relands global shader permutation, with clang support.
Change 3789712 by Guillaume.Abadie
Fixes TestImage show flag with TAAU on.
#jira UE-53061
Change 3791593 by Guillaume.Abadie
Reinvalidates shaders with shader permutations.
Change 3791884 by Daniel.Wright
Added BP setter for LowerHemisphereColor
Change 3791886 by Daniel.Wright
Added LightmapType to PrimitiveComponent
* ForceVolumetric allows forcing static geometry to use Volumetric Lightmaps, which can be useful on instanced foliage where seams are prevalent. Lightmass internal caching still requires lightmap UVs and reasonable lightmap resolution.
* ForceSurface replaces bLightAsIfStatic
Improvements to Volumetric Lightmap quality needed for static geometry
* Stationary light shadowing is now dilated inside geometry
* Now doing two dilation passes since samples near geometry see inside due to ray start bias
* Refinement around geometry uses an expanded cell bounds when the geometry is going to use Volumetric Lightmaps, since cross-resolution stitching causes leaking
Lightmass debug primitives are now tied to a swarm task instead of global - allows debugging of Volumetric Lightmap tasks
Change 3792256 by Guillaume.Abadie
Fixes a bug where permutation was not actually serialised in FShader, so was ending up recompiling shader at every load.
Change 3792884 by Marcus.Wassmer
Copying //UE4/Partner-AMD to Dev-Rendering (//UE4/Dev-Rendering)
Change 3793200 by Marcus.Wassmer
Copying //UE4/Partner-IDV-SpeedTree to Dev-Rendering (//UE4/Dev-Rendering)
Speedtree 8 support
Change 3793206 by Brian.Karis
Added color grading control BlueCorrection to correct for artifacts with "electric" blues due to the ACEScg color space. Bright blue desaturates instead of going to violet.
Added color grading control ExpandGamut which expands bright saturated colors outside the sRGB gamut to fake wide gamut rendering.
ACES changes.
Change 3793344 by Marcus.Wassmer
Fix editortest compile
Change 3794285 by Guillaume.Abadie
Serializes PermutationId according to archive rendering version to avoid issues with old material that were serializing a shader map into UObject.
Change 3794307 by Guillaume.Abadie
Resaves uassets that were modified between 3789648 and 3794285
Change 3794627 by Mark.Satterthwaite
Implement two components for MTLPP, an IMP cache for Objective-C selector implementations & an interposition framework for those same selectors:
- imp_SelectorCache & friends provide the IMP caching for each of the Metal protocols which constitute most of the API, so far I've not covered the Metal classes used for the various descriptor/initializer types. Each type has its own IMPTable which caches the selector's implementation pointer and provides the mechanism to hook that implementation. As Objective-C is runtime dynamic this look up must be performed on the actual Class value returned by an object at runtime - you can't do this at compile time. Even things like NSString which appear compile-time static are really not as NSString is an alias for a class-cluster (NSString, NSMutableString, __NSInlineString and more).
- The interpose directory contains MTI* files which are the framework for interposing all the functions in Metal's runtime API - I deliberately omit the descriptor classes & read-only functions as there's no benefit to interposing them - which I can build off to create a trace tool or a superior validation layer. Right now this is Mac only as there'll be some problems to solve for iOS/tvOS due to difference in linking requirements - not insurmountable.
- Rebuild MTLPP's implementation of the C++ wrapper classes around the IMPTable's - this means we avoid all the objc_msgSend overhead for all the classes and functions whose implementations are cached. Right now the IMPTable is going to incur a look-up for all non-copy/move constructors which is suboptimal - ideally the Metal IMPTables would be cached in the Device object as they will be consistent within a single Device.
- Sort out the MTLPP availability logic - it now exports the availability warnings to the caller and internally just blithely assumes it may call the functions, the caller is responsible for ensuring that calls are made only on appropriate devices & OSes. This reduces MTLPP complexity and better fits how MetalRHI works.
- Fix a number of retain/release bugs that were lying dormant in MTLPP but exposed by the switch to IMPTables.
- Add tvOS support.
Next up, put this into MetalRHI and start fixing all the fallout.
Change 3794631 by Mark.Satterthwaite
Missed updating mtlpp's build.cs for TVOS.
Change 3794651 by Uriel.Doyon
UPointLightComponent::GetUnitsConversionFactor() now takes the cone angle as parameter. This allows to fix spotlight unit conversion when using lumens.
Change 3794720 by Guillaume.Abadie
Fixes a bug in Global{Bilinear,Trilinear}ClampedSampler that was actually doing a Point sampling.
Change 3794749 by Mark.Satterthwaite
Fix mtlpp.build.cs paths.
Change 3794856 by Mark.Satterthwaite
Fix some shadowing warnings.
Change 3795484 by Daniel.Wright
Implemented the Spherical Harmonic windowing algorithm from 'Stupid Spherical Harmonics (SH) Tricks'
New WorldSettings Lightmass property VolumetricLightmapSphericalHarmonicSmoothing controls the global amount of smoothing applied
Change 3795590 by Brian.Karis
Area light fixes
Fixed order of operations. This helps mixing of SourceRadius, SourceLength, and SoftSourceRadius.
Change 3796832 by Marcus.Wassmer
Correct shouldcache condition for new resolve shader
Change 3796884 by Marcus.Wassmer
Doing it right this time.
Change 3797196 by Mark.Satterthwaite
More updates to MTLPP to make things simpler and reduce the number of spurious Objective-C warnings that are emitted because of the way we are using the runtime.
Change 3797200 by Daniel.Wright
Lightmass now uses the highest density VolumetricLightmapDensityVolume settings that affect any part of a cell
Change 3797221 by Daniel.Wright
Reduced default SphericalHarmonicSmoothing based on RoboRecall tests. Now only active with strong direct lighting from static lights by default.
Change 3797411 by Brian.Karis
Disable ExpandGamut for old tone mapper.
Change 3797462 by Mark.Satterthwaite
More build warnings silenced after changing to the lowest possible deployment target OS for each library.
Change 3797585 by Mark.Satterthwaite
Range-based-For support in the NSArray wrapper.
Change 3797836 by Mark.Satterthwaite
Even more forward-declarations to avoid system headers poking through to the including code from mtlpp.
Change 3798027 by Mark.Satterthwaite
Fix handling of nil objects, on which no functions may be called, command-buffer retention and IMP declaration.
Change 3798154 by Mark.Satterthwaite
Fix some egregious memory leaks that rewriting to use mtlpp exposed before we carry on - don't want these slipping into 4.19.
Change 3800990 by Mark.Satterthwaite
Typedef all the completion-handler callback types in mtlpp to make future me's life easier.
Change 3801400 by Chris.Bunner
Improving automated test errors on failure to generate report data.
Change 3801726 by Mark.Satterthwaite
Correct some function availability and the command-buffer error status in mtlpp.
Change 3801808 by Chris.Bunner
Added DefaultScalability.ini to EngineTest that forces all quality levels to Engine default Epic for now to improve consistency.
Change 3801862 by Marcus.Wassmer
Update automated tests with color gamut change
Change 3802214 by Chris.Bunner
When running automated tests in and editor-locked PIE viewport, skip resizing as the editor can't handle this.
Added bindable delegate called when ScreenshotRequest is processed - Useful to allow screenshots to override and restore settings per capture.
#jira UE-53188
Change 3802243 by Chris.Bunner
Added button to automated test screenshot browser to add or replace all outstanding test reports if appropriate.
DeleteAllReports button is now only enabled whilst there are reports in the list.
Change 3802372 by Chris.Bunner
Updating more test screenshots.
Change 3803683 by Chris.Bunner
Adding more logging and multiple attempts to automated test report network save.
Added small wait on repeated operations that are known to fail.
Change 3803826 by Rolando.Caloca
DR - vk - Fix merge issue
Change 3804181 by Chris.Bunner
Tentative fix for CIS test failure.
Change 3804236 by Chris.Bunner
Additional logging for case where file write silently fails, report platform-specific error.
Change 3804303 by zachary.wilson
Cleaning up assets in QAGame saved with empty engine versions to resolve warnings seen when launching on
Change 3804410 by Chris.Bunner
Added additional logging when automated screenshot test fails due to size mismatch.
Mismatched bounds are colored red in the delta.
Change 3804455 by Mark.Satterthwaite
Fix a small number of persistent memory leaks on the Mac build that slowly consume more and more memory as you use the Editor - interacting with menu's was particularly egregious as each NSMenu would leak after you move away.
#jira NA
Change 3804667 by Chris.Bunner
Speculative CIS fixes.
Change 3806008 by Chris.Bunner
Partially reimplementing backed-out CL 3804181 to improve consistency of how automated screenshot test settings are applied/restored.
#tests CIS preflight job 8174412
Change 3806909 by Mark.Satterthwaite
Use the vertex-shader's in-out mask to ensure that we only validate legitmate vertex-streams in Metal's DrawIndexedPrimitive implementation.
#jira UE-53046
Change 3807059 by laz.matech
Checking in QAGame Rendering Map, QA-PhysicalLightingUnits, for testing Physical Light Units.
Wanted to get this in before copy up.
#Jira none
Change 3807726 by Chris.Bunner
Removed a check that we can't fix up. The check hits unbound buffers which it assumes means a failure but is actually due to m.v.fetch. We don't have the information available to know which are which removed from the input without reading from the shader.
#jira UE-53046
Change 3807800 by Guillaume.Abadie
Fixes some warning in shader headers.
Change 3807804 by Guillaume.Abadie
Back out changelist 3807800
Change 3807807 by Guillaume.Abadie
Relands shader header warnings.
Change 3808046 by Chris.Bunner
Dropping a new automated test error back to a warning as this may lead to genuine issues being ignored in the short term.
Change 3809579 by Chris.Bunner
Back out changelist 3774677.
#jira UE-53483
Change 3809620 by Chris.Bunner
Updating animated cloth test screenshot.
Change 3803629 by Chris.Bunner
Rebuilt CornellBox and DistanceField test maps, updated screenshots.
Change 3787045 by Guillaume.Abadie
Moves some global samplers to Common.ush
Change 3809756 by Chris.Bunner
Updating animated cloth test screenshot.
[CL 3809764 by Chris Bunner in Main branch]
2017-12-15 12:47:47 -05:00
FGlobalShader : : ModifyCompilationEnvironment ( Parameters , OutEnvironment ) ;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
OutEnvironment . SetDefine ( TEXT ( " THREADGROUP_SIZEX " ) , GBloomSetupComputeTileSizeX ) ;
OutEnvironment . SetDefine ( TEXT ( " THREADGROUP_SIZEY " ) , GBloomSetupComputeTileSizeY ) ;
}
} ;
2019-09-03 19:19:28 -04:00
IMPLEMENT_GLOBAL_SHADER ( FBloomSetupCS , " /Engine/Private/PostProcessBloom.usf " , " BloomSetupCS " , SF_Compute ) ;
} //!namespace
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
2019-10-01 13:03:04 -04:00
FScreenPassTexture AddBloomSetupPass ( FRDGBuilder & GraphBuilder , const FViewInfo & View , const FBloomSetupInputs & Inputs )
2014-03-14 14:13:41 -04:00
{
2019-10-01 13:03:04 -04:00
check ( Inputs . SceneColor . IsValid ( ) ) ;
check ( Inputs . EyeAdaptationTexture ) ;
2020-01-09 17:42:29 -05:00
check ( Inputs . Threshold > - 1.0f ) ;
2014-03-14 14:13:41 -04:00
2019-10-01 13:03:04 -04:00
const bool bIsComputePass = View . bUseComputePasses ;
2014-03-14 14:13:41 -04:00
2019-10-01 13:03:04 -04:00
FRDGTextureDesc OutputDesc = Inputs . SceneColor . Texture - > Desc ;
OutputDesc . Reset ( ) ;
2020-09-24 00:43:27 -04:00
OutputDesc . Flags | = bIsComputePass ? TexCreate_UAV : TexCreate_RenderTargetable ;
2014-03-14 14:13:41 -04:00
2019-10-01 13:03:04 -04:00
const FScreenPassTextureViewport Viewport ( Inputs . SceneColor ) ;
const FScreenPassRenderTarget Output ( GraphBuilder . CreateTexture ( OutputDesc , TEXT ( " BloomSetup " ) ) , Viewport . Rect , View . GetOverwriteLoadAction ( ) ) ;
2015-09-01 16:52:40 -04:00
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
if ( bIsComputePass )
{
2019-09-03 19:19:28 -04:00
FBloomSetupCS : : FParameters * PassParameters = GraphBuilder . AllocParameters < FBloomSetupCS : : FParameters > ( ) ;
2019-10-01 13:03:04 -04:00
PassParameters - > BloomSetup = GetBloomSetupParameters ( View , Viewport , Inputs . SceneColor . Texture , Inputs . EyeAdaptationTexture , Inputs . Threshold ) ;
PassParameters - > RWOutputTexture = GraphBuilder . CreateUAV ( Output . Texture ) ;
2014-03-14 14:13:41 -04:00
2019-10-01 13:03:04 -04:00
TShaderMapRef < FBloomSetupCS > ComputeShader ( View . ShaderMap ) ;
2014-03-14 14:13:41 -04:00
2019-09-03 19:19:28 -04:00
FComputeShaderUtils : : AddPass (
GraphBuilder ,
RDG_EVENT_NAME ( " BloomSetup %dx%d (CS) " , Viewport . Rect . Width ( ) , Viewport . Rect . Height ( ) ) ,
2020-02-06 13:13:41 -05:00
ComputeShader ,
2019-09-03 19:19:28 -04:00
PassParameters ,
FComputeShaderUtils : : GetGroupCount ( Viewport . Rect . Size ( ) , FIntPoint ( GBloomSetupComputeTileSizeX , GBloomSetupComputeTileSizeY ) ) ) ;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3388261)
#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]
2017-04-11 10:32:07 -04:00
}
else
{
2019-09-03 19:19:28 -04:00
FBloomSetupPS : : FParameters * PassParameters = GraphBuilder . AllocParameters < FBloomSetupPS : : FParameters > ( ) ;
2019-10-01 13:03:04 -04:00
PassParameters - > BloomSetup = GetBloomSetupParameters ( View , Viewport , Inputs . SceneColor . Texture , Inputs . EyeAdaptationTexture , Inputs . Threshold ) ;
2021-12-07 12:33:06 -05:00
PassParameters - > SvPositionToInputTextureUV = (
FScreenTransform : : ChangeTextureBasisFromTo ( FScreenPassTextureViewport ( Output ) , FScreenTransform : : ETextureBasis : : TexelPosition , FScreenTransform : : ETextureBasis : : ViewportUV ) *
FScreenTransform : : ChangeTextureBasisFromTo ( FScreenPassTextureViewport ( Inputs . SceneColor ) , FScreenTransform : : ETextureBasis : : ViewportUV , FScreenTransform : : ETextureBasis : : TextureUV ) ) ;
2019-10-01 13:03:04 -04:00
PassParameters - > RenderTargets [ 0 ] = Output . GetRenderTargetBinding ( ) ;
2014-03-14 14:13:41 -04:00
2019-10-01 13:03:04 -04:00
TShaderMapRef < FBloomSetupPS > PixelShader ( View . ShaderMap ) ;
2021-12-07 12:33:06 -05:00
FPixelShaderUtils : : AddFullscreenPass (
2019-09-03 19:19:28 -04:00
GraphBuilder ,
2021-12-07 12:33:06 -05:00
View . ShaderMap ,
2019-09-03 19:19:28 -04:00
RDG_EVENT_NAME ( " BloomSetup %dx%d (PS) " , Viewport . Rect . Width ( ) , Viewport . Rect . Height ( ) ) ,
2021-12-07 12:33:06 -05:00
PixelShader ,
2019-09-03 19:19:28 -04:00
PassParameters ,
2021-12-07 12:33:06 -05:00
Output . ViewRect ) ;
2015-01-25 14:54:46 -05:00
}
2019-10-01 13:03:04 -04:00
return FScreenPassTexture ( Output ) ;
}
EBloomQuality GetBloomQuality ( )
{
static const auto CVar = IConsoleManager : : Get ( ) . FindTConsoleVariableDataInt ( TEXT ( " r.BloomQuality " ) ) ;
return static_cast < EBloomQuality > ( FMath : : Clamp (
CVar - > GetValueOnRenderThread ( ) ,
static_cast < int32 > ( EBloomQuality : : Disabled ) ,
2022-02-02 02:47:24 -05:00
static_cast < int32 > ( EBloomQuality : : MAX ) - 1 ) ) ;
2019-10-01 13:03:04 -04:00
}
static_assert (
static_cast < uint32 > ( EBloomQuality : : MAX ) = = FSceneDownsampleChain : : StageCount ,
" The total number of stages in the scene downsample chain and the number of bloom quality levels must match. " ) ;
2021-12-03 17:20:45 -05:00
FScreenPassTexture AddGaussianBloomPasses ( FRDGBuilder & GraphBuilder , const FViewInfo & View , const FSceneDownsampleChain * SceneDownsampleChain )
2019-10-01 13:03:04 -04:00
{
2021-08-03 06:12:26 -04:00
check ( SceneDownsampleChain ) ;
check ( ! IsFFTBloomEnabled ( View ) ) ;
2019-10-01 13:03:04 -04:00
const FFinalPostProcessSettings & Settings = View . FinalPostProcessSettings ;
const EBloomQuality BloomQuality = GetBloomQuality ( ) ;
2021-12-03 17:20:45 -05:00
FScreenPassTexture PassOutputs ;
2019-10-01 13:03:04 -04:00
if ( BloomQuality ! = EBloomQuality : : Disabled )
{
2021-08-03 06:12:26 -04:00
RDG_EVENT_SCOPE ( GraphBuilder , " Bloom " ) ;
2019-10-01 13:03:04 -04:00
2021-08-03 06:12:26 -04:00
const float CrossBloom = CVarBloomCross . GetValueOnRenderThread ( ) ;
const FVector2D CrossCenterWeight ( FMath : : Max ( CrossBloom , 0.0f ) , FMath : : Abs ( CrossBloom ) ) ;
check ( BloomQuality ! = EBloomQuality : : Disabled ) ;
const uint32 BloomQualityIndex = static_cast < uint32 > ( BloomQuality ) ;
const uint32 BloomQualityCountMax = static_cast < uint32 > ( EBloomQuality : : MAX ) ;
struct FBloomStage
2019-10-01 13:03:04 -04:00
{
2021-08-03 06:12:26 -04:00
const float Size ;
const FLinearColor & Tint ;
} ;
2019-10-01 13:03:04 -04:00
2021-08-03 06:12:26 -04:00
FBloomStage BloomStages [ ] =
{
{ Settings . Bloom6Size , Settings . Bloom6Tint } ,
{ Settings . Bloom5Size , Settings . Bloom5Tint } ,
{ Settings . Bloom4Size , Settings . Bloom4Tint } ,
{ Settings . Bloom3Size , Settings . Bloom3Tint } ,
{ Settings . Bloom2Size , Settings . Bloom2Tint } ,
{ Settings . Bloom1Size , Settings . Bloom1Tint }
} ;
2019-10-01 13:03:04 -04:00
2021-08-03 06:12:26 -04:00
const uint32 BloomQualityToSceneDownsampleStage [ ] =
{
static_cast < uint32 > ( - 1 ) , // Disabled (sentinel entry to preserve indices)
3 , // Q1
3 , // Q2
4 , // Q3
5 , // Q4
6 // Q5
} ;
static_assert ( UE_ARRAY_COUNT ( BloomStages ) = = BloomQualityCountMax , " Array must be one less than the number of bloom quality entries. " ) ;
static_assert ( UE_ARRAY_COUNT ( BloomQualityToSceneDownsampleStage ) = = BloomQualityCountMax , " Array must be one less than the number of bloom quality entries. " ) ;
2022-02-02 02:47:24 -05:00
check ( BloomQualityIndex < BloomQualityCountMax ) ;
2021-08-03 06:12:26 -04:00
// Use bloom quality to select the number of downsample stages to use for bloom.
const uint32 BloomStageCount = BloomQualityToSceneDownsampleStage [ BloomQualityIndex ] ;
2021-12-03 17:20:45 -05:00
const float TintScale = ( 1.0f / BloomQualityCountMax ) * Settings . BloomIntensity ;
2021-08-03 06:12:26 -04:00
for ( uint32 StageIndex = 0 , SourceIndex = BloomQualityCountMax - 1 ; StageIndex < BloomStageCount ; + + StageIndex , - - SourceIndex )
{
const FBloomStage & BloomStage = BloomStages [ StageIndex ] ;
if ( BloomStage . Size > SMALL_NUMBER )
{
FGaussianBlurInputs PassInputs ;
PassInputs . NameX = TEXT ( " BloomX " ) ;
PassInputs . NameY = TEXT ( " BloomY " ) ;
PassInputs . Filter = SceneDownsampleChain - > GetTexture ( SourceIndex ) ;
2021-12-03 17:20:45 -05:00
PassInputs . Additive = PassOutputs ;
2022-02-02 01:43:41 -05:00
PassInputs . CrossCenterWeight = FVector2f ( CrossCenterWeight ) ; // LWC_TODO: Precision loss
2021-08-03 06:12:26 -04:00
PassInputs . KernelSizePercent = BloomStage . Size * Settings . BloomSizeScale ;
PassInputs . TintColor = BloomStage . Tint * TintScale ;
2021-12-03 17:20:45 -05:00
PassOutputs = AddGaussianBlurPass ( GraphBuilder , View , PassInputs ) ;
2021-08-03 06:12:26 -04:00
}
2019-10-01 13:03:04 -04:00
}
}
return PassOutputs ;
}