Files
UnrealEngineUWP/Engine/Source/Runtime/Renderer/Private/DistanceFieldLightingPost.cpp

615 lines
29 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
DistanceFieldLightingPost.cpp
=============================================================================*/
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 "DistanceFieldLightingPost.h"
#include "PostProcess/PostProcessing.h"
#include "PostProcess/SceneFilterRendering.h"
#include "DistanceFieldLightingShared.h"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3274304) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3250856 on 2017/01/09 by Daniel.Wright Only showing instruction count for 'Base pass shader' now Change 3250943 on 2017/01/09 by Rolando.Caloca DR - Async Compute PSO creation Change 3251036 on 2017/01/09 by Rolando.Caloca DR - Add r.AsyncPipelineCompile - Dispatch on any thread - Wait for completion event Change 3251058 on 2017/01/09 by Ben.Woodhouse Fix for PSO creation D3D error with NumRenderTargets. Add code to compute the correct number of valid rendertargets to prevent an issue during PSO creation when NumRenderTargets is >0, but none of the formats are valid (all formats are DXGI_UNKNOWN) #jira UE-40332 Change 3251141 on 2017/01/09 by Ben.Woodhouse Duplicated from Fortnite CL 3243458: D3D12 memory optimization - The d3d12 buddy suballocator is very wasteful for allocations above 4KB, but the vast majority of allocations are smaller . In the default buffer allocator this was causing 149MB of waste in 340MB of allocations. Moving the max allocation size threshold down to 4KB from 512KB saved 100MB of memory wastage memory. On PC, buffers are 64KB aligned, so we need the threshold to be higher to avoid additional wastage. Add PIX memory tracking instrumentation for buddy allocators so we can track the memory properly in PIX Change 3251142 on 2017/01/09 by Ben.Woodhouse Duplicated from Fortnite 3243496 memory optimisation: use NULL-terminated ansi strings instead of unicode FStrings for symbols, saving 118MB. Previously the strings were loaded from disk as ansi and then converted to FStrings (slowly), before finally being converted them back to ansi strings before being used. In addition to reducing memory overhead, this change reduces complexity and improves startup time. Change 3252323 on 2017/01/10 by Rolando.Caloca DR - Gfx async PSO creation prep Change 3252474 on 2017/01/10 by Daniel.Wright Added 'Compile Unreal Lightmass' to error message Change 3252589 on 2017/01/10 by Daniel.Wright Back out bulk data for distance fields from cl 3241990 which causes distance fields to be corrupt in Fortnite Change 3252790 on 2017/01/10 by Daniel.Wright Added InscatteringColorCubemapAngle to exponential height fog Change 3252843 on 2017/01/10 by Uriel.Doyon Propper fix for UE-40211, where texture streaming bound defrag and async tasks could interact in coherent ways. The bound defrag is now done outside of the async work logic. Change 3252866 on 2017/01/10 by Mark.Satterthwaite Fix Metal shader pipeline hash collisions caused by deferring MTLFunction construction until PrepareToDraw so that we may use Function-Constants to specialise the shader source without generating additional permutations. This is required to generate proper tessellation shaders which are specialised against the index-buffer usage & type (none, uint16, uint32). While we're here amend the hash functions to make better use of the existing hash functions to improve the distribution and hopefully reduce the possibility of collisions in future. #jira UE-40357 Change 3254511 on 2017/01/11 by Rolando.Caloca DR - PSO stats Change 3255958 on 2017/01/12 by Mark.Satterthwaite Reimplement RQT_AbsoluteTime for Metal - pretty sure I did this before, but somehow it got lost. When a RQT_AbsoluteTime is inserted into the command-stream, insert a command-buffer completion handler to record the time of completion & submit the command-buffer immediately. This breaks command-buffers so is noticeably slower and if inserted in a pass that can't be restarted will fail but is currently the only option available. This is sufficient to support the GPUBenchmark used by Scalability. To make this more efficient I've refactored the FMetalCommandBufferFence implementation so that we use a single shared-ptr object containing the command-buffer and a dispatch semaphore, rather than allocating one for each query. The semaphore allows for timed-waits where previously we'd block until completion, unlike the other APIs that report failure after a fixed interval (2s for RQT_AbsoluteTime, otherwise 0.5s). Sadly not all drivers support this abuse of the Metal API, so replace the GL-based workaround for not having time queries with one that just guesses based on RHI device details. Radars will be filed. #jira UE-40554 Change 3256329 on 2017/01/12 by Olaf.Piesche #jira UE-38615 Assert shouldn't be necessary; in fact, it causes a crash when exporting emitters, since in that case we're changing the template at runtime. Change 3256371 on 2017/01/12 by Uriel.Doyon Reenabled texture streaming bound defrag as the fix is in CL 3252843 Change 3257032 on 2017/01/13 by Daniel.Wright Added fastClamp to fastmath.usf Change 3257111 on 2017/01/13 by Daniel.Wright Disabled bAffectDistanceFieldLighting on DefaultPawn, fixes VisualizeMeshDistanceFields in game Change 3257112 on 2017/01/13 by Daniel.Wright DFAO optimizations * Changed the culling algorithm to produce a list of intersecting screen tiles for each object, instead of the other way around. Each tile / object intersection gets its own cone tracing thread group so wavefronts are much smaller and scheduled better. 3.63ms -> 3.48ms (.15ms) * Replace slow instructions in inner loop with fast approximations (exp2 -> sqr + 1, rcpFast, lengthFast) 3.25ms -> 3.09ms (.16ms) * Moved transform from world to local space out of the inner loop (sample position constructed from local space position + direction) 3.09ms -> 3.04ms * Compute shader for ClearUAV 3.04ms -> 2.62ms (.42ms) Change 3257113 on 2017/01/13 by Daniel.Wright Better distance field memory stats Change 3257326 on 2017/01/13 by Uriel.Doyon Workaround to support cases where several textures have the same lighting GUID. Change 3257448 on 2017/01/13 by Daniel.Wright Removed legacy features Distance Field Specular Occlusion, Distance Field Surface Cache AO, PreCullTriangles Change 3257616 on 2017/01/13 by Daniel.Wright Distance field mesh visualization now uses a cone containing the entire tile to cull objects with, making the results stable Change 3257657 on 2017/01/13 by Daniel.Wright Mesh distance fields are stored zlib compressed in memory until needed for uploading to GPU * 81Mb of backing memory -> 32Mb in GPUPerfTest, atlas upload time 29ms -> 893ms Change 3258063 on 2017/01/14 by Rolando.Caloca DR - vk - Refactor descriptor set reuse in prep for more changes Change 3258715 on 2017/01/16 by Daniel.Wright Added VisualizeGlobalDistanceField show flag Change 3258827 on 2017/01/16 by Daniel.Wright Global distance field update regions are clipped against others to reduce redundant updates. Change 3258959 on 2017/01/16 by Benjamin.Hyder Updating Planar Reflection example material in TM-Shadermodels Change 3259270 on 2017/01/16 by Daniel.Wright [Copy] 'r.MSAACount 1' now produces no MSAA or TAA. 'r.MSAACount 0' can be used to toggle TAA on for comparisons. Change 3259652 on 2017/01/16 by Uriel.Doyon Better support for static primitive becoming dynamic. Change 3260107 on 2017/01/17 by Ben.Woodhouse Fix FMonitoredProcess to prevent infinite loop in -nothreading mode #jira UE-40717 Change 3260594 on 2017/01/17 by Daniel.Wright Added a new global distance field (4x 128^3 clipmaps) which caches mostly static primitives (Mobility set to Static or Stationary) * The full global distance field inherits from the mostly static cache, so when a Movable primitive is modified, only other movable primitives in the vicinity need to be re-composited into the global distance field * Global distance field update cost with one large rotating object went from 2.5ms -> .2ms on 970GTX and 4.6ms -> .3ms. Worst case full volume update is mostly the same. * Adds 12Mb for the new volume textures Change 3260956 on 2017/01/17 by Daniel.Wright Structured buffers for DF object data * Full global distance field clipmap composite 3.0ms -> 2.0ms due to scalarized loads Change 3261296 on 2017/01/17 by Daniel.Wright Exposed MaxObjectsPerTile with 'r.AOMaxObjectsPerCullTile' and lowered the default from 512 to 256, saves 17Mb of object tile culling data structures Removed unnecessary UAV transitions preventing object and global cone tracing from overlapping, saves ~.1ms Change 3262036 on 2017/01/18 by Ben.Salem V0 of Perf monitor plugin for easily consumable stat csvs. With plugin enabled, enter PerformanceMonitor help into the console to get usage details. Change 3262056 on 2017/01/18 by Chris.Bunner Remove inverse tonemapping when rendering HDR output. #jira UE-40728 Change 3262661 on 2017/01/18 by Rolando.Caloca DR - Add missing SetStencilRef() and SetBlendFactor() on most RHIs - Fix hash for PSOs Change 3263674 on 2017/01/19 by Chris.Bunner PR #3144: Improved error messages (Contributed by DarkSlot) #jira UE-40835 Change 3264150 on 2017/01/19 by Ben.Woodhouse Add support for single threaded in FMonitoredProcess. Deprecated IsRunning() in favour of a new Update() method because polling IsRunning is not compatible with -nothreading mode #jira UE-40841 Change 3264153 on 2017/01/19 by Ben.Woodhouse Integrate latest changes from MS-DX12 CLs 3231395-3262526 - Added WinPixEventRuntime.tps - Includes PIX support, various optimizations (saved 1.3ms in testbed scene) CL 3262343: Fix depth testing on translucency not working correctly after cl 3231395. This change reapplies the D3D12RHI changes from CL 3231395 because those changes were lost when integrating from //Dev-Rendering/ but also includes the depth fixes: - Fix depth state not being in DEPTH_READ for use as depth read. The issue was HasDepthBits and HasStencilBits wern't intended for SRV formats and always returned false in the SRV case. CL 3231395: Update D3D12 RHI: - Fix deferred MSAA path in RHI - Add Pix3.h support - Cleanup SetName usage and remove it from shipping builds. - Fix fence reuse bug. We were signaling MAX UINT (-1) and then waiting for 0, which was always signaled. This change also removes the fence value reset code, there is no need to reset a fence to a previous value. - Use FPlatformAtomics::InterlockedIncrement instead of InterlockedIncrement64 - Use InterlockedIncrement() instead of _InterlockedIncrement() and use the FPlatformAtomics:: version. - Fix possible readback heap being evicted while in use. GetQueryData happens on the render thread and isn't tied to a command list so we should always have readback heaps resident. Change 3264251 on 2017/01/19 by Mark.Satterthwaite Modify some asserts in MetalRHI - technically using a store-action of ENoAction on Stencil buffers should make it invalid to restart a render-pass but on Mac it will work because ENoAction won't invalidate anything written. In future we need to use deferred store-actions in Metal so that we can "restart" passes while enforcing correct Load/Store actions. #jira UE-40803 Change 3264642 on 2017/01/19 by Daniel.Wright Raised GMaxShadowDepthBufferSizeX to max texture resolution on most platforms, was previously 4096. Change 3265330 on 2017/01/20 by Ben.Salem Stop performance plugin from building in Win32. #tests recompiled and preflighted Change 3265678 on 2017/01/20 by Marcus.Wassmer Fix bad declaration. #3055 Change 3266656 on 2017/01/20 by Mark.Satterthwaite Changes to the FShaderCache to restore it and extend it to optionally report on shader de-duplication when generating a binary shader cache (Console Variable: r.BinaryShaderCacheLogging). Duplicate & amend CL #3266053 from Trepka: Fixed issues with shader cache not working properly with Mac Metal (but it still requires -norhithread to work at all). Enabled the shader cache by default if RHI thread is disabled. Amend & integrate RCO's CL #3197085. Change 3267741 on 2017/01/23 by Rolando.Caloca DR - Detect duplicated shader and pipeline types Change 3268600 on 2017/01/23 by Uriel.Doyon Added missing r.Streaming.MaxEffectiveScreenSize config to base texture scability settings. Integrated CL 3227368 from Orion stream Enabled r.Streaming.UsePerTextureBias by default as this has been tested in Orion for several months. Fixed issue with the InvestigateTexture command which could return invalid reference depending on the timing, Added th MaxEffectiveScreenSize settings in the investigate texture command. Change 3269512 on 2017/01/24 by Richard.Wallis Fix for shader binary cache uncompress data size during internal shader log. Change 3271237 on 2017/01/25 by Ben.Woodhouse D3D12 updateTexture2D crash fix #jira UE-41059 Change 3271564 on 2017/01/25 by Olaf.Piesche #jira UE-40980 #udn 325525 Fix uniform buffers for mesh particles; these should really be on the mesh collector, so allocating them as a one frame resource is safe Change 3271594 on 2017/01/25 by Ben.Woodhouse ESRAM support stage 1: Implemented noncontiguous ESRAM page allocator replacing XgMemoryLayout API. The allocator allocates non-contiguous ranges of pages and maps them onto a contiguous virtual address range. Unlike the previous implementation, this allocator frees pages for reuse when resources are destroyed Note: issues with deferred deallocation may prevent reuse in many cases - that will be addressed in the next stage Support for the old allocator is still available (for now) via the define NEW_ESRAM_ALLOCATOR #fyi rolando.caloca Change 3272616 on 2017/01/25 by Rolando.Caloca DR - Update shader version Change 3273138 on 2017/01/26 by Ben.Woodhouse Fix merge issue with MonitoredProcess.cpp (this arose from an integration made as an edit in dev-rendering, which confused perforce when the change was subsequently integrated from main) [CL 3274498 by Rolando Caloca in Main branch]
2017-01-26 19:20:49 -05:00
#include "DistanceFieldAmbientOcclusion.h"
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 "CompositionLighting/PostProcessAmbientOcclusion.h"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
#include "PipelineStateCache.h"
#if WITH_MGPU
DECLARE_GPU_STAT(AFRWaitForDistanceFieldAOHistory);
#endif
int32 GAOUseHistory = 1;
FAutoConsoleVariableRef CVarAOUseHistory(
TEXT("r.AOUseHistory"),
GAOUseHistory,
TEXT("Whether to apply a temporal filter to the distance field AO, which reduces flickering but also adds trails when occluders are moving."),
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) (Source: //UE4/Dev-Rendering @ 2943238) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2932679 on 2016/04/04 by Martin.Mittring remove hack/cvar that is not longer needed as we fixed the bug #rb:Bob.Tellez #code_review:Bob.Tellez Change 2932681 on 2016/04/04 by Martin.Mittring fixed cvars in consolevariables.ini can affect engine even if marked with cheat (no longer load consolevariables.ini in shipping and test), unified 3 code path, added testcase, cvars with cheat in ini file other than consolevariables.ini now trigger ensure, =on/off/true/false/.. works in all ini files, added enure if non scalability setting are used in ScalabilityIni (get now ignored) #rb:David.Hill #code_review:Marcus.Wassmer, Michael.Noland Change 2932719 on 2016/04/04 by Marcus.Wassmer Merge 3 band SH back to DevRendering #rb Daniel.Wright Change 2932760 on 2016/04/04 by Zabir.Hoque Migrating high resolution cubemaps for skylight and reflection probes. #rb: Daniel.Wright Change 2933121 on 2016/04/05 by Rolando.Caloca DR - vk - Fix free blocks not getting joined - Fix compile issue Change 2933122 on 2016/04/05 by Rolando.Caloca DR - Do not shorten dumped shaders path Change 2933126 on 2016/04/05 by Rolando.Caloca DR - vk - Index Buffers using new resource management Change 2933127 on 2016/04/05 by Rolando.Caloca DR - vk - Extract multibuffer off index buffer Change 2933131 on 2016/04/05 by Rolando.Caloca DR - vk - Transition to vb's using mutlibuffer Change 2933136 on 2016/04/05 by Rolando.Caloca DR - vk - Change staging buffers to use resource allocation system - Fix free block not getting joined - Remove define Change 2933140 on 2016/04/05 by Rolando.Caloca DR - vk - 'static' textures now use resource mgmt - Release free pages back to the OS - Remove ensure Change 2933152 on 2016/04/05 by Rolando.Caloca DR - vk - Fix aliasing granularity - Fix renderpass end/copy buffer ensure Change 2933155 on 2016/04/05 by Rolando.Caloca DR - SCW - Fix for -directcompile to directly load file for preprocessor Change 2933158 on 2016/04/05 by Rolando.Caloca DR - hlslcc - Error on Metal if trying to R & W on RWTextures - Fix indices on RW reads to be unsigned #codereview Mark.Satterthwaite, Michael.Trepka Change 2933169 on 2016/04/05 by Rolando.Caloca DR - vk - Move header to public to match changes on DevMobile Change 2933173 on 2016/04/05 by David.Hill Deferred decal rendering with negative scale #rb:Matrin.Mittring #jira:UE-27389 Change 2933273 on 2016/04/05 by Rolando.Caloca DR - vk - Fix renderdoc markers Change 2933274 on 2016/04/05 by Rolando.Caloca DR - Support for -AttachDebugger Change 2933316 on 2016/04/05 by Rolando.Caloca DR - vk - Compile fix whene enabling define Change 2933334 on 2016/04/05 by Rolando.Caloca DR - Compile fix #codereview Martin.Mittring Change 2933805 on 2016/04/05 by Brian.Karis Temporal AA dynamic antighosting. Fixed DOF Change 2933811 on 2016/04/05 by Brian.Karis Fixed area light NaNs. Improvements to area lights. Horizen handling for wrap around. Change 2933812 on 2016/04/05 by Brian.Karis Fixed fresnel on SSS skin. Change 2933813 on 2016/04/05 by Brian.Karis Tessellation fix Change 2933816 on 2016/04/05 by Brian.Karis Improved forward shading support [CL 2943241 by Gil Gribb in Main branch]
2016-04-13 21:24:38 -04:00
ECVF_RenderThreadSafe
);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3461187) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3388286 on 2017/04/11 by Chris.Bunner Fix mips in texture GnmUAV creation. Change 3388287 on 2017/04/11 by Chris.Bunner Improved PS/CS code sharing for TemporalAA. Change 3388291 on 2017/04/11 by Chris.Bunner HLODs now correctly hide their children in shadow maps. Propagate bCastFarShadow flag on HLOD generation. #jira UE-42254 Change 3388448 on 2017/04/11 by Brian.Karis Better handle divide by zero Change 3388449 on 2017/04/11 by Brian.Karis Optimizations to shading model math. PR #3340: Bug fixes related to shader TODOs (Contributed by vgfx) Change 3388455 on 2017/04/11 by Uriel.Doyon Changed Remove for RemoveSwap when clearing dynamic component references Change 3388612 on 2017/04/11 by Simon.Tourangeau Support shaders in projects and in plugins When searching for a shader it will - First look in Engine/Shaders as usual - Then in project's Shader folder - Then in all enabled plugin Shader folders Project or plugin must be loaded in PostConfigInit phase Tested in PIE, engine (cooked, packaged) Change 3388819 on 2017/04/11 by Arne.Schober DR - Faster MorpthTarget implementation. Changed the previous Gather aproach to a scatter based one. Reaching about 110GB/s on PS4 which is up to 4x faster than the previous implementation. On PC DX11 the impact is lower due to unecessary UAV barriers but still 2x faster on AMD and up to 6x faster on Nvidia Hardware. #RB Lina.Halper, Rolando.Caloca Change 3388862 on 2017/04/11 by Guillaume.Abadie Allows Motion Blur and TAA in scene capture 2d. Change 3388953 on 2017/04/11 by Uriel.Doyon Fixed issue where lights from hidden levels where affecting the lighting build, by checking if the light is registered before adding it. #UE-43220 Change 3389138 on 2017/04/11 by Arne.Schober DR - Fix crash when opening a Level without Contentbrowser open. #RB Matt.Kuhlenschmidt Change 3389400 on 2017/04/11 by Uriel.Doyon - Renamed FMaterialResource::IsSeparateTranslucencyEnabled() to FMaterialResource::IsTranslucencyAfterDOFEnabled() - Removed different logic to determine if translucency after DOF was enabled, and centralized it into a single function: FSceneViewFamily::AllowTranslucencyAfterDOF() - FSceneRenderTargets::FinishRenderingSeparateTranslucency() now only resolves a single view, allowing better Begin/Finish scopes. - Renamed FSceneRenderTargets::SeparateTranslucencyDepthRT into FSceneRenderTargets::DownsampledTranslucencyDepthRT since this one is only allocated when rendering in downsampled mode. - Standard translucency is now rendered in the same resolution than translucency after DOF. (downsampled or full resolution) - Removed RenderTranslucencyParallel and merged it's logic into RenderTranslucency. Renamed DrawAllTranslucencyPasses to RenderViewTranslucency and added a parallel version RenderViewTranslucencyParallel. - Moved all debug draw logic (VisualizeLPV, ViewMeshElements and SimpleElementCollector) to a common place. - New option "r.AllowDownsampledStandardTranslucency" to control the downsampling of standard translucency. Affect blend module materials #jira UE-39505 Change 3389860 on 2017/04/12 by Richard.Wallis UE-41407 Cable actor does not render correctly in viewport on Mac. Build the mesh at creation time - call into exisiting mesh create function. Change 3390933 on 2017/04/12 by Arne.Schober DR - potential fix for UE-43125 where the this pointer might get invalidated in the middle of the function #RB Marcus.Wassmer Change 3391010 on 2017/04/12 by Ben.Marsh Compile UE4Game non-unity for Mac as part of nightly builds in //UE4/Dev-Rendering. Change 3391412 on 2017/04/12 by Uriel.Doyon Mesh Decals are now sorted according to the component TranslucencySortPriority. #jira UE-43053 Change 3392117 on 2017/04/13 by Guillaume.Abadie Integrates Raven's experimental PCSS for cascaded shadow map hidden behind a CVar. Change 3392179 on 2017/04/13 by Guillaume.Abadie Attempts to fix linux compilation by removing mistakenly submitted dead code. Change 3392231 on 2017/04/13 by Guillaume.Abadie Fixes a wrong enum value real quick in FRenderingObjectVersion I introduced after main integration... Oups... Change 3393879 on 2017/04/14 by Guillaume.Abadie Attempts to fix linux compilation warning. Change 3393881 on 2017/04/14 by Guillaume.Abadie Back out changelist 3393879 Change 3393882 on 2017/04/14 by Guillaume.Abadie Attempts #2 to fix linux compilation error. Change 3394100 on 2017/04/14 by Chris.Bunner Corrected material shared sampler usage with mip-biasing. Change 3394174 on 2017/04/14 by Rolando.Caloca DR - Change ensure to warning Change 3394221 on 2017/04/14 by Marcus.Wassmer Fix poseable mesh bounds calculation. Change 3396238 on 2017/04/17 by David.Hill Fix Bloom with LensFlare Duplicating fix - will also fix directly in 4.16 #jira 44050 Change 3397055 on 2017/04/17 by Joe.Graf Fixed Windows specific assumptions in Slate File Dialog Window's file filtering that lead to crashes #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3397921 on 2017/04/18 by Joe.Graf Rewrote SlateFileDlgWindow's file filtering to allow for extensionless file selection and to remove the O(n^2) file filtering #CodeReview: arciel.rekman, matt.kuhlenschmidt #rb: n/a Change 3398406 on 2017/04/18 by Rolando.Caloca DR - Fix shaders in plugins on Mac Change 3399546 on 2017/04/19 by Benjamin.Hyder Updating content for test levels (HDR, Bloom_FFT, DistanceFields_IndirectShadows) Change 3399725 on 2017/04/19 by Guillaume.Abadie Avoids compiling PCSS shaders for SM4. Change 3400295 on 2017/04/19 by Michael.Trepka Fixed metal shader compile errors in MorphTargets.usf Change 3400457 on 2017/04/19 by Michael.Trepka Merged Rolando's shader fixes Change 3400473 on 2017/04/19 by Arne.Schober DR - provide Aftermath Reason when init failed. #RB none Change 3400699 on 2017/04/19 by Arne.Schober DR - Fixed Text macro #RB none Change 3402280 on 2017/04/20 by Simon.Tovey Minor cascade fix #tests no crash #jira UE-41560 Change 3402517 on 2017/04/20 by Arne.Schober DR - Fix static analysis warning #RB none Change 3403897 on 2017/04/21 by Arne.Schober DR - [UE-43898] - Someone missed a shaderversion bump which poisoned the DCC #RB None #jira UE-43898 Change 3404591 on 2017/04/21 by Olaf.Piesche #jira UE-41979 Should never be crashing there, unless the mesh is changed after Init of the effect instance; this change safeguards against the number of mesh sections (and hence materials) changing after creation of the dynamic data to avoid the crash. Change 3407451 on 2017/04/25 by Daniel.Wright Fixed Indirect Lighting Cache updates caused by capsule indirect shadows forcing point samples, breaking primitives using ILCQ_Volume Change 3407452 on 2017/04/25 by Daniel.Wright Added r.AOJitterConeDirections, although disabled by default because it requires the temporal filter to be much stronger Change 3408397 on 2017/04/25 by Daniel.Wright ViewFamily.bRealtimeUpdate is set to false if Slate is throttling (like when toggling show flags). Volumetric fog discards the temporal history when not realtime, so you can see changes immediately. Change 3408428 on 2017/04/25 by Daniel.Wright Changed 'r.AOMaxObjectsPerCullTile' default back to 512 as 256 causes artifacts with RTDF shadows Change 3409764 on 2017/04/26 by Daniel.Wright Force dumping shader debug info for Global shaders when r.ShaderDevelopmentMode is enabled. Most of the shaders you want to look at in a GPU capture are global shaders, and global shaders create few debug files. 'recompileshaders global' time 35s -> 38s for SM5. Change 3411659 on 2017/04/27 by Daniel.Wright [Copy] Set Xbox One engine default screen percentage to 83.33 (1600x900), as ESRAM choices are dependent on this Change 3411660 on 2017/04/27 by Daniel.Wright [Copy] Global distance field composite shader has a version for each flattened axis, which improves efficiency when updating a slab which is what camera movement typically causes Change 3411667 on 2017/04/27 by Daniel.Wright [Copy] Discard distance field AO history buffer if it doesn't match the new buffer size. This prevents reading uinitialized data after a scene render target resize. Change 3411668 on 2017/04/27 by Daniel.Wright [Copy] Better indirect capsule shadow draw event info Change 3411669 on 2017/04/27 by Daniel.Wright [Copy] Pass down FeatureLevel to AddSubjectPrimitive and GatherShadowsForPrimitiveInner instead of calling the scene's virtual function. Showed up prominently in a sampling profile. Change 3411755 on 2017/04/27 by Daniel.Wright [Copy] Occlusion queries are now always done before the base pass if a nearly full prepass is being used(DDM_AllOccluders or DDM_AllOpaque) * Removed r.OcclusionQueryLocation Change 3411827 on 2017/04/27 by Daniel.Wright [Copy] Much cheaper implementation of IsForwardShadingEnabled which showed up prominently in sampling profiles - inlined function and no more unnecessary thread safety overhead Change 3411829 on 2017/04/27 by Daniel.Wright Added an ensure to console manager when doing FindTConsoleVariableData* on a FAutoConsoleVariableRef Change 3411837 on 2017/04/27 by Daniel.Wright [Copy] Worked around slow memcpy's being used to sort FSortedLightSceneInfo Change 3411838 on 2017/04/27 by Daniel.Wright [Copy] Skip tracking MaterialRenderProxyMap on cooked platforms Change 3411843 on 2017/04/27 by Daniel.Wright [Copy] Fixed r.ParallelShadows on PS4 and enabled by default engine-wide (saves 5ms RT with CSM) * Gnm was not tracking DepthClearValue when a depth target was set but not cleared * Gnm has a bug where TargetsNeedingEliminateFastClear does not persist across commandlist breaks. Moved FinishRenderingGBuffer before RenderShadowDepthMaps to workaround (accidentally not in this changelist) * Shadow depth rendering was not using BindClearMRTValues to populate GNM parallel commandlist TargetsNeedingEliminateFastClear values Change 3411873 on 2017/04/27 by Daniel.Wright [Copy] Deferred uniform expression caching. Setting multiple parameters on a material only causes its uniform expressions to be recached once. * 280 calls to CacheUniformExpressions -> 120 during Fortnite combat (6.5ms -> 3.4ms) Change 3411891 on 2017/04/27 by Daniel.Wright [Copy] GatherShadowPrimitives optimizations * Total GatherShadowPrimivies went from 2.3ms -> 1.3ms on PS4 with these changes in GPUPerfTest (duplicated 3x) * Much flatter primitive octree (16 -> 256 max primitives) * Primitives are culled against the shadow frustum before FPrimitiveSceneInfo or FPrimitiveSceneProxy are dereferenced in FilterPrimitiveForShadows * FilterPrimitiveForShadows work is done in a ParallelFor. Primitive octree nodes are processed in different jobs. * StaticMeshWholeSceneShadowBatchVisibility now only stores entries for meshes with bRequiresPerElementVisibility (landscape). Previously it was allocating and zeroing 500Kb 3x per frame (main view + 2 cascades) which cost ~.8ms on PS4. Change 3412192 on 2017/04/27 by Michael.Trepka Fixed Clang compile errors in FortniteGame, partial copy of CL 3313426 Change 3412547 on 2017/04/27 by Daniel.Wright Fixed leak of FShadowMapAllocation and FLightMapAllocation's found by licensee Change 3414239 on 2017/04/28 by Arne.Schober DR - UE-44500 - Removed use of Structured Buffer from MorphTargets due to HLSLCC not supporting it. #RB none #jira UE-44500 Change 3414754 on 2017/04/28 by Daniel.Wright Added VolumetricFogEmissive to ExponentialHeightFogComponent * Volumetric fog does not yet support precomputed lighting, so this is the only way to get an ambient lighting term Change 3416859 on 2017/05/01 by Arne.Schober DR - Remove FeatureLevel from the Clear Functions to reduce area of error #RB Rolando.Caloca Change 3420750 on 2017/05/03 by Arne.Schober DR - [UE-44497] - Fix several PS4 validation layer issues #RB Marcus.Wassmer Change 3422869 on 2017/05/04 by Benjamin.Hyder Fix compile error from merge. Change 3423938 on 2017/05/04 by Marc.Olano [UE-44453] Fix bloom problems by moving saturate after vector math Change 3424494 on 2017/05/04 by Olaf.Piesche #jira UE-44589 When using FindTCosoleVariableData, the CVar can not be an FAutoConsoleVariable. #tests as described in jira ticket Change 3424754 on 2017/05/04 by Uriel.Doyon Fixed call to get texture compressor module outside the main thread. #jira UE-42168 Change 3425447 on 2017/05/05 by Uriel.Doyon #buildfix Change 3427042 on 2017/05/05 by Arne.Schober DR - Fix one of my typos #RB none Change 3428119 on 2017/05/08 by Marcus.Wassmer Fix UE-44733 static analysis warning. Change 3428222 on 2017/05/08 by Uriel.Doyon Fixed bad condition in translucency rendering #jira UE-44452 Change 3429794 on 2017/05/08 by Uriel.Doyon Fixed issues with lightshafts and low res translucency. #jira UE-44452 Change 3430921 on 2017/05/09 by Rolando.Caloca DR - Get additional function pointers for D3DReflect, Compile and Disassemble instructions from the same DLL when compiling D3D11 shaders. - Also fixes using the correct fxc.exe path to match the DLL we distribute. Change 3431156 on 2017/05/09 by Rolando.Caloca DR - Remove unused code Change 3431396 on 2017/05/09 by David.Hill Copy of changes made directly in 4.16 ( CL 341037 ) to be submitted to dev-rendering #jira UE-44641 Change 3431400 on 2017/05/09 by Rolando.Caloca DR - Fix typo Change 3431527 on 2017/05/09 by David.Hill #rb: none Oops. comment out r.ShaderDevelopmentMode =1 Change 3431590 on 2017/05/09 by Daniel.Wright Removed early return landmine in USceneCaptureComponent2D::Serialize Change 3431591 on 2017/05/09 by Daniel.Wright Disallow map building while in PIE, or PIE while buildling lighting Change 3431594 on 2017/05/09 by Daniel.Wright Added RenderTargetFormat to UTextureRenderTarget2D, with choices of 8 bit, 16fp, 32fp and 1, 2 or 4 channels. Change 3431667 on 2017/05/09 by Daniel.Wright Volumetric fog now supersamples lighting when the history is not available, reducing noise on areas that just came on-screen or after a camera cut. * The number of samples is controlled by r.VolumetricFog.HistoryMissSupersampleCount, defaults to 4, cinematic scalability uses 16 * Under fast camera movement, volumetric fog cost went from 1.79ms -> 1.97ms with 4 samples, on a 970GTX Change 3432366 on 2017/05/10 by Richard.Wallis Fix for MetalRHI Asserts When Using "Profile GPU" With RHI-Thread/Parallel-Execution. Don't insert events when not in RHIThread or the actual single-threaded-render thread. #jira UE-36006 Change 3432367 on 2017/05/10 by Richard.Wallis Fix for Metal ReStartRenderPass assert with profiling. macOS metal asserts when using "profileGPU" even with -norhithread argument set. Added no action to the allowed render pass restart store actions for the depth buffer avoiding the assert. Interested to know the details if this is not a valid assumption to make - throwing away the depth buffer after a render pass I think would be a common case. #jira UE-44322 Change 3432409 on 2017/05/10 by Richard.Wallis Merged across CL 3415890 from Release-4.16 fix for (jira UE-43895) Fix for deferred store actions getting cleared when we don't have a valid render target. Change 3432833 on 2017/05/10 by Daniel.Wright Fixed Ocean compile error Change 3432874 on 2017/05/10 by Marc.Olano Improved captions for Noise and VectorNoise material nodes Change 3432947 on 2017/05/10 by Richard.Wallis Fix for shared Material Native Shader Libraries Don't Function With Iterative Cooking. Keep latest versions of shader byte code in native shared material packaged build in an intermediate directory than can be reused on a later iterative cook. - Doesn't handle deletion of the intermediate directory contents. Assumed to be a higher level requirement on non iterative cook flag. #jira UE-44657 Change 3433484 on 2017/05/10 by Arne.Schober DR - UE-44393 - Move ShaderPlatform into TShaderMap for extra debuginformation when it fails to find a proper shader. Also log when Gobalshaders are verified and recompiled. #jira UE-44393 #RB Daniel.Wright Change 3433515 on 2017/05/10 by Arne.Schober DR - Fix a bug where recompileshaders changed while compiling causes a crash where the chached local vertex factories are mutated while been used. #RB Daniel.Wright Change 3433606 on 2017/05/10 by Daniel.Wright Fixed static shadowing of volumetric fog and translucency causing shadowing past the lightmass importance volume. Change 3433619 on 2017/05/10 by Daniel.Wright Skip recapturing reflection captures when PropagateLightingScenarioChange is being called for a level unload. This leaves stale results in reflection captures around when hiding a level in the editor, but avoids the double recapture that happens when swapping lighting scenarios in game, and the unnecessary reflection capture update when exiting PIE. Change 3433795 on 2017/05/10 by Arne.Schober DR - add cmdline to select a GPU vendor when multiple GPUs from differnt Vendors are installed into the same Machine #RB marcus.Wassmer Change 3433941 on 2017/05/10 by Daniel.Wright Cone vs tile bounding sphere intersection tests for Light Grid culling of spotlights, which provides much tighter culling than just View space tile AABB vs light bounding sphere. * Forward shading BasePass 3.7ms -> 2.4ms in a scene with 24 spotlights on 970GTX * Volumetric fog 2.87ms -> 2.09ms in the same scene Change 3435139 on 2017/05/11 by Daniel.Wright Restored GTextureRenderTarget2DMaxSizeX which is used by Ocean Change 3435297 on 2017/05/11 by Arne.Schober DR - Remove manual AlignOf and use C++11 keyword instead #RB Steve.Robb Change 3435367 on 2017/05/11 by Daniel.Wright Circle vertex buffer for slightly tighter voxelization of volumetric fog shadowed lights * 1.5ms -> 1.38ms on 970 GTX with 24 spotlights Change 3435522 on 2017/05/11 by Brian.Karis Dither opacity mask now stacks properly for non parallel polys. Dither is randomized by triangle normal. Change 3436063 on 2017/05/11 by Daniel.Wright Disabled CLB_AggressiveBatching for PC d3d12 as it causes flickering artifacts in lighting Change 3436269 on 2017/05/11 by Uriel.Doyon Fixed UVChannel data possibly not up-to-date depending on user manips. Change 3436611 on 2017/05/12 by Simon.Tovey Improved name and tooltip for static mesh property controlling generation of alias tables for uniform sampling. Change 3436676 on 2017/05/12 by Simon.Tovey Fix for fixed bounds being "invalid" unless set via the toolbar option. Change 3436700 on 2017/05/12 by Simon.Tovey Crash fix. Issue found in https://udn.unrealengine.com/questions/355944/crash-in-fdynamicspriteemitterdatagetdynamicmeshel.html Particle proxies would have stale material resource pointers if the material is changed while the system was invisible. If the old material is freed during this time, the next time the system renders it will crash. Change 3437367 on 2017/05/12 by Brian.Karis Fixed bug with small UV charts not packing. Change 3437860 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI alignment is 4 for int64 #RB none Change 3437972 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI function calls cannot take alingned structures. In all of the cases the copy was completely unnecessary. #RB none Change 3437975 on 2017/05/12 by Chris.Bunner Added calculation for MaterialParamsEx to MeshDecals.usf. #jira UE-43052 Change 3438109 on 2017/05/12 by Rolando.Caloca DR - Support for -nomcpp on SCW Change 3438889 on 2017/05/15 by Chris.Bunner Nullptr check in a few material uniform expressions. Change 3439351 on 2017/05/15 by Chris.Bunner Added tooltip to Power material expression. Change 3439763 on 2017/05/15 by Daniel.Wright Apply passed in DistanceBiasSqr to line lights - allows volumetric fog to reduce aliasing on line lights Change 3439764 on 2017/05/15 by Daniel.Wright Fixed order of operations with bTreatMaxDepthUnshadowed - manifested as unfiltered static shadow depth lookups Change 3440722 on 2017/05/16 by Guillaume.Abadie Exposes Scene capture's FOV to blueprints Change 3441680 on 2017/05/16 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3441884 on 2017/05/16 by Uriel.Doyon Fixed StreamingDistanceMultiplier not being applied to the texture streaming data. Change 3442800 on 2017/05/17 by Gil.Gribb Fixed botched merge. Change 3442896 on 2017/05/17 by Gil.Gribb UE4 - Allowed the possibility of running the RHI "thread" on task threads instead and cleaned up and unified the conditionals involved. By default we still have a dedicated RHI thread because it tested slightly faster. Change 3443951 on 2017/05/17 by Richard.Wallis Added Apple override allocator macro - each command encoder type needs it's own allocator queue. Change 3444787 on 2017/05/17 by Daniel.Wright Fixed DBuffer decal default normal (used when DBuffer decals enabled, but not decals rendered) not reconstructing zero properly, adding -.008 to WorldNormal which then caused artifacts with forward lighting specular on materials with roughness near 0. Change 3444882 on 2017/05/17 by Daniel.Wright Added comment to FClearValueBinding::DefaultNormal8Bit to make the dependency on shader decode clear Change 3444883 on 2017/05/17 by Brian.Karis Improved contact shadows Change 3445048 on 2017/05/17 by Daniel.Wright Fixed particle lights in forward shading, they were not setting the lighting channel mask properly Change 3445107 on 2017/05/17 by Michael.Trepka Changed the order of operations in FMetalStateCache::SetRenderState to work around an issue with some Intel drivers where they would not recalculate the raster state in some edge cases. #jira UE-43725 Change 3445212 on 2017/05/17 by Uriel.Doyon Added a -CSV option to ListTextures command Change 3445947 on 2017/05/18 by Richard.Wallis Clone of Release-4.16 Stream CL 3437181 and CL 3442450 - fix(s) for black rendering on macOS El Cap with Nvidia GPU. Move sampling of EyeAdaption texture to pixel shader for Mac Metal using shader language version <= 1 only. Change 3446545 on 2017/05/18 by Chris.Bunner Removed hardcoded (and unused) MRT write from Decal shaders. #jira UE-45095 Change 3446568 on 2017/05/18 by Marc.Olano Sobol and image-based importance sampling C++ functions and blueprint nodes Change 3446988 on 2017/05/18 by Marc.Olano Fix build error: missing include Change 3446990 on 2017/05/18 by Marc.Olano Cell-indexed Sobol sampling for shaders (in MonteCarlo.usf) and materials (Sobol and TemporalSobol nodes) Change 3447142 on 2017/05/18 by Rolando.Caloca DR - RWLock instead of mutex for PSO cache Change 3447144 on 2017/05/18 by Uriel.Doyon Moved shading model code to SetGBufferFromShadingModel(). This allows the code to be reused in other shader files. Change 3447794 on 2017/05/18 by Brian.Karis Virtual texturing foundation code Change 3448944 on 2017/05/19 by Arciel.Rekman Fix non-unity Linux (and Mac, etc) builds. - Mac fix is tentative, did not try. Change 3449183 on 2017/05/19 by Marcus.Wassmer Duplicate fix for reflection captures to happen after sequencer updates. Change 3449196 on 2017/05/19 by Uriel.Doyon Handling RCM_MinMax when reading FloatRGBA textures. This fixes pixel inspector always reading 1 for scene color values greater than one. Change 3451652 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45245 Change 3451660 on 2017/05/22 by Chris.Bunner Additional compile fix. #jira UE-45245 Change 3451897 on 2017/05/22 by Daniel.Wright Moved RTDF shadow project back after the base pass, since it samples the GBuffer for subsurface shadowing. Removed r.DFShadowAsyncCompute which was relying on the previous ordering. Change 3452055 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix #jira UE-45265 Change 3452089 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452108 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452179 on 2017/05/22 by Brian.Karis Exposed dimensions. Fixed static analysis. Change 3452734 on 2017/05/22 by Daniel.Wright When post processing is disabled, TPT_TranslucencyAfterDOF translucency gets forced into the standard translucency pass. Change 3452770 on 2017/05/22 by Daniel.Wright Static light source shapes drawn into reflection captures handle SourceLength via scaled sphere Change 3452861 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix Change 3452952 on 2017/05/22 by Brian.Karis Small VT fixes Change 3453647 on 2017/05/23 by Richard.Wallis Fix for tessellation shaders on Mac (Metal v1.2) failing to compile. #jira UE-45227 Change 3454844 on 2017/05/23 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 on 2017/05/23 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3457131 on 2017/05/24 by Arne.Schober DR - [UE-45317] - Fix Depthbuffer not available for resolve in Forward mode #jira UE-45317 #RB Chris.Bunner Change 3457141 on 2017/05/24 by Marc.Olano Sobol bug fixes Change 3457953 on 2017/05/24 by Brian.Karis Fix static analysis #jira UE-45315 #jira UE-45314 #jira UE-45313 Change 3459064 on 2017/05/25 by Chris.Bunner Fix for out of bounds material translation crash. #jira UE-45406 Change 3459700 on 2017/05/25 by Brian.Karis Revert using sprite index buffer because the vert order is different. Change 3459847 on 2017/05/25 by Chris.Bunner Fixing ensure in RenderTestMap. [CL 3461201 by Chris Bunner in Main branch]
2017-05-26 08:22:50 -04:00
int32 GAOClearHistory = 0;
FAutoConsoleVariableRef CVarAOClearHistory(
TEXT("r.AOClearHistory"),
GAOClearHistory,
TEXT(""),
ECVF_RenderThreadSafe
);
int32 GAOHistoryStabilityPass = 1;
FAutoConsoleVariableRef CVarAOHistoryStabilityPass(
TEXT("r.AOHistoryStabilityPass"),
GAOHistoryStabilityPass,
TEXT("Whether to gather stable results to fill in holes in the temporal reprojection. Adds some GPU cost but improves temporal stability with foliage."),
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) (Source: //UE4/Dev-Rendering @ 2943238) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2932679 on 2016/04/04 by Martin.Mittring remove hack/cvar that is not longer needed as we fixed the bug #rb:Bob.Tellez #code_review:Bob.Tellez Change 2932681 on 2016/04/04 by Martin.Mittring fixed cvars in consolevariables.ini can affect engine even if marked with cheat (no longer load consolevariables.ini in shipping and test), unified 3 code path, added testcase, cvars with cheat in ini file other than consolevariables.ini now trigger ensure, =on/off/true/false/.. works in all ini files, added enure if non scalability setting are used in ScalabilityIni (get now ignored) #rb:David.Hill #code_review:Marcus.Wassmer, Michael.Noland Change 2932719 on 2016/04/04 by Marcus.Wassmer Merge 3 band SH back to DevRendering #rb Daniel.Wright Change 2932760 on 2016/04/04 by Zabir.Hoque Migrating high resolution cubemaps for skylight and reflection probes. #rb: Daniel.Wright Change 2933121 on 2016/04/05 by Rolando.Caloca DR - vk - Fix free blocks not getting joined - Fix compile issue Change 2933122 on 2016/04/05 by Rolando.Caloca DR - Do not shorten dumped shaders path Change 2933126 on 2016/04/05 by Rolando.Caloca DR - vk - Index Buffers using new resource management Change 2933127 on 2016/04/05 by Rolando.Caloca DR - vk - Extract multibuffer off index buffer Change 2933131 on 2016/04/05 by Rolando.Caloca DR - vk - Transition to vb's using mutlibuffer Change 2933136 on 2016/04/05 by Rolando.Caloca DR - vk - Change staging buffers to use resource allocation system - Fix free block not getting joined - Remove define Change 2933140 on 2016/04/05 by Rolando.Caloca DR - vk - 'static' textures now use resource mgmt - Release free pages back to the OS - Remove ensure Change 2933152 on 2016/04/05 by Rolando.Caloca DR - vk - Fix aliasing granularity - Fix renderpass end/copy buffer ensure Change 2933155 on 2016/04/05 by Rolando.Caloca DR - SCW - Fix for -directcompile to directly load file for preprocessor Change 2933158 on 2016/04/05 by Rolando.Caloca DR - hlslcc - Error on Metal if trying to R & W on RWTextures - Fix indices on RW reads to be unsigned #codereview Mark.Satterthwaite, Michael.Trepka Change 2933169 on 2016/04/05 by Rolando.Caloca DR - vk - Move header to public to match changes on DevMobile Change 2933173 on 2016/04/05 by David.Hill Deferred decal rendering with negative scale #rb:Matrin.Mittring #jira:UE-27389 Change 2933273 on 2016/04/05 by Rolando.Caloca DR - vk - Fix renderdoc markers Change 2933274 on 2016/04/05 by Rolando.Caloca DR - Support for -AttachDebugger Change 2933316 on 2016/04/05 by Rolando.Caloca DR - vk - Compile fix whene enabling define Change 2933334 on 2016/04/05 by Rolando.Caloca DR - Compile fix #codereview Martin.Mittring Change 2933805 on 2016/04/05 by Brian.Karis Temporal AA dynamic antighosting. Fixed DOF Change 2933811 on 2016/04/05 by Brian.Karis Fixed area light NaNs. Improvements to area lights. Horizen handling for wrap around. Change 2933812 on 2016/04/05 by Brian.Karis Fixed fresnel on SSS skin. Change 2933813 on 2016/04/05 by Brian.Karis Tessellation fix Change 2933816 on 2016/04/05 by Brian.Karis Improved forward shading support [CL 2943241 by Gil Gribb in Main branch]
2016-04-13 21:24:38 -04:00
ECVF_RenderThreadSafe
);
float GAOHistoryWeight = .85f;
FAutoConsoleVariableRef CVarAOHistoryWeight(
TEXT("r.AOHistoryWeight"),
GAOHistoryWeight,
TEXT("Amount of last frame's AO to lerp into the final result. Higher values increase stability, lower values have less streaking under occluder movement."),
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) (Source: //UE4/Dev-Rendering @ 2943238) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2932679 on 2016/04/04 by Martin.Mittring remove hack/cvar that is not longer needed as we fixed the bug #rb:Bob.Tellez #code_review:Bob.Tellez Change 2932681 on 2016/04/04 by Martin.Mittring fixed cvars in consolevariables.ini can affect engine even if marked with cheat (no longer load consolevariables.ini in shipping and test), unified 3 code path, added testcase, cvars with cheat in ini file other than consolevariables.ini now trigger ensure, =on/off/true/false/.. works in all ini files, added enure if non scalability setting are used in ScalabilityIni (get now ignored) #rb:David.Hill #code_review:Marcus.Wassmer, Michael.Noland Change 2932719 on 2016/04/04 by Marcus.Wassmer Merge 3 band SH back to DevRendering #rb Daniel.Wright Change 2932760 on 2016/04/04 by Zabir.Hoque Migrating high resolution cubemaps for skylight and reflection probes. #rb: Daniel.Wright Change 2933121 on 2016/04/05 by Rolando.Caloca DR - vk - Fix free blocks not getting joined - Fix compile issue Change 2933122 on 2016/04/05 by Rolando.Caloca DR - Do not shorten dumped shaders path Change 2933126 on 2016/04/05 by Rolando.Caloca DR - vk - Index Buffers using new resource management Change 2933127 on 2016/04/05 by Rolando.Caloca DR - vk - Extract multibuffer off index buffer Change 2933131 on 2016/04/05 by Rolando.Caloca DR - vk - Transition to vb's using mutlibuffer Change 2933136 on 2016/04/05 by Rolando.Caloca DR - vk - Change staging buffers to use resource allocation system - Fix free block not getting joined - Remove define Change 2933140 on 2016/04/05 by Rolando.Caloca DR - vk - 'static' textures now use resource mgmt - Release free pages back to the OS - Remove ensure Change 2933152 on 2016/04/05 by Rolando.Caloca DR - vk - Fix aliasing granularity - Fix renderpass end/copy buffer ensure Change 2933155 on 2016/04/05 by Rolando.Caloca DR - SCW - Fix for -directcompile to directly load file for preprocessor Change 2933158 on 2016/04/05 by Rolando.Caloca DR - hlslcc - Error on Metal if trying to R & W on RWTextures - Fix indices on RW reads to be unsigned #codereview Mark.Satterthwaite, Michael.Trepka Change 2933169 on 2016/04/05 by Rolando.Caloca DR - vk - Move header to public to match changes on DevMobile Change 2933173 on 2016/04/05 by David.Hill Deferred decal rendering with negative scale #rb:Matrin.Mittring #jira:UE-27389 Change 2933273 on 2016/04/05 by Rolando.Caloca DR - vk - Fix renderdoc markers Change 2933274 on 2016/04/05 by Rolando.Caloca DR - Support for -AttachDebugger Change 2933316 on 2016/04/05 by Rolando.Caloca DR - vk - Compile fix whene enabling define Change 2933334 on 2016/04/05 by Rolando.Caloca DR - Compile fix #codereview Martin.Mittring Change 2933805 on 2016/04/05 by Brian.Karis Temporal AA dynamic antighosting. Fixed DOF Change 2933811 on 2016/04/05 by Brian.Karis Fixed area light NaNs. Improvements to area lights. Horizen handling for wrap around. Change 2933812 on 2016/04/05 by Brian.Karis Fixed fresnel on SSS skin. Change 2933813 on 2016/04/05 by Brian.Karis Tessellation fix Change 2933816 on 2016/04/05 by Brian.Karis Improved forward shading support [CL 2943241 by Gil Gribb in Main branch]
2016-04-13 21:24:38 -04:00
ECVF_RenderThreadSafe
);
float GAOHistoryDistanceThreshold = 30;
FAutoConsoleVariableRef CVarAOHistoryDistanceThreshold(
TEXT("r.AOHistoryDistanceThreshold"),
GAOHistoryDistanceThreshold,
TEXT("World space distance threshold needed to discard last frame's DFAO results. Lower values reduce ghosting from characters when near a wall but increase flickering artifacts."),
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) (Source: //UE4/Dev-Rendering @ 2943238) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2932679 on 2016/04/04 by Martin.Mittring remove hack/cvar that is not longer needed as we fixed the bug #rb:Bob.Tellez #code_review:Bob.Tellez Change 2932681 on 2016/04/04 by Martin.Mittring fixed cvars in consolevariables.ini can affect engine even if marked with cheat (no longer load consolevariables.ini in shipping and test), unified 3 code path, added testcase, cvars with cheat in ini file other than consolevariables.ini now trigger ensure, =on/off/true/false/.. works in all ini files, added enure if non scalability setting are used in ScalabilityIni (get now ignored) #rb:David.Hill #code_review:Marcus.Wassmer, Michael.Noland Change 2932719 on 2016/04/04 by Marcus.Wassmer Merge 3 band SH back to DevRendering #rb Daniel.Wright Change 2932760 on 2016/04/04 by Zabir.Hoque Migrating high resolution cubemaps for skylight and reflection probes. #rb: Daniel.Wright Change 2933121 on 2016/04/05 by Rolando.Caloca DR - vk - Fix free blocks not getting joined - Fix compile issue Change 2933122 on 2016/04/05 by Rolando.Caloca DR - Do not shorten dumped shaders path Change 2933126 on 2016/04/05 by Rolando.Caloca DR - vk - Index Buffers using new resource management Change 2933127 on 2016/04/05 by Rolando.Caloca DR - vk - Extract multibuffer off index buffer Change 2933131 on 2016/04/05 by Rolando.Caloca DR - vk - Transition to vb's using mutlibuffer Change 2933136 on 2016/04/05 by Rolando.Caloca DR - vk - Change staging buffers to use resource allocation system - Fix free block not getting joined - Remove define Change 2933140 on 2016/04/05 by Rolando.Caloca DR - vk - 'static' textures now use resource mgmt - Release free pages back to the OS - Remove ensure Change 2933152 on 2016/04/05 by Rolando.Caloca DR - vk - Fix aliasing granularity - Fix renderpass end/copy buffer ensure Change 2933155 on 2016/04/05 by Rolando.Caloca DR - SCW - Fix for -directcompile to directly load file for preprocessor Change 2933158 on 2016/04/05 by Rolando.Caloca DR - hlslcc - Error on Metal if trying to R & W on RWTextures - Fix indices on RW reads to be unsigned #codereview Mark.Satterthwaite, Michael.Trepka Change 2933169 on 2016/04/05 by Rolando.Caloca DR - vk - Move header to public to match changes on DevMobile Change 2933173 on 2016/04/05 by David.Hill Deferred decal rendering with negative scale #rb:Matrin.Mittring #jira:UE-27389 Change 2933273 on 2016/04/05 by Rolando.Caloca DR - vk - Fix renderdoc markers Change 2933274 on 2016/04/05 by Rolando.Caloca DR - Support for -AttachDebugger Change 2933316 on 2016/04/05 by Rolando.Caloca DR - vk - Compile fix whene enabling define Change 2933334 on 2016/04/05 by Rolando.Caloca DR - Compile fix #codereview Martin.Mittring Change 2933805 on 2016/04/05 by Brian.Karis Temporal AA dynamic antighosting. Fixed DOF Change 2933811 on 2016/04/05 by Brian.Karis Fixed area light NaNs. Improvements to area lights. Horizen handling for wrap around. Change 2933812 on 2016/04/05 by Brian.Karis Fixed fresnel on SSS skin. Change 2933813 on 2016/04/05 by Brian.Karis Tessellation fix Change 2933816 on 2016/04/05 by Brian.Karis Improved forward shading support [CL 2943241 by Gil Gribb in Main branch]
2016-04-13 21:24:38 -04:00
ECVF_RenderThreadSafe
);
float GAOViewFadeDistanceScale = .7f;
FAutoConsoleVariableRef CVarAOViewFadeDistanceScale(
TEXT("r.AOViewFadeDistanceScale"),
GAOViewFadeDistanceScale,
TEXT("Distance over which AO will fade out as it approaches r.AOMaxViewDistance, as a fraction of r.AOMaxViewDistance."),
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) (Source: //UE4/Dev-Rendering @ 2943238) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2932679 on 2016/04/04 by Martin.Mittring remove hack/cvar that is not longer needed as we fixed the bug #rb:Bob.Tellez #code_review:Bob.Tellez Change 2932681 on 2016/04/04 by Martin.Mittring fixed cvars in consolevariables.ini can affect engine even if marked with cheat (no longer load consolevariables.ini in shipping and test), unified 3 code path, added testcase, cvars with cheat in ini file other than consolevariables.ini now trigger ensure, =on/off/true/false/.. works in all ini files, added enure if non scalability setting are used in ScalabilityIni (get now ignored) #rb:David.Hill #code_review:Marcus.Wassmer, Michael.Noland Change 2932719 on 2016/04/04 by Marcus.Wassmer Merge 3 band SH back to DevRendering #rb Daniel.Wright Change 2932760 on 2016/04/04 by Zabir.Hoque Migrating high resolution cubemaps for skylight and reflection probes. #rb: Daniel.Wright Change 2933121 on 2016/04/05 by Rolando.Caloca DR - vk - Fix free blocks not getting joined - Fix compile issue Change 2933122 on 2016/04/05 by Rolando.Caloca DR - Do not shorten dumped shaders path Change 2933126 on 2016/04/05 by Rolando.Caloca DR - vk - Index Buffers using new resource management Change 2933127 on 2016/04/05 by Rolando.Caloca DR - vk - Extract multibuffer off index buffer Change 2933131 on 2016/04/05 by Rolando.Caloca DR - vk - Transition to vb's using mutlibuffer Change 2933136 on 2016/04/05 by Rolando.Caloca DR - vk - Change staging buffers to use resource allocation system - Fix free block not getting joined - Remove define Change 2933140 on 2016/04/05 by Rolando.Caloca DR - vk - 'static' textures now use resource mgmt - Release free pages back to the OS - Remove ensure Change 2933152 on 2016/04/05 by Rolando.Caloca DR - vk - Fix aliasing granularity - Fix renderpass end/copy buffer ensure Change 2933155 on 2016/04/05 by Rolando.Caloca DR - SCW - Fix for -directcompile to directly load file for preprocessor Change 2933158 on 2016/04/05 by Rolando.Caloca DR - hlslcc - Error on Metal if trying to R & W on RWTextures - Fix indices on RW reads to be unsigned #codereview Mark.Satterthwaite, Michael.Trepka Change 2933169 on 2016/04/05 by Rolando.Caloca DR - vk - Move header to public to match changes on DevMobile Change 2933173 on 2016/04/05 by David.Hill Deferred decal rendering with negative scale #rb:Matrin.Mittring #jira:UE-27389 Change 2933273 on 2016/04/05 by Rolando.Caloca DR - vk - Fix renderdoc markers Change 2933274 on 2016/04/05 by Rolando.Caloca DR - Support for -AttachDebugger Change 2933316 on 2016/04/05 by Rolando.Caloca DR - vk - Compile fix whene enabling define Change 2933334 on 2016/04/05 by Rolando.Caloca DR - Compile fix #codereview Martin.Mittring Change 2933805 on 2016/04/05 by Brian.Karis Temporal AA dynamic antighosting. Fixed DOF Change 2933811 on 2016/04/05 by Brian.Karis Fixed area light NaNs. Improvements to area lights. Horizen handling for wrap around. Change 2933812 on 2016/04/05 by Brian.Karis Fixed fresnel on SSS skin. Change 2933813 on 2016/04/05 by Brian.Karis Tessellation fix Change 2933816 on 2016/04/05 by Brian.Karis Improved forward shading support [CL 2943241 by Gil Gribb in Main branch]
2016-04-13 21:24:38 -04:00
ECVF_RenderThreadSafe
);
bool UseAOHistoryStabilityPass()
{
extern int32 GDistanceFieldAOQuality;
return GAOHistoryStabilityPass && GDistanceFieldAOQuality >= 2;
}
BEGIN_SHADER_PARAMETER_STRUCT(FGeometryAwareUpsampleParameters, )
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, DistanceFieldNormalTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, DistanceFieldNormalSampler)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, BentNormalAOTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, BentNormalAOSampler)
SHADER_PARAMETER(FVector4f, BentNormalBufferAndTexelSize)
SHADER_PARAMETER(FVector2f, DistanceFieldGBufferTexelSize)
SHADER_PARAMETER(FVector2f, DistanceFieldGBufferJitterOffset)
SHADER_PARAMETER(FVector2f, JitterOffset)
SHADER_PARAMETER(float, MinDownsampleFactorToBaseLevel)
SHADER_PARAMETER(float, DistanceFadeScale)
END_SHADER_PARAMETER_STRUCT()
FGeometryAwareUpsampleParameters SetupGeometryAwareUpsampleParameters(const FViewInfo& View, FRDGTextureRef DistanceFieldNormal, FRDGTextureRef DistanceFieldAOBentNormal)
{
extern FVector2f GetJitterOffset(int32 SampleIndex);
FVector2f const JitterOffsetValue = GetJitterOffset(View.GetDistanceFieldTemporalSampleIndex());
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
const FIntPoint DownsampledBufferSize = GetBufferSizeForAO(View);
const FVector2f BaseLevelTexelSizeValue(1.0f / DownsampledBufferSize.X, 1.0f / DownsampledBufferSize.Y);
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
extern FIntPoint GetBufferSizeForConeTracing(const FViewInfo& View);
const FIntPoint ConeTracingBufferSize = GetBufferSizeForConeTracing(View);
const FVector4f BentNormalBufferAndTexelSizeValue(ConeTracingBufferSize.X, ConeTracingBufferSize.Y, 1.0f / ConeTracingBufferSize.X, 1.0f / ConeTracingBufferSize.Y);
extern int32 GConeTraceDownsampleFactor;
const float MinDownsampleFactor = GConeTraceDownsampleFactor;
extern float GAOViewFadeDistanceScale;
const float DistanceFadeScaleValue = 1.0f / ((1.0f - GAOViewFadeDistanceScale) * GetMaxAOViewDistance());
FGeometryAwareUpsampleParameters ShaderParameters;
ShaderParameters.DistanceFieldNormalTexture = DistanceFieldNormal;
ShaderParameters.DistanceFieldNormalSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
ShaderParameters.BentNormalAOTexture = DistanceFieldAOBentNormal;
ShaderParameters.BentNormalAOSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
ShaderParameters.BentNormalBufferAndTexelSize = BentNormalBufferAndTexelSizeValue;
ShaderParameters.DistanceFieldGBufferTexelSize = BaseLevelTexelSizeValue;
ShaderParameters.DistanceFieldGBufferJitterOffset = BaseLevelTexelSizeValue * JitterOffsetValue;
ShaderParameters.JitterOffset = JitterOffsetValue;
ShaderParameters.MinDownsampleFactorToBaseLevel = MinDownsampleFactor;
ShaderParameters.DistanceFadeScale = DistanceFadeScaleValue;
return ShaderParameters;
}
class FUpdateHistoryDepthRejectionPS : public FGlobalShader
{
public:
DECLARE_GLOBAL_SHADER(FUpdateHistoryDepthRejectionPS);
SHADER_USE_PARAMETER_STRUCT(FUpdateHistoryDepthRejectionPS, FGlobalShader);
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTextures)
SHADER_PARAMETER_STRUCT_INCLUDE(FAOParameters, AOParameters)
SHADER_PARAMETER_STRUCT_INCLUDE(FGeometryAwareUpsampleParameters, GeometryAwareUpsampleParameters)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, BentNormalHistoryTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, BentNormalHistorySampler)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, VelocityTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, VelocityTextureSampler)
SHADER_PARAMETER(FVector4f, HistoryScreenPositionScaleBias)
SHADER_PARAMETER(FVector4f, HistoryUVMinMax)
SHADER_PARAMETER(float, HistoryWeight)
SHADER_PARAMETER(float, HistoryDistanceThreshold)
SHADER_PARAMETER(float, UseHistoryFilter)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
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)
{
return ShouldCompileDistanceFieldShaders(Parameters.Platform);
}
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)
{
OutEnvironment.SetDefine(TEXT("DOWNSAMPLE_FACTOR"), GAODownsampleFactor);
}
};
IMPLEMENT_GLOBAL_SHADER(FUpdateHistoryDepthRejectionPS, "/Engine/Private/DistanceFieldLightingPost.usf", "UpdateHistoryDepthRejectionPS", SF_Pixel);
class FFilterHistoryPS : public FGlobalShader
{
public:
DECLARE_GLOBAL_SHADER(FFilterHistoryPS);
SHADER_USE_PARAMETER_STRUCT(FFilterHistoryPS, FGlobalShader);
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTextures)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, BentNormalAOTexture)
SHADER_PARAMETER_RDG_TEXTURE(Texture2D, DistanceFieldNormalTexture)
SHADER_PARAMETER_SAMPLER(SamplerState, BentNormalAOSampler)
SHADER_PARAMETER_SAMPLER(SamplerState, DistanceFieldNormalSampler)
SHADER_PARAMETER(FVector2f, BentNormalAOTexelSize)
SHADER_PARAMETER(FVector2f, MaxSampleBufferUV)
SHADER_PARAMETER(float, HistoryWeight)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
class FManuallyClampUV : SHADER_PERMUTATION_BOOL("MANUALLY_CLAMP_UV");
using FPermutationDomain = TShaderPermutationDomain<FManuallyClampUV>;
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)
{
return ShouldCompileDistanceFieldShaders(Parameters.Platform);
}
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)
{
OutEnvironment.SetDefine(TEXT("DOWNSAMPLE_FACTOR"), GAODownsampleFactor);
}
};
IMPLEMENT_GLOBAL_SHADER(FFilterHistoryPS, "/Engine/Private/DistanceFieldLightingPost.usf", "FilterHistoryPS", SF_Pixel);
class FGeometryAwareUpsamplePS : public FGlobalShader
{
public:
DECLARE_GLOBAL_SHADER(FGeometryAwareUpsamplePS);
SHADER_USE_PARAMETER_STRUCT(FGeometryAwareUpsamplePS, FGlobalShader);
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_STRUCT_INCLUDE(FAOParameters, AOParameters)
SHADER_PARAMETER_STRUCT_INCLUDE(FGeometryAwareUpsampleParameters, GeometryAwareUpsampleParameters)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
{
return ShouldCompileDistanceFieldShaders(Parameters.Platform);
}
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
{
OutEnvironment.SetDefine(TEXT("DOWNSAMPLE_FACTOR"), GAODownsampleFactor);
}
};
IMPLEMENT_SHADER_TYPE(,FGeometryAwareUpsamplePS, TEXT("/Engine/Private/DistanceFieldLightingPost.usf"), TEXT("GeometryAwareUpsamplePS"), SF_Pixel);
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
void AllocateOrReuseAORenderTarget(FRDGBuilder& GraphBuilder, const FViewInfo& View, FRDGTextureRef& Texture, const TCHAR* Name, EPixelFormat Format, ETextureCreateFlags Flags)
{
if (!Texture)
{
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
const FIntPoint BufferSize = GetBufferSizeForAO(View);
const FRDGTextureDesc Desc = FRDGTextureDesc::Create2D(BufferSize, Format, FClearValueBinding::None, Flags | TexCreate_ShaderResource | TexCreate_RenderTargetable | TexCreate_UAV);
Texture = GraphBuilder.CreateTexture(Desc, Name);
AddClearUAVPass(GraphBuilder, GraphBuilder.CreateUAV(Texture), FLinearColor::Black);
}
}
void GeometryAwareUpsample(FRDGBuilder& GraphBuilder, const FViewInfo& View, FRDGTextureRef DistanceFieldAOBentNormal, FRDGTextureRef DistanceFieldNormal, FRDGTextureRef BentNormalInterpolation, const FDistanceFieldAOParameters& Parameters)
{
auto* PassParameters = GraphBuilder.AllocParameters<FGeometryAwareUpsamplePS::FParameters>();
PassParameters->View = View.ViewUniformBuffer;
PassParameters->AOParameters = DistanceField::SetupAOShaderParameters(Parameters);
PassParameters->GeometryAwareUpsampleParameters = SetupGeometryAwareUpsampleParameters(View, DistanceFieldNormal, BentNormalInterpolation);
PassParameters->RenderTargets[0] = FRenderTargetBinding(DistanceFieldAOBentNormal, ERenderTargetLoadAction::ELoad);
auto VertexShader = View.ShaderMap->GetShader<FPostProcessVS>();
auto PixelShader = View.ShaderMap->GetShader<FGeometryAwareUpsamplePS>();
ClearUnusedGraphResources(PixelShader, PassParameters);
GraphBuilder.AddPass(
RDG_EVENT_NAME("GeometryAwareUpsample"),
PassParameters,
ERDGPassFlags::Raster,
[PassParameters, VertexShader, PixelShader, &View](FRHICommandList& RHICmdList)
{
RHICmdList.SetViewport(0, 0, 0.0f, View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor, 1.0f);
FGraphicsPipelineStateInitializer GraphicsPSOInit;
RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit);
GraphicsPSOInit.RasterizerState = TStaticRasterizerState<FM_Solid, CM_None>::GetRHI();
GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState<false, CF_Always>::GetRHI();
GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI();
GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI;
GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader();
GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader();
GraphicsPSOInit.PrimitiveType = PT_TriangleList;
SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0);
SetShaderParameters(RHICmdList, PixelShader, PixelShader.GetPixelShader(), *PassParameters);
DrawRectangle(
RHICmdList,
0, 0,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
0, 0,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
FIntPoint(View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor),
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
View.GetSceneTexturesConfig().Extent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor),
VertexShader);
});
}
void UpdateHistory(
FRDGBuilder& GraphBuilder,
const FViewInfo& View,
const TCHAR* BentNormalHistoryRTName,
TRDGUniformBufferRef<FSceneTextureUniformParameters> SceneTexturesUniformBuffer,
FRDGTextureRef VelocityTexture,
FRDGTextureRef DistanceFieldNormal,
FRDGTextureRef BentNormalInterpolation,
/** Contains last frame's history, if non-NULL. This will be updated with the new frame's history. */
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3760894) #rb Rendering #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3658809 by Chris.Bunner Changing default HDR display gamut to P3 as in practice that's more common than Rec2020, this should be a user-facing option where possible though as we can't automatically retrieve that data. Change 3658842 by Chris.Bunner Backing out previous HDR default gamut change as it conflicts with mandatory platform defaults. Change 3695269 by Arne.Schober DR - Make clang happy wreorder Change 3695418 by Guillaume.Abadie Fixes compilation failure in FoliageType_InstancedStaticMesh.cpp. Change 3695430 by Guillaume.Abadie Fixes missing BeginFrame dynamic resolution event in EngineTest. Change 3695469 by Guillaume.Abadie Fixes crash when passing down an invalid parameter on the sample material expression's DDX, DDY parameters. Change 3696091 by Guillaume.Abadie Fixes Linux compilation failure in DynamicResolution.cpp Change 3696593 by Chris.Bunner Fixed typo in vetex factory enum. Change 3696596 by Chris.Bunner Added material attributes type checking to If material expression. Updated If material expression to validate compilation of inputs. Change 3696597 by Chris.Bunner Allow visible parameter retrieval to correctly traverse through internally called functions. Previous check was intended to prevent function previews from leaving their graph through unhooked inputs, but unintentionally blocked all function inputs. Change 3696599 by Chris.Bunner Fixed material instance parameter visiblity when using nested static switches across functions. #jira UE-50878 Change 3696734 by Chris.Bunner Return type fix. Change 3697123 by Guillaume.Abadie Fixes compilation failure in PostProcessWeightedSampleSum.cpp on Windows 32bits. Change 3697125 by Guillaume.Abadie Fixes compilation failure in MaterialExpressionIf.h Change 3697127 by Guillaume.Abadie Fixes compilation failure in DynamicResolution.cpp on shipping build. Change 3697135 by Guillaume.Abadie Fixes crash in dynamic resolution event frontend when resizing game play viewport in EngineTest. Change 3697199 by Guillaume.Abadie Fixes TAA upsample's shader compilation failure on Mac. Change 3697220 by Guillaume.Abadie Makes static analysis happy again. Change 3697280 by Chris.Bunner Fixing up invalid casts in material layers validation. Change 3697366 by Rolando.Caloca DR - hlslcc - Fix warning #jira UE-43988 Change 3697451 by Rolando.Caloca DR - vk - Per pipeline descriptor pools Descriptor pool are now allocated per PSO instead of globally to reduce peak mem consumption and fragmentation Enabled on Windows only via VULKAN_USE_PER_PIPELINE_DESCRIPTOR_POOLS Change 3697477 by Rolando.Caloca DR - vk - Custom memory allocator Remove old/unused stats Change 3697486 by Rolando.Caloca DR - vk - Fix validation issue Change 3697488 by Richard.Wallis Fix for Mac editor session no longer accurately tracking Mouse location after moving between Desktops in Mission Control on 10.12.6. Problem stems from the extra call to update the slate cached window position in mouse move while dragging, which is itself is a hack but apparently this is needed as we don't get window position updates on Mac while dragging (although I couldn't see any -ve side effects without it) then the OS (in 10.12.6) doesn't always push out a final window did move notificaiton when changing desktops which leaves the window according to slate incorrectly positoned to it's frame. Solution is to either remove the mouse-move-while-drag window position hack or add a final window position update to the mouse-up event while dragging - this change is the latter. #jira UE-37553 Change 3697501 by Richard.Wallis Move audio processing over to audio bus tap. Currently on Mac Media audio playback uses OS media player mixer rather than Engine as existing implemtation, using AVAssetReader, now suffers from poor performance with new Media Framework. This audio tap version replaces that asset reader implementation but also suffers from bad quality audio hence is still disabled at the top of AvfMediaTracks.cpp. Original Code Review Description: Convert Mac to Play audio through the engine MediaFramework API rather than using AVMediaPlayer. This is the Mac implementation only - this should work ok on iOS but unable to test due to missing audio type implementation (throws error "Init Buffer on unsupported sound type name = Synth type = 5"), as such is only enabled for Mac. There maybe some extra tweaks required for iOS on app backgrounding etc if this feature is enabled. - Stuttering Audio Performace issue investiagation: Re-Tested this implementation against [now fixed] current Mac implementation which was working fine last year and that implementation now has the same audio output quality (performance) issues as this one. Basic investigation seems to point to somewhere in the engine audio handing. When poor audio is heard the FMediaAudioResampler::Generate() function is dequeing an IMediaAudioSample sample buffer and the audio sample queue usually has 50-100 of these IMediaAudioSample buffers waiting in the queue. I think the AvfMedia playback system is providing the sample buffers in good time but they are not getting consumed "fast" enough. This under consuming also occurs if I force the Core Audio - Audio Unit mixer to use 48000 samples/sec. #jira UEPLAT-1677 Change 3697517 by Richard.Wallis XCode 9.0 extra nullability specifiers required. Change 3697537 by Richard.Wallis Back out revision 23 from //UE4/Dev-Rendering/Engine/Plugins/Media/AvfMedia/Source/AvfMedia/Private/Player/AvfMediaTracks.cpp Change 3697670 by Rolando.Caloca DR - vk - Fix mapstaging surface Change 3697846 by Uriel.Doyon Allow denormalized values when converting float32 to float16. Change 3697892 by Uriel.Doyon Fix for unaligned structure elements Change 3699335 by Richard.Wallis Mac compile fix - turns out I did need these nullability specifiers here. Change 3699663 by Guillaume.Abadie Fixes time unit conversions from microseconds to milliseconds error in dynamic resolution heuristic when using GPU busy time queries. Change 3699959 by Rolando.Caloca DR - Fix barrier in the middle of render pass Change 3699969 by Rolando.Caloca DR - vk - Change dump layer location so it prints out validation ids Change 3700356 by Guillaume.Abadie Implements secondary screen percentage to be able to do TAA upsample followed spatial upscale so that the editor viewport still have same TAA upsample screen percentage range to test the content with no matter monitor's DPI. Change 3701105 by Guillaume.Abadie Ignore per view automatic mip bias on texture type other than 2d textures. #jira UE-51396 Change 3702297 by Richard.Wallis Mac compile fix for nullable specifier. Looks like Obj class using the C++ class also needs this otherwise it throws. Seems to be some kind of xcode/compiler caching bug with this stuff as it'll report the error once then on subsequent compiles say everything is ok. #jira UE-51386 Change 3702357 by Richard.Wallis Mac nullability compile fix - again. Looks like I fell foul of that xcode compile caching! #jira UE-51386 Change 3702424 by Guillaume.Abadie Fixes planar reflection from drowing themselves in their own FSceneRenderer in forward shading. #jira UE-51395 Change 3702464 by Guillaume.Abadie Fixes wrong viewport to buffer conversion of the distortion. #jira UE-51406 Change 3702819 by Guillaume.Abadie Fixes planar reflections with secondary screen percentage for HighDPI editor viewports. Change 3703732 by Guillaume.Abadie Removes unecessary check(); when there is more than 2 players with planar reflections. #jira UE-51436 Change 3704302 by Guillaume.Abadie Removes unecessary Interface suffix on new dynamic resolution related interfaces Change 3704390 by Chris.Bunner Fixed a coincidentally correct define. Change 3704730 by Rolando.Caloca DR - vk - Fix map for depth surfaces Change 3704739 by Rolando.Caloca DR - Debug label on D3D11 UAVs - Validate when running -d3debug Change 3705000 by Chris.Bunner Skip compiling opacity and opacity mask inputs on opaque surface materials. Previously the code was always added to the shader, sometimes we force opaque materials down a masked path which then calls the dormant code unintentionally. A safer fix for UE-48254. Partially reverted previous fix in CL 3608303 which removed a material instance optimization caching the overridden base properties. Change 3706065 by Guillaume.Abadie Does some renaming for primary screen percentage, and move the primary screen percentage method selection from dynamic resolution driver to FSceneView. Change 3706464 by Chris.Bunner Fixed material property translate overrides that were generating code in the wrong entry. Fixed conditions in If material expression GetInputType and IsMA check. #jira UE-51368 Change 3706641 by Chris.Bunner Missing "break" in switch statement (which unfortunately needs another bump to resolve). Change 3706642 by Guillaume.Abadie Fixes assertion failure when r.TemporalAA.EnableUpscale = 1 Change 3706650 by Gil.Gribb UE4 - UE4 - Changes from intel. Increase number of worker threads on Windows to if hyperthreads (hyperthreads √ 2) else cores √ 1 up to a max of 22 workers. Increase MAX_THREADS multiplier per bank from 22 to 26. Intel VTune ITT event annotations. Wrapped in same function as your existing CPU events and enabled with √vtune. Optimize NV cloth by consuming FVector instead of FVector4 out of the solver. Vertex buffers were using FVector all along. ~15% improvement. Optimize cloth copy to vertex buffer by adding prefetch (similar to how bones are already done). Move local to world cloth transform from CPU to GPU. When simulating lots of vertices game thread was becoming bottleneck doing matrix multiply. Add your TaskGraph task switch latency test code. Change 3706733 by Daniel.Wright Print Embree Build time Change 3706841 by Daniel.Wright EmbreeFilterFunc4 now handles masked out intersections properly Change 3707437 by Rolando.Caloca DR - vk - Android compile fix #jira UE-51474 Change 3707785 by Guillaume.Abadie Fixes viewport issue in bloom setup pass with TAA upsample. Change 3709623 by Rolando.Caloca DR - vk - Missing barrier for reading into cpu Change 3709633 by Rolando.Caloca DR - vk - Compile fix Change 3710454 by Mark.Satterthwaite Refactor the way we compile Buffer<> & RWBuffer<> types for Metal so that we can support the type-conversion semantics of HLSL/D3D. - Buffer<> types are converted to Linear Textures unless the internal type is 3-compnent or the STRONG_TYPE macro is added as a type-qualifier. Linear Textures require an MTLTexture "view" object be created around the MTLBuffer which is the backing-store and it is typically best if that buffer is marked as Private (GPU-only) memory, reading from this in the shader then uses the texture-fetch hardware to perform the format conversion on load. - RWBuffer<> & 3-compnent Buffer<> types are converted to use template functions to load/store - the implementation of which will read the format from the BufferSizes meta-table and determine which type-conversion to apply. Function-constants are used to specialise the shader where feasible to reduce branch costs (function-constants are a Metal feature that allow efficient runtime recompilation of bytecode shaders). - Buffer<> & RWBuffer<> types where the STRONG_TYPE macro is added as a type-qualifier (only does something on Metal, everywhere else it is #define'd away) are compiled as "raw" Metal buffers of the inner-type (e.g. float4 for Buffer<float4>) and the MetalRHI runtime will enforce that only SRVs/UAVs of the proper format are bound to it. This is necessary in a couple of cases (BoneMatrices, NumCulledLightsGrid, CulledLightDataGrid & ForwardLocalLightBuffer buffers) which are used in a larger number of shaders as Linear Textures have poorer performance than Buffer<>/RWBuffer<>. - Most of the complications to generating subtly different Metal code for different OS/device combinations have been factored out into ue4_stdlib.metal which acts as an extension to the Metal shader standard-library and helps simplify the MetalBackend code - particularly helpful for Buffer<>/RWBuffer<> but also texturecube_array and the SM6 wave-related intrinsics. - Reverted some of the awkward Metal-specific changes Richard.Wallis & Arne had to make to the high-level shaders as they aren't necessary anymore. - Made the existing Metal-specific changes to use uint32 for all light-grid injection buffers apply to all Metal platforms again (I had hoped that it would not be necessary anymore, but it is much faster this way). - STRONG_TYPE is actually hlslcc's "invariant" keyword applied as a type-qualifier to a Buffer<>/RWBuffer<> type - only valid when using Metal which exports this through ILanguageSpec and #define'd out for everyone else. - Old versions of iOS (anything earlier than iOS 10.3) won't be able to use this new code, so every buffer will be treated as "raw" and the MetalRHI will now properly report when something goes awry rather than it leading to mysterious rendering errors and crashes. Change 3710456 by Mark.Satterthwaite Fix the Eddie workset project generator so that Enterprise projects don't get mixed in with regular projects at the top-level because of the way Eddie combines workset groups. Change 3710457 by Mark.Satterthwaite DX11 texture formats for Mac Metal please! Change 3710480 by Mark.Satterthwaite Permit RHI thread and parallel execution in Mac -game mode again. Change 3710522 by Mark.Satterthwaite MSVC type-mismatch error fixes. Change 3710580 by Mark.Satterthwaite Alright then - if I can't use the C++11 extended string semantics I'll have to use "xxd -i" to generate a hex-dump include header from ue4_stdlib.metal instead. This can only be updated from a machine with access to the POSIX xxd command (Mac & Linux, possibly the new Linux sub-system for Win10). Change 3710616 by Mark.Satterthwaite Missing file. Change 3712972 by Guillaume.Abadie Fixes Circle DOF's negative alpha channel getting clamped to 0 in TAA pass. Change 3712979 by Guillaume.Abadie Fixes wrong RT reallocation when doing TAA upsample in editor viewports with secondary upscale. Change 3713406 by Mark.Satterthwaite Use GPU morph targets on Mac - the necessary buffer conversions will always be available there. For iOS it can only be supported if iOS 10 is the minimum OS & Metal standard so leave that on the CPU path for now. Change 3713494 by Richard.Wallis Fix for hitch when PIE unloading sublevel. PerformReachabilityAnalysisOnObjects is spawing multiple threads in Editor builds as there is an extra code path that results in Critical Section locking within a singleton type static object - this is a bottle neck for multiple threads. However they all just need to read the data not change it. Replaced FScopeLock with a Read/Write version allowing these threads to all take a read lock at the same time to reduce contention. Changed the FUObjectAnnotationDense implementation only - left the sparse implementation alone as its not currently affecting this - although we could proactivly change that too. Also tested again repro in linked bug UE-24711. #jira UE-40533 Change 3713612 by Mark.Satterthwaite Integrate LPV_STORE_INDEX_IN_HEAD_BUFFER related changes from //depot/Partners/Microsoft/UE4-MS/Engine-Fable @ 2954744 This should make Light Propagation Volumes potentially viable on non-Microsoft platforms. Change 3713623 by Mark.Satterthwaite Implement ByteAddressBuffer/RWByteAddressBuffer in hlslcc in a similar manner to StructuredBuffer/RWStructuredBuffer so that the backends don't need too much modification. Implement the necessary changes into MetalBackend to make this work for Metal. Load/Store{+2,3,4} & Atomics are supported. Counter operations are not supported and aren't likely to be. Change 3713636 by Mark.Satterthwaite Enable LPVs for Mac Metal. - Rework some multi-dimensional arrays & array-index dependent HLSL code that hlslcc simply can't cope with, the mesa-glsl compiler core is only capable of dealing with 1 dimensional arrays and array-indexing can't itself be directly dependent on the result of an array-index operation. - MetalRHI needs to ignore any SetRenderTargets call that binds nothing at all as you must bind at least one target (UAV, RT, Depth/Stencil) for it to be able to do anything sensible. - Turn on LPVs for Metal as it works now. Change 3714049 by Guillaume.Abadie Do not set screen percentage method to TAA upsample when anti aliasing method is not TAA even if there is automatic fallback in the renderer. Change 3714306 by Guillaume.Abadie Fixes assertion failure in dynamic resolution state proxy with GPU busy time queries. Change 3714714 by Mark.Satterthwaite Tweak Metal GPU identification so that it works with eGPU boxes and protoype hardware - these changes only apply to macOS 10.13 so the system as a whole remains. Change 3716104 by Mark.Satterthwaite Fix 10.12/Xcode 8 compile errors from the build-farm which is still split until Fortnite can update. Change 3716120 by Mark.Satterthwaite Silence static-analysis. Change 3716158 by Guillaume.Abadie Rewrites editor primitive compositing to support TAA upsample. This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives. Change 3716271 by Daniel.Wright Lightmass correctness fixes * After these changes, point, spot, directional and sky lights closely match reference renderer Mitsuba after light unit conversions * Photon density trimming intended for direct photons was affecting indirect photons as well. This caused high noise for point / spot lights with a large attenuation radius. Indirect photon density even for small lights is 5x with this change, which improves 2nd bounce quality. * Removed legacy fudge factor on point / spot light photon energy * Spotlights no longer emit based on indirect photon paths. Fixes excessive photon energy from spot lights as they were emitting outside of the cone. * Fixed photons computing one more bounce than requested. * Added an option to use the Radiosity solver for all multibounce, replacing photons. Useful as a reference but generally too much noise indoors. * Fixed visualization of photons without final gather Change 3716434 by Mark.Satterthwaite Backout the remaining change from 3632041 that is no longer necessary - this was the last of the 4.18 Metal workarounds. Change 3716491 by Chris.Bunner Fixing up an edge-case on a recent optimization. Change 3716611 by Guillaume.Abadie Allows secondary screen percentage >= 100%. Change 3716977 by Guillaume.Abadie Back out changelist 3716158 to unblock QA pass. #jira UE-51580 Change 3717111 by Arne.Schober Fixing nomalization of Morph Tangents https://udn.unrealengine.com/questions/392462/ Also implemanted batching of the dispatches which should help worst case perfomance where dispatches become too small. CalculateInverseAccumulatedWeights is not cheap and proably should be moved onto a task thread that runs as soon as the input weights are ready. Change 3717127 by Mark.Satterthwaite Fix a mismerge from the reversion of 3632041 - part of the modified code had been moved into another file and I didn't initially notice. Change 3717178 by Mark.Satterthwaite Remove useless copy-pasted expressions from glsl_type::GetByteAddressBufferInstance & force MetalBackend to relink. Apparently the previous Mac libs were mysteriously broken. #jira UE-51583 Change 3717476 by Marcus.Wassmer Fix PS4 compile. funciton local statics not allowed on PSSL Also enabled the new atomics method for LPVs for all platforms Change 3717502 by Arne.Schober DR - Compiletime option for compressed ruleset (0.02ms perf gain on PS4 and disabled by default as it limits array size to 2million entries) Change 3717601 by Arne.Schober DR - Move cycle counter into more meaningfull locations. Change 3718054 by Guillaume.Abadie Removes unecessary check() failure on secondary upscale that fires when testing raw output screen percentage method. Change 3718066 by Guillaume.Abadie Reland: Rewrites editor primitive compositing to support TAA upsample. This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives. Change 3718589 by Mark.Satterthwaite Console-variable to enable and disable Manual-Vertex-Fetch for Metal and fix the internal code to handle the subtle changes in behaviour for vertex-declarations so we don't explode under the Metal validation layer. MVF works on macOS, though testing did expose an error with Tessellation on Nvidia (true for MVF enabled & disabled). Change 3718633 by Guillaume.Abadie Fixes temporal instability issue of TAA upsample with secondary screen percentage. Change 3718658 by Arne.Schober DR - 25% MorphTarget Speed increase because there was a bit of cache thrashing between the waves going on. Change 3718818 by Mark.Satterthwaite Fix compilation on hlslcc - integral values are not automatically converted into comparisons with zero. Change 3719004 by Guillaume.Abadie Lets the game viewport client automatically set raw output screen percentage method when doing dynamic resolution with stereo rendering but without TAA upsample. Change 3719375 by Mark.Satterthwaite Extend mtlpp compiler testing app to support Metal tessellation compute shaders so we can send Nvidia a much simpler reproduction of their regression. Change 3720099 by Mark.Satterthwaite Make the left-hand arguments work in airdiff. Change 3720413 by Mark.Satterthwaite Support standalone compute shaders in the mtlpp compiler test app. Change 3721232 by Mark.Satterthwaite No more Metal Shader Model 4 - instead we have to have a Metal Shader Model 5 w/o Tessellation as Nvidia's shader compiler is broken on all tessellation shaders in 10.13.0 and above. There is no guarantee that they will fix this prior to 10.14 and I can't afford to disable tessellation entirely as if I do that then the AMD & Intel compilers will also regress. As there is no Shader Model 4 platform on Mac anymore I've amended the LevelEditorActions to disable the preview modes when no appropriate shader platform is available. Change 3721244 by Mark.Satterthwaite Fix incorrect enum handling for Metal features due to overflow. #jira UE-51643 Change 3721338 by Mark.Satterthwaite MIssing file from 3721232 Change 3721818 by Mark.Satterthwaite Fix the Intel vector-array-dereference workaround so that it doesn't cause the AMD compiler to explode instead. Change 3722139 by Arne.Schober DR - [UE-51602] -Fixed Typo that accidently bound the LightingInstancebuffer to the Transform one #jira UE-51602 Change 3722165 by Rolando.Caloca DR - Default -opengl to GL4 Change 3722682 by Guillaume.Abadie Fixes wrong clear color in SSR important for VR that has a HMD mesh. Change 3722766 by Rolando.Caloca DR - Fix static analysis Change 3722943 by Mark.Satterthwaite Disable the METAL_SM5_NOTESS shader platform again - I can workaround the Nvidia pipeline state compiler crash by changing the buffer address space from "constant" to "device" as we're managing to confuse the poor thing. This won't materially affect AMD or Intel as they don't care much about this, but to limit performance issues on Nvidia we only need to do this for Tessellation Compute shaders. Change 3723100 by Mark.Satterthwaite Apparently users like enabling Metal shader standards that won't work on their current OS, so don't display those that aren't going to work & display an error message before quitting rather than crashing when trying to load a project that tries to use an incompatible shader version. Change 3723121 by Mark.Satterthwaite Fix build error. Change 3723245 by Daniel.Wright Ensure for when a reflection capture upload fails due to incorrect lighting scenario level handling Reflection captures with no data use an array index of 0, instead of -1. Might avoid reading uninitialized memory on PS4. Change 3723387 by Arne.Schober DR - Metal already applies the instance and vertexoffset in the shader Change 3723393 by Mark.Satterthwaite More fixes to the mtlpp compiler test application. Change 3725258 by Guillaume.Abadie Improves fast TAA upsample shader permutation by 15% on console. Change 3725555 by Chris.Bunner [Dupliate] CL 3725548 - Fixed invalid screenpercentage value in VehicleGame sample (was setting -1 but should default to 100). This has always been broken but was recently exposed by CL 3686200. Change 3726845 by Guillaume.Abadie Exposes SvPosition to material through screen position material expression, so that material no longer have SvPosition * InvViewSize * ViewSize precision loss. #jira UE-51428 Change 3728014 by Guillaume.Abadie Uses ScreenPosition material expression's PixelPosition pin in existing engine functions to improve precision. #jira UE-51428 Change 3728053 by Richard.Wallis Duplicate CL 3727958: Crash fix when using shared material libraries. Initial shader code library offset is not zero'd so all entry offsets were garbage. Change 3728339 by Guillaume.Abadie Adds project setting for TAA upample, and officialises TAA upsampling CVar. Change 3728549 by Guillaume.Abadie CsvProfiler is pretty cool, but even better with console autocompletion for lazy developers. Change 3728752 by nick.bullard Built and re-saved QA-MeshPaint #jira UE-50978 Change 3728775 by Guillaume.Abadie Implements r.DynamicRes.ChangePercentageThreshold to stabilize primary screen percentage. Change 3729224 by Uriel.Doyon Hidden levels now keep their last build data when using lighting scenarios. Hidden levels don't affect the scene anymore volumetric lighting when not using lighting scenarios. #jira UE-40454 #jira UE-38131 Change 3729243 by Marcus.Wassmer Update Ansel to 1.4 #github 4159 #jira UE-51545 Change 3729325 by zachary.wilson Adding indirect lighting to TM-LightingChannels #jira UE-47069 Change 3729485 by zachary.wilson Fixing ambient occlusion bias on QA-LightsStationary. Removed global PPV with bad settings, also fixed the shadow on the roof. #jira UE-50972 Change 3729629 by Uriel.Doyon Fixed crash when using debug view modes. Fixed d3ddebug error when clearing quad overdraw buffer. #jira UE-51836 Change 3730053 by Guillaume.Abadie Allows edititing of AScreenshotFunctionalTestBase::ScreenshotCamera. Change 3730308 by Guillaume.Abadie Disables TAA upsample on buffer visualization, and disallow screen percentage preview in editor viewport with any buffer visualization. Change 3730355 by Guillaume.Abadie Sacrifices consistency for good cvar name for TAA upsample. Change 3731403 by Daniel.Wright Reduced slider for ContactShadowLength to .1, algorithm produces poor results with larger values. Change 3731404 by Daniel.Wright Checkpoint for ScreenShadowMaskTexture, allowing 'vis ScreenShadowMaskTexture' Change 3731407 by Daniel.Wright Must opt-in for FDistanceFieldSceneData::VerifyIntegrity Change 3731517 by Guillaume.Abadie Freezes dynamic resolution heuristic when doing pause. Change 3732168 by Guillaume.Abadie Renames TAA upsampling cvar. Change 3732295 by Guillaume.Abadie Lets the scene texture's size and texel size return the correct sizes after TAA upsample. Change 3732313 by Guillaume.Abadie Implements SceneTexture material expressions' automated tests. Change 3734928 by Guillaume.Abadie Adds panic mode when the last N frames are over budget to the dynamic resolution heuristic. Change 3735966 by Ryan.Vance Fixing mac steamvr compile issue. Missed a few lines in the refactor because mac. Change 3736104 by Guillaume.Abadie Removes FSceneViewInitOptions::bDisableGameScreenPercentage brought by 4.18, that new screen percentage API do in a better way. Change 3736346 by Daniel.Wright Volumetric fog is always interpolated in the pixel shader, since per-vertex interpolation gives consistently poor results. Fixes Volumetric Fog on opaque in Forward, and on transparent in Deferred. Forward shading: per-pixel height fog is always done in the base pass, to work with MSAA correctly Change 3736348 by Daniel.Wright Forward shadowing of directional light for translucency * Static shadowing and CSM supported with minimal filtering (1 PCF) * Deferred renderer: affects translucency using 'Surface ForwardShading' lighting mode. Forward renderer: affects all translucency. Change 3736650 by Rolando.Caloca DR - vk - # of desc pools Change 3737985 by Guillaume.Abadie Fixes pixel inspector with primary and secondary screen percentage. Change 3738638 by Michael.Lentine Compile fix due to unclear operator precendence. Change 3739417 by Daniel.Wright Fixed a few issues with irradiance cache visualization Change 3739447 by Daniel.Wright Skip forward static shadowing in projects with static lighting disabled Change 3739595 by Daniel.Wright ConditionalPostLoad DistanceFieldReplacementMesh. Should fix a crash on load when static mesh derived data is being rebuilt, and the DistanceFieldReplacementMesh is in use. Change 3739598 by Daniel.Wright Disable capsules shadows on lowest shadow quality Change 3739611 by Daniel.Wright Added r.CapsuleDirectShadows and r.CapsuleIndirectShadows for more specific scalability control over capsule shadow features New Lighting Feature show flags for RTDF shadows and Capsule Shadows Change 3740516 by Guillaume.Abadie Fixes VR editor rendering only on eye with TAA upsample. #jira UE-52016 Change 3740580 by Guillaume.Abadie Fixes chromatic aberration with TAA upsample and multiple view rendering. #jira UE-51993 Change 3740588 by Guillaume.Abadie Gives to FXAA a more explicit draw event name for easier UDN support. Change 3740845 by Michael.Lentine Fix shipping build. Change 3740903 by Guillaume.Abadie Disables dynamic resolution threading outliers detection by default and includes editor UI GPU cost within dynamic resolution's begin/end frame events for better reliability of timestamp query based dynamic res in editor. Change 3741355 by Daniel.Wright Normalize planar reflection plane - fixes crash when scaling a BP with a planar reflection component Change 3741357 by Daniel.Wright More info on volumetric lightmap import failure Change 3742535 by Ryan.Vance Fix for view rect changes. Change 3743282 by Guillaume.Abadie Fixes a bug in dynamic resolution heuristic's outlier detection that was preventing the over budget panic to react. Change 3743559 by Michael.Lentine Port Siren changes for recompute tangents. This adds recompute tangents for cloth as well as the ability for recompute tangents to work across seams where vertices are duplicated. Change 3743679 by Guillaume.Abadie Cherry-pick 3743621: Fixes subsurface profile fallback to lit shading model when Opacity == 0, introduced by 3447144. #jira UE-51569 Change 3743906 by Ryan.Brucks BlueprintMaterialAndTextureNodes Plugin: Fix for clamping sampled HDR render target values by setting ERangeCompressionMode in the FReadSurfaceDataFlags to RCM_MinMax Change 3744096 by Ryan.Brucks BlueprintMaterialAndTextureNodes Plugin: removed Mip option from Texture2D_SampleUV_EditorOnly for now since reads from source data cannot access mips and it can be misleading. Change 3744253 by Guillaume.Abadie Fixes merge collisions of debug canvas rendering with High DPI, fixes stat unit on high DPI monitors, and fixes secondary screen percentages. Change 3744953 by Chris.Bunner Crash workaround. Change 3745628 by Marcus.Wassmer Temporarily disable recalctangent normal-smoothing #jira UE-52166 Change 3745942 by Guillaume.Abadie Fixes a todo in FCommonViewportClient Change 3746005 by Guillaume.Abadie Fixes stat UnitGraph on high DPI monitor. Change 3746029 by Guillaume.Abadie Oups.... Fix compilation. :D Change 3748322 by Guillaume.Abadie Shows dynamic resolution's primary screen percentage on stat unit/unitgraph console commands. Change 3748346 by Chris.Bunner Potential static analysis fix. Change 3748349 by Chris.Bunner Mac feature support flag fix on versions < 10.30. Change 3749336 by Guillaume.Abadie Fixes some spelling mistakes in dynamic resolution cvars. Thanks Daniel! Change 3749374 by Guillaume.Abadie Adds a black background on the stat unitgraph so timing curves can be seen no matter the content. Change 3749437 by Guillaume.Abadie Final UI polish up for `stat unitgraph` Change 3749719 by Guillaume.Abadie Fixes a crash when changing r.DynamicRes.MaxScreenPercentage below current screen percentage. Change 3750243 by Chris.Bunner Increasing controller's automated test timeout to allow for slower machines to complete the longest tests. #jira UE-48494, UE-51907 Change 3750728 by Guillaume.Abadie Fixes merge collision in chromatic aberration. #jira UE-52282 Change 3750791 by Guillaume.Abadie Fixes chromatic baerration R and G channel swap. Change 3751246 by Guillaume.Abadie Bypasses screen percentage apply with mobile LDR rendering. #jira UE-52089 Change 3752624 by Guillaume.Abadie Simplies dyn res state's event interface to a single virtual method. Change 3753766 by Chris.Bunner Rebuilt volumetric baked lighting test map and updated screenshots. #jira UE-52322 Change 3755108 by Guillaume.Abadie Fixes a bug where default dynamic resolution state was created at startup of server build. #jira UE-52345 Change 3755267 by Mark.Satterthwaite Fix condition controlling which features are enabled when iOS >= 10.3 - it wasn't working for iOS 11+ which was causing all kinds of problems. #jira UE-52301 Change 3755811 by Chris.Bunner Disable some new logging that was causing a stack overflow during EnginePreInit. #jira UE-52345 Change 3756983 by Mark.Satterthwaite Prevent different versions of metal_stdlib/ue4_stdlib from causing shader compilation failures due to a time-stamp mismatch between the local file & the PCH. This can happen when working with Xcode Beta releases that change the modification date, but not the content or compiler version, amongst other possibilities. #jira UE-52073 Change 3757156 by Guillaume.Abadie Fixes editor compositing with wireframe rendering. #jira UE-52017 Change 3757435 by Mark.Satterthwaite Workaround a bug in the MobileSceneCaptureRendering where it was copying the ViewInfo's ViewRect prior to it being configured by the mobile renderer. #jira UE-52327 Change 3757523 by Uriel.Doyon Fixed d3ddebug warning with unused inputs Change 3758318 by Guillaume.Abadie Cleaner fix for mobile scene captures. #jira UE-52327 Change 3759541 by Mark.Satterthwaite Don't enable Manual Vertex Fetch on iOS Metal for the moment as it isn't well tested there and will probably need further changes. Change 3695086 by Guillaume.Abadie Render thread dynamic resolution & TAA upsample. Merging //Tasks/UE4/Dev-DynamicRes/...@3694528 to //UE4/Dev-Rendering/... New features breakdown: - TAA upsample compute shader that accepts screen percentage from 50% to 200%, with a faster shader permutation for consoles; - Material no longer have to deal with BufferUV, and post process material after TAA upsample can sample any scene buffer seamlessly; - Material texture per view mip bias to produce sharper images with TAA upsample; - Render thread dynamic resolution heuristic is fully plugable by game code (for VR plugin specific heuristics); - Dynamic resolution in PIE and game builds; - Busy time queries in the RHI to be implemented on the different platforms so that the dynamic resolution heuristic can exactly associate GPU frame times with screen percentages in its history; - Game user settings to enable/disable dynamic resolution; - In editor viewport screen percentage config to previsualise and test content at different screen percentage. Fixes: - Various fixes for algorithms producing different outputs at different screen percentage. - Various fixes for algorithms sampling outside view rects. Refactors: - TAA shader - Moved some screen percentage specific members from FSceneView to FViewInfo for thread race bullet proofing. Aknowledgements: - VR plugins are broken - DFAO still have some artifacts Premiliminary review: Marcus.Wassmer Review for TAA refactor and TAA upsample shader: Brian.Karis Review for dynamic resolution: Brian.Karis [CL 3761165 by Chris Bunner in Main branch]
2017-11-16 11:36:35 -05:00
FIntRect* DistanceFieldAOHistoryViewRect,
TRefCountPtr<IPooledRenderTarget>* BentNormalHistoryState,
/** Output of Temporal Reprojection for the next step in the pipeline. */
FRDGTextureRef& BentNormalHistoryOutput,
const FDistanceFieldAOParameters& Parameters)
{
const FRDGSystemTextures& SystemTextures = FRDGSystemTextures::Get(GraphBuilder);
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
const FIntPoint SceneTextureExtent = View.GetSceneTexturesConfig().Extent;
if (BentNormalHistoryState && GAOUseHistory)
{
#if WITH_MGPU
RDG_GPU_STAT_SCOPE(GraphBuilder, AFRWaitForDistanceFieldAOHistory);
AddPass(GraphBuilder, RDG_EVENT_NAME("WaitForTemporalEffect"), [&View](FRHICommandList& RHICmdList)
{
static const FName NameForTemporalEffect("DistanceFieldAOHistory");
RHICmdList.WaitForTemporalEffect(FName(NameForTemporalEffect, View.ViewState->UniqueID));
});
#endif
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
FIntPoint BufferSize = GetBufferSizeForAO(View);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3461187) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3388286 on 2017/04/11 by Chris.Bunner Fix mips in texture GnmUAV creation. Change 3388287 on 2017/04/11 by Chris.Bunner Improved PS/CS code sharing for TemporalAA. Change 3388291 on 2017/04/11 by Chris.Bunner HLODs now correctly hide their children in shadow maps. Propagate bCastFarShadow flag on HLOD generation. #jira UE-42254 Change 3388448 on 2017/04/11 by Brian.Karis Better handle divide by zero Change 3388449 on 2017/04/11 by Brian.Karis Optimizations to shading model math. PR #3340: Bug fixes related to shader TODOs (Contributed by vgfx) Change 3388455 on 2017/04/11 by Uriel.Doyon Changed Remove for RemoveSwap when clearing dynamic component references Change 3388612 on 2017/04/11 by Simon.Tourangeau Support shaders in projects and in plugins When searching for a shader it will - First look in Engine/Shaders as usual - Then in project's Shader folder - Then in all enabled plugin Shader folders Project or plugin must be loaded in PostConfigInit phase Tested in PIE, engine (cooked, packaged) Change 3388819 on 2017/04/11 by Arne.Schober DR - Faster MorpthTarget implementation. Changed the previous Gather aproach to a scatter based one. Reaching about 110GB/s on PS4 which is up to 4x faster than the previous implementation. On PC DX11 the impact is lower due to unecessary UAV barriers but still 2x faster on AMD and up to 6x faster on Nvidia Hardware. #RB Lina.Halper, Rolando.Caloca Change 3388862 on 2017/04/11 by Guillaume.Abadie Allows Motion Blur and TAA in scene capture 2d. Change 3388953 on 2017/04/11 by Uriel.Doyon Fixed issue where lights from hidden levels where affecting the lighting build, by checking if the light is registered before adding it. #UE-43220 Change 3389138 on 2017/04/11 by Arne.Schober DR - Fix crash when opening a Level without Contentbrowser open. #RB Matt.Kuhlenschmidt Change 3389400 on 2017/04/11 by Uriel.Doyon - Renamed FMaterialResource::IsSeparateTranslucencyEnabled() to FMaterialResource::IsTranslucencyAfterDOFEnabled() - Removed different logic to determine if translucency after DOF was enabled, and centralized it into a single function: FSceneViewFamily::AllowTranslucencyAfterDOF() - FSceneRenderTargets::FinishRenderingSeparateTranslucency() now only resolves a single view, allowing better Begin/Finish scopes. - Renamed FSceneRenderTargets::SeparateTranslucencyDepthRT into FSceneRenderTargets::DownsampledTranslucencyDepthRT since this one is only allocated when rendering in downsampled mode. - Standard translucency is now rendered in the same resolution than translucency after DOF. (downsampled or full resolution) - Removed RenderTranslucencyParallel and merged it's logic into RenderTranslucency. Renamed DrawAllTranslucencyPasses to RenderViewTranslucency and added a parallel version RenderViewTranslucencyParallel. - Moved all debug draw logic (VisualizeLPV, ViewMeshElements and SimpleElementCollector) to a common place. - New option "r.AllowDownsampledStandardTranslucency" to control the downsampling of standard translucency. Affect blend module materials #jira UE-39505 Change 3389860 on 2017/04/12 by Richard.Wallis UE-41407 Cable actor does not render correctly in viewport on Mac. Build the mesh at creation time - call into exisiting mesh create function. Change 3390933 on 2017/04/12 by Arne.Schober DR - potential fix for UE-43125 where the this pointer might get invalidated in the middle of the function #RB Marcus.Wassmer Change 3391010 on 2017/04/12 by Ben.Marsh Compile UE4Game non-unity for Mac as part of nightly builds in //UE4/Dev-Rendering. Change 3391412 on 2017/04/12 by Uriel.Doyon Mesh Decals are now sorted according to the component TranslucencySortPriority. #jira UE-43053 Change 3392117 on 2017/04/13 by Guillaume.Abadie Integrates Raven's experimental PCSS for cascaded shadow map hidden behind a CVar. Change 3392179 on 2017/04/13 by Guillaume.Abadie Attempts to fix linux compilation by removing mistakenly submitted dead code. Change 3392231 on 2017/04/13 by Guillaume.Abadie Fixes a wrong enum value real quick in FRenderingObjectVersion I introduced after main integration... Oups... Change 3393879 on 2017/04/14 by Guillaume.Abadie Attempts to fix linux compilation warning. Change 3393881 on 2017/04/14 by Guillaume.Abadie Back out changelist 3393879 Change 3393882 on 2017/04/14 by Guillaume.Abadie Attempts #2 to fix linux compilation error. Change 3394100 on 2017/04/14 by Chris.Bunner Corrected material shared sampler usage with mip-biasing. Change 3394174 on 2017/04/14 by Rolando.Caloca DR - Change ensure to warning Change 3394221 on 2017/04/14 by Marcus.Wassmer Fix poseable mesh bounds calculation. Change 3396238 on 2017/04/17 by David.Hill Fix Bloom with LensFlare Duplicating fix - will also fix directly in 4.16 #jira 44050 Change 3397055 on 2017/04/17 by Joe.Graf Fixed Windows specific assumptions in Slate File Dialog Window's file filtering that lead to crashes #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3397921 on 2017/04/18 by Joe.Graf Rewrote SlateFileDlgWindow's file filtering to allow for extensionless file selection and to remove the O(n^2) file filtering #CodeReview: arciel.rekman, matt.kuhlenschmidt #rb: n/a Change 3398406 on 2017/04/18 by Rolando.Caloca DR - Fix shaders in plugins on Mac Change 3399546 on 2017/04/19 by Benjamin.Hyder Updating content for test levels (HDR, Bloom_FFT, DistanceFields_IndirectShadows) Change 3399725 on 2017/04/19 by Guillaume.Abadie Avoids compiling PCSS shaders for SM4. Change 3400295 on 2017/04/19 by Michael.Trepka Fixed metal shader compile errors in MorphTargets.usf Change 3400457 on 2017/04/19 by Michael.Trepka Merged Rolando's shader fixes Change 3400473 on 2017/04/19 by Arne.Schober DR - provide Aftermath Reason when init failed. #RB none Change 3400699 on 2017/04/19 by Arne.Schober DR - Fixed Text macro #RB none Change 3402280 on 2017/04/20 by Simon.Tovey Minor cascade fix #tests no crash #jira UE-41560 Change 3402517 on 2017/04/20 by Arne.Schober DR - Fix static analysis warning #RB none Change 3403897 on 2017/04/21 by Arne.Schober DR - [UE-43898] - Someone missed a shaderversion bump which poisoned the DCC #RB None #jira UE-43898 Change 3404591 on 2017/04/21 by Olaf.Piesche #jira UE-41979 Should never be crashing there, unless the mesh is changed after Init of the effect instance; this change safeguards against the number of mesh sections (and hence materials) changing after creation of the dynamic data to avoid the crash. Change 3407451 on 2017/04/25 by Daniel.Wright Fixed Indirect Lighting Cache updates caused by capsule indirect shadows forcing point samples, breaking primitives using ILCQ_Volume Change 3407452 on 2017/04/25 by Daniel.Wright Added r.AOJitterConeDirections, although disabled by default because it requires the temporal filter to be much stronger Change 3408397 on 2017/04/25 by Daniel.Wright ViewFamily.bRealtimeUpdate is set to false if Slate is throttling (like when toggling show flags). Volumetric fog discards the temporal history when not realtime, so you can see changes immediately. Change 3408428 on 2017/04/25 by Daniel.Wright Changed 'r.AOMaxObjectsPerCullTile' default back to 512 as 256 causes artifacts with RTDF shadows Change 3409764 on 2017/04/26 by Daniel.Wright Force dumping shader debug info for Global shaders when r.ShaderDevelopmentMode is enabled. Most of the shaders you want to look at in a GPU capture are global shaders, and global shaders create few debug files. 'recompileshaders global' time 35s -> 38s for SM5. Change 3411659 on 2017/04/27 by Daniel.Wright [Copy] Set Xbox One engine default screen percentage to 83.33 (1600x900), as ESRAM choices are dependent on this Change 3411660 on 2017/04/27 by Daniel.Wright [Copy] Global distance field composite shader has a version for each flattened axis, which improves efficiency when updating a slab which is what camera movement typically causes Change 3411667 on 2017/04/27 by Daniel.Wright [Copy] Discard distance field AO history buffer if it doesn't match the new buffer size. This prevents reading uinitialized data after a scene render target resize. Change 3411668 on 2017/04/27 by Daniel.Wright [Copy] Better indirect capsule shadow draw event info Change 3411669 on 2017/04/27 by Daniel.Wright [Copy] Pass down FeatureLevel to AddSubjectPrimitive and GatherShadowsForPrimitiveInner instead of calling the scene's virtual function. Showed up prominently in a sampling profile. Change 3411755 on 2017/04/27 by Daniel.Wright [Copy] Occlusion queries are now always done before the base pass if a nearly full prepass is being used(DDM_AllOccluders or DDM_AllOpaque) * Removed r.OcclusionQueryLocation Change 3411827 on 2017/04/27 by Daniel.Wright [Copy] Much cheaper implementation of IsForwardShadingEnabled which showed up prominently in sampling profiles - inlined function and no more unnecessary thread safety overhead Change 3411829 on 2017/04/27 by Daniel.Wright Added an ensure to console manager when doing FindTConsoleVariableData* on a FAutoConsoleVariableRef Change 3411837 on 2017/04/27 by Daniel.Wright [Copy] Worked around slow memcpy's being used to sort FSortedLightSceneInfo Change 3411838 on 2017/04/27 by Daniel.Wright [Copy] Skip tracking MaterialRenderProxyMap on cooked platforms Change 3411843 on 2017/04/27 by Daniel.Wright [Copy] Fixed r.ParallelShadows on PS4 and enabled by default engine-wide (saves 5ms RT with CSM) * Gnm was not tracking DepthClearValue when a depth target was set but not cleared * Gnm has a bug where TargetsNeedingEliminateFastClear does not persist across commandlist breaks. Moved FinishRenderingGBuffer before RenderShadowDepthMaps to workaround (accidentally not in this changelist) * Shadow depth rendering was not using BindClearMRTValues to populate GNM parallel commandlist TargetsNeedingEliminateFastClear values Change 3411873 on 2017/04/27 by Daniel.Wright [Copy] Deferred uniform expression caching. Setting multiple parameters on a material only causes its uniform expressions to be recached once. * 280 calls to CacheUniformExpressions -> 120 during Fortnite combat (6.5ms -> 3.4ms) Change 3411891 on 2017/04/27 by Daniel.Wright [Copy] GatherShadowPrimitives optimizations * Total GatherShadowPrimivies went from 2.3ms -> 1.3ms on PS4 with these changes in GPUPerfTest (duplicated 3x) * Much flatter primitive octree (16 -> 256 max primitives) * Primitives are culled against the shadow frustum before FPrimitiveSceneInfo or FPrimitiveSceneProxy are dereferenced in FilterPrimitiveForShadows * FilterPrimitiveForShadows work is done in a ParallelFor. Primitive octree nodes are processed in different jobs. * StaticMeshWholeSceneShadowBatchVisibility now only stores entries for meshes with bRequiresPerElementVisibility (landscape). Previously it was allocating and zeroing 500Kb 3x per frame (main view + 2 cascades) which cost ~.8ms on PS4. Change 3412192 on 2017/04/27 by Michael.Trepka Fixed Clang compile errors in FortniteGame, partial copy of CL 3313426 Change 3412547 on 2017/04/27 by Daniel.Wright Fixed leak of FShadowMapAllocation and FLightMapAllocation's found by licensee Change 3414239 on 2017/04/28 by Arne.Schober DR - UE-44500 - Removed use of Structured Buffer from MorphTargets due to HLSLCC not supporting it. #RB none #jira UE-44500 Change 3414754 on 2017/04/28 by Daniel.Wright Added VolumetricFogEmissive to ExponentialHeightFogComponent * Volumetric fog does not yet support precomputed lighting, so this is the only way to get an ambient lighting term Change 3416859 on 2017/05/01 by Arne.Schober DR - Remove FeatureLevel from the Clear Functions to reduce area of error #RB Rolando.Caloca Change 3420750 on 2017/05/03 by Arne.Schober DR - [UE-44497] - Fix several PS4 validation layer issues #RB Marcus.Wassmer Change 3422869 on 2017/05/04 by Benjamin.Hyder Fix compile error from merge. Change 3423938 on 2017/05/04 by Marc.Olano [UE-44453] Fix bloom problems by moving saturate after vector math Change 3424494 on 2017/05/04 by Olaf.Piesche #jira UE-44589 When using FindTCosoleVariableData, the CVar can not be an FAutoConsoleVariable. #tests as described in jira ticket Change 3424754 on 2017/05/04 by Uriel.Doyon Fixed call to get texture compressor module outside the main thread. #jira UE-42168 Change 3425447 on 2017/05/05 by Uriel.Doyon #buildfix Change 3427042 on 2017/05/05 by Arne.Schober DR - Fix one of my typos #RB none Change 3428119 on 2017/05/08 by Marcus.Wassmer Fix UE-44733 static analysis warning. Change 3428222 on 2017/05/08 by Uriel.Doyon Fixed bad condition in translucency rendering #jira UE-44452 Change 3429794 on 2017/05/08 by Uriel.Doyon Fixed issues with lightshafts and low res translucency. #jira UE-44452 Change 3430921 on 2017/05/09 by Rolando.Caloca DR - Get additional function pointers for D3DReflect, Compile and Disassemble instructions from the same DLL when compiling D3D11 shaders. - Also fixes using the correct fxc.exe path to match the DLL we distribute. Change 3431156 on 2017/05/09 by Rolando.Caloca DR - Remove unused code Change 3431396 on 2017/05/09 by David.Hill Copy of changes made directly in 4.16 ( CL 341037 ) to be submitted to dev-rendering #jira UE-44641 Change 3431400 on 2017/05/09 by Rolando.Caloca DR - Fix typo Change 3431527 on 2017/05/09 by David.Hill #rb: none Oops. comment out r.ShaderDevelopmentMode =1 Change 3431590 on 2017/05/09 by Daniel.Wright Removed early return landmine in USceneCaptureComponent2D::Serialize Change 3431591 on 2017/05/09 by Daniel.Wright Disallow map building while in PIE, or PIE while buildling lighting Change 3431594 on 2017/05/09 by Daniel.Wright Added RenderTargetFormat to UTextureRenderTarget2D, with choices of 8 bit, 16fp, 32fp and 1, 2 or 4 channels. Change 3431667 on 2017/05/09 by Daniel.Wright Volumetric fog now supersamples lighting when the history is not available, reducing noise on areas that just came on-screen or after a camera cut. * The number of samples is controlled by r.VolumetricFog.HistoryMissSupersampleCount, defaults to 4, cinematic scalability uses 16 * Under fast camera movement, volumetric fog cost went from 1.79ms -> 1.97ms with 4 samples, on a 970GTX Change 3432366 on 2017/05/10 by Richard.Wallis Fix for MetalRHI Asserts When Using "Profile GPU" With RHI-Thread/Parallel-Execution. Don't insert events when not in RHIThread or the actual single-threaded-render thread. #jira UE-36006 Change 3432367 on 2017/05/10 by Richard.Wallis Fix for Metal ReStartRenderPass assert with profiling. macOS metal asserts when using "profileGPU" even with -norhithread argument set. Added no action to the allowed render pass restart store actions for the depth buffer avoiding the assert. Interested to know the details if this is not a valid assumption to make - throwing away the depth buffer after a render pass I think would be a common case. #jira UE-44322 Change 3432409 on 2017/05/10 by Richard.Wallis Merged across CL 3415890 from Release-4.16 fix for (jira UE-43895) Fix for deferred store actions getting cleared when we don't have a valid render target. Change 3432833 on 2017/05/10 by Daniel.Wright Fixed Ocean compile error Change 3432874 on 2017/05/10 by Marc.Olano Improved captions for Noise and VectorNoise material nodes Change 3432947 on 2017/05/10 by Richard.Wallis Fix for shared Material Native Shader Libraries Don't Function With Iterative Cooking. Keep latest versions of shader byte code in native shared material packaged build in an intermediate directory than can be reused on a later iterative cook. - Doesn't handle deletion of the intermediate directory contents. Assumed to be a higher level requirement on non iterative cook flag. #jira UE-44657 Change 3433484 on 2017/05/10 by Arne.Schober DR - UE-44393 - Move ShaderPlatform into TShaderMap for extra debuginformation when it fails to find a proper shader. Also log when Gobalshaders are verified and recompiled. #jira UE-44393 #RB Daniel.Wright Change 3433515 on 2017/05/10 by Arne.Schober DR - Fix a bug where recompileshaders changed while compiling causes a crash where the chached local vertex factories are mutated while been used. #RB Daniel.Wright Change 3433606 on 2017/05/10 by Daniel.Wright Fixed static shadowing of volumetric fog and translucency causing shadowing past the lightmass importance volume. Change 3433619 on 2017/05/10 by Daniel.Wright Skip recapturing reflection captures when PropagateLightingScenarioChange is being called for a level unload. This leaves stale results in reflection captures around when hiding a level in the editor, but avoids the double recapture that happens when swapping lighting scenarios in game, and the unnecessary reflection capture update when exiting PIE. Change 3433795 on 2017/05/10 by Arne.Schober DR - add cmdline to select a GPU vendor when multiple GPUs from differnt Vendors are installed into the same Machine #RB marcus.Wassmer Change 3433941 on 2017/05/10 by Daniel.Wright Cone vs tile bounding sphere intersection tests for Light Grid culling of spotlights, which provides much tighter culling than just View space tile AABB vs light bounding sphere. * Forward shading BasePass 3.7ms -> 2.4ms in a scene with 24 spotlights on 970GTX * Volumetric fog 2.87ms -> 2.09ms in the same scene Change 3435139 on 2017/05/11 by Daniel.Wright Restored GTextureRenderTarget2DMaxSizeX which is used by Ocean Change 3435297 on 2017/05/11 by Arne.Schober DR - Remove manual AlignOf and use C++11 keyword instead #RB Steve.Robb Change 3435367 on 2017/05/11 by Daniel.Wright Circle vertex buffer for slightly tighter voxelization of volumetric fog shadowed lights * 1.5ms -> 1.38ms on 970 GTX with 24 spotlights Change 3435522 on 2017/05/11 by Brian.Karis Dither opacity mask now stacks properly for non parallel polys. Dither is randomized by triangle normal. Change 3436063 on 2017/05/11 by Daniel.Wright Disabled CLB_AggressiveBatching for PC d3d12 as it causes flickering artifacts in lighting Change 3436269 on 2017/05/11 by Uriel.Doyon Fixed UVChannel data possibly not up-to-date depending on user manips. Change 3436611 on 2017/05/12 by Simon.Tovey Improved name and tooltip for static mesh property controlling generation of alias tables for uniform sampling. Change 3436676 on 2017/05/12 by Simon.Tovey Fix for fixed bounds being "invalid" unless set via the toolbar option. Change 3436700 on 2017/05/12 by Simon.Tovey Crash fix. Issue found in https://udn.unrealengine.com/questions/355944/crash-in-fdynamicspriteemitterdatagetdynamicmeshel.html Particle proxies would have stale material resource pointers if the material is changed while the system was invisible. If the old material is freed during this time, the next time the system renders it will crash. Change 3437367 on 2017/05/12 by Brian.Karis Fixed bug with small UV charts not packing. Change 3437860 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI alignment is 4 for int64 #RB none Change 3437972 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI function calls cannot take alingned structures. In all of the cases the copy was completely unnecessary. #RB none Change 3437975 on 2017/05/12 by Chris.Bunner Added calculation for MaterialParamsEx to MeshDecals.usf. #jira UE-43052 Change 3438109 on 2017/05/12 by Rolando.Caloca DR - Support for -nomcpp on SCW Change 3438889 on 2017/05/15 by Chris.Bunner Nullptr check in a few material uniform expressions. Change 3439351 on 2017/05/15 by Chris.Bunner Added tooltip to Power material expression. Change 3439763 on 2017/05/15 by Daniel.Wright Apply passed in DistanceBiasSqr to line lights - allows volumetric fog to reduce aliasing on line lights Change 3439764 on 2017/05/15 by Daniel.Wright Fixed order of operations with bTreatMaxDepthUnshadowed - manifested as unfiltered static shadow depth lookups Change 3440722 on 2017/05/16 by Guillaume.Abadie Exposes Scene capture's FOV to blueprints Change 3441680 on 2017/05/16 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3441884 on 2017/05/16 by Uriel.Doyon Fixed StreamingDistanceMultiplier not being applied to the texture streaming data. Change 3442800 on 2017/05/17 by Gil.Gribb Fixed botched merge. Change 3442896 on 2017/05/17 by Gil.Gribb UE4 - Allowed the possibility of running the RHI "thread" on task threads instead and cleaned up and unified the conditionals involved. By default we still have a dedicated RHI thread because it tested slightly faster. Change 3443951 on 2017/05/17 by Richard.Wallis Added Apple override allocator macro - each command encoder type needs it's own allocator queue. Change 3444787 on 2017/05/17 by Daniel.Wright Fixed DBuffer decal default normal (used when DBuffer decals enabled, but not decals rendered) not reconstructing zero properly, adding -.008 to WorldNormal which then caused artifacts with forward lighting specular on materials with roughness near 0. Change 3444882 on 2017/05/17 by Daniel.Wright Added comment to FClearValueBinding::DefaultNormal8Bit to make the dependency on shader decode clear Change 3444883 on 2017/05/17 by Brian.Karis Improved contact shadows Change 3445048 on 2017/05/17 by Daniel.Wright Fixed particle lights in forward shading, they were not setting the lighting channel mask properly Change 3445107 on 2017/05/17 by Michael.Trepka Changed the order of operations in FMetalStateCache::SetRenderState to work around an issue with some Intel drivers where they would not recalculate the raster state in some edge cases. #jira UE-43725 Change 3445212 on 2017/05/17 by Uriel.Doyon Added a -CSV option to ListTextures command Change 3445947 on 2017/05/18 by Richard.Wallis Clone of Release-4.16 Stream CL 3437181 and CL 3442450 - fix(s) for black rendering on macOS El Cap with Nvidia GPU. Move sampling of EyeAdaption texture to pixel shader for Mac Metal using shader language version <= 1 only. Change 3446545 on 2017/05/18 by Chris.Bunner Removed hardcoded (and unused) MRT write from Decal shaders. #jira UE-45095 Change 3446568 on 2017/05/18 by Marc.Olano Sobol and image-based importance sampling C++ functions and blueprint nodes Change 3446988 on 2017/05/18 by Marc.Olano Fix build error: missing include Change 3446990 on 2017/05/18 by Marc.Olano Cell-indexed Sobol sampling for shaders (in MonteCarlo.usf) and materials (Sobol and TemporalSobol nodes) Change 3447142 on 2017/05/18 by Rolando.Caloca DR - RWLock instead of mutex for PSO cache Change 3447144 on 2017/05/18 by Uriel.Doyon Moved shading model code to SetGBufferFromShadingModel(). This allows the code to be reused in other shader files. Change 3447794 on 2017/05/18 by Brian.Karis Virtual texturing foundation code Change 3448944 on 2017/05/19 by Arciel.Rekman Fix non-unity Linux (and Mac, etc) builds. - Mac fix is tentative, did not try. Change 3449183 on 2017/05/19 by Marcus.Wassmer Duplicate fix for reflection captures to happen after sequencer updates. Change 3449196 on 2017/05/19 by Uriel.Doyon Handling RCM_MinMax when reading FloatRGBA textures. This fixes pixel inspector always reading 1 for scene color values greater than one. Change 3451652 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45245 Change 3451660 on 2017/05/22 by Chris.Bunner Additional compile fix. #jira UE-45245 Change 3451897 on 2017/05/22 by Daniel.Wright Moved RTDF shadow project back after the base pass, since it samples the GBuffer for subsurface shadowing. Removed r.DFShadowAsyncCompute which was relying on the previous ordering. Change 3452055 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix #jira UE-45265 Change 3452089 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452108 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452179 on 2017/05/22 by Brian.Karis Exposed dimensions. Fixed static analysis. Change 3452734 on 2017/05/22 by Daniel.Wright When post processing is disabled, TPT_TranslucencyAfterDOF translucency gets forced into the standard translucency pass. Change 3452770 on 2017/05/22 by Daniel.Wright Static light source shapes drawn into reflection captures handle SourceLength via scaled sphere Change 3452861 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix Change 3452952 on 2017/05/22 by Brian.Karis Small VT fixes Change 3453647 on 2017/05/23 by Richard.Wallis Fix for tessellation shaders on Mac (Metal v1.2) failing to compile. #jira UE-45227 Change 3454844 on 2017/05/23 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 on 2017/05/23 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3457131 on 2017/05/24 by Arne.Schober DR - [UE-45317] - Fix Depthbuffer not available for resolve in Forward mode #jira UE-45317 #RB Chris.Bunner Change 3457141 on 2017/05/24 by Marc.Olano Sobol bug fixes Change 3457953 on 2017/05/24 by Brian.Karis Fix static analysis #jira UE-45315 #jira UE-45314 #jira UE-45313 Change 3459064 on 2017/05/25 by Chris.Bunner Fix for out of bounds material translation crash. #jira UE-45406 Change 3459700 on 2017/05/25 by Brian.Karis Revert using sprite index buffer because the vert order is different. Change 3459847 on 2017/05/25 by Chris.Bunner Fixing ensure in RenderTestMap. [CL 3461201 by Chris Bunner in Main branch]
2017-05-26 08:22:50 -04:00
if (*BentNormalHistoryState
&& !View.bCameraCut
&& !View.bPrevTransformsReset
&& View.Family->bRealtimeUpdate
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3461187) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 3388286 on 2017/04/11 by Chris.Bunner Fix mips in texture GnmUAV creation. Change 3388287 on 2017/04/11 by Chris.Bunner Improved PS/CS code sharing for TemporalAA. Change 3388291 on 2017/04/11 by Chris.Bunner HLODs now correctly hide their children in shadow maps. Propagate bCastFarShadow flag on HLOD generation. #jira UE-42254 Change 3388448 on 2017/04/11 by Brian.Karis Better handle divide by zero Change 3388449 on 2017/04/11 by Brian.Karis Optimizations to shading model math. PR #3340: Bug fixes related to shader TODOs (Contributed by vgfx) Change 3388455 on 2017/04/11 by Uriel.Doyon Changed Remove for RemoveSwap when clearing dynamic component references Change 3388612 on 2017/04/11 by Simon.Tourangeau Support shaders in projects and in plugins When searching for a shader it will - First look in Engine/Shaders as usual - Then in project's Shader folder - Then in all enabled plugin Shader folders Project or plugin must be loaded in PostConfigInit phase Tested in PIE, engine (cooked, packaged) Change 3388819 on 2017/04/11 by Arne.Schober DR - Faster MorpthTarget implementation. Changed the previous Gather aproach to a scatter based one. Reaching about 110GB/s on PS4 which is up to 4x faster than the previous implementation. On PC DX11 the impact is lower due to unecessary UAV barriers but still 2x faster on AMD and up to 6x faster on Nvidia Hardware. #RB Lina.Halper, Rolando.Caloca Change 3388862 on 2017/04/11 by Guillaume.Abadie Allows Motion Blur and TAA in scene capture 2d. Change 3388953 on 2017/04/11 by Uriel.Doyon Fixed issue where lights from hidden levels where affecting the lighting build, by checking if the light is registered before adding it. #UE-43220 Change 3389138 on 2017/04/11 by Arne.Schober DR - Fix crash when opening a Level without Contentbrowser open. #RB Matt.Kuhlenschmidt Change 3389400 on 2017/04/11 by Uriel.Doyon - Renamed FMaterialResource::IsSeparateTranslucencyEnabled() to FMaterialResource::IsTranslucencyAfterDOFEnabled() - Removed different logic to determine if translucency after DOF was enabled, and centralized it into a single function: FSceneViewFamily::AllowTranslucencyAfterDOF() - FSceneRenderTargets::FinishRenderingSeparateTranslucency() now only resolves a single view, allowing better Begin/Finish scopes. - Renamed FSceneRenderTargets::SeparateTranslucencyDepthRT into FSceneRenderTargets::DownsampledTranslucencyDepthRT since this one is only allocated when rendering in downsampled mode. - Standard translucency is now rendered in the same resolution than translucency after DOF. (downsampled or full resolution) - Removed RenderTranslucencyParallel and merged it's logic into RenderTranslucency. Renamed DrawAllTranslucencyPasses to RenderViewTranslucency and added a parallel version RenderViewTranslucencyParallel. - Moved all debug draw logic (VisualizeLPV, ViewMeshElements and SimpleElementCollector) to a common place. - New option "r.AllowDownsampledStandardTranslucency" to control the downsampling of standard translucency. Affect blend module materials #jira UE-39505 Change 3389860 on 2017/04/12 by Richard.Wallis UE-41407 Cable actor does not render correctly in viewport on Mac. Build the mesh at creation time - call into exisiting mesh create function. Change 3390933 on 2017/04/12 by Arne.Schober DR - potential fix for UE-43125 where the this pointer might get invalidated in the middle of the function #RB Marcus.Wassmer Change 3391010 on 2017/04/12 by Ben.Marsh Compile UE4Game non-unity for Mac as part of nightly builds in //UE4/Dev-Rendering. Change 3391412 on 2017/04/12 by Uriel.Doyon Mesh Decals are now sorted according to the component TranslucencySortPriority. #jira UE-43053 Change 3392117 on 2017/04/13 by Guillaume.Abadie Integrates Raven's experimental PCSS for cascaded shadow map hidden behind a CVar. Change 3392179 on 2017/04/13 by Guillaume.Abadie Attempts to fix linux compilation by removing mistakenly submitted dead code. Change 3392231 on 2017/04/13 by Guillaume.Abadie Fixes a wrong enum value real quick in FRenderingObjectVersion I introduced after main integration... Oups... Change 3393879 on 2017/04/14 by Guillaume.Abadie Attempts to fix linux compilation warning. Change 3393881 on 2017/04/14 by Guillaume.Abadie Back out changelist 3393879 Change 3393882 on 2017/04/14 by Guillaume.Abadie Attempts #2 to fix linux compilation error. Change 3394100 on 2017/04/14 by Chris.Bunner Corrected material shared sampler usage with mip-biasing. Change 3394174 on 2017/04/14 by Rolando.Caloca DR - Change ensure to warning Change 3394221 on 2017/04/14 by Marcus.Wassmer Fix poseable mesh bounds calculation. Change 3396238 on 2017/04/17 by David.Hill Fix Bloom with LensFlare Duplicating fix - will also fix directly in 4.16 #jira 44050 Change 3397055 on 2017/04/17 by Joe.Graf Fixed Windows specific assumptions in Slate File Dialog Window's file filtering that lead to crashes #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3397921 on 2017/04/18 by Joe.Graf Rewrote SlateFileDlgWindow's file filtering to allow for extensionless file selection and to remove the O(n^2) file filtering #CodeReview: arciel.rekman, matt.kuhlenschmidt #rb: n/a Change 3398406 on 2017/04/18 by Rolando.Caloca DR - Fix shaders in plugins on Mac Change 3399546 on 2017/04/19 by Benjamin.Hyder Updating content for test levels (HDR, Bloom_FFT, DistanceFields_IndirectShadows) Change 3399725 on 2017/04/19 by Guillaume.Abadie Avoids compiling PCSS shaders for SM4. Change 3400295 on 2017/04/19 by Michael.Trepka Fixed metal shader compile errors in MorphTargets.usf Change 3400457 on 2017/04/19 by Michael.Trepka Merged Rolando's shader fixes Change 3400473 on 2017/04/19 by Arne.Schober DR - provide Aftermath Reason when init failed. #RB none Change 3400699 on 2017/04/19 by Arne.Schober DR - Fixed Text macro #RB none Change 3402280 on 2017/04/20 by Simon.Tovey Minor cascade fix #tests no crash #jira UE-41560 Change 3402517 on 2017/04/20 by Arne.Schober DR - Fix static analysis warning #RB none Change 3403897 on 2017/04/21 by Arne.Schober DR - [UE-43898] - Someone missed a shaderversion bump which poisoned the DCC #RB None #jira UE-43898 Change 3404591 on 2017/04/21 by Olaf.Piesche #jira UE-41979 Should never be crashing there, unless the mesh is changed after Init of the effect instance; this change safeguards against the number of mesh sections (and hence materials) changing after creation of the dynamic data to avoid the crash. Change 3407451 on 2017/04/25 by Daniel.Wright Fixed Indirect Lighting Cache updates caused by capsule indirect shadows forcing point samples, breaking primitives using ILCQ_Volume Change 3407452 on 2017/04/25 by Daniel.Wright Added r.AOJitterConeDirections, although disabled by default because it requires the temporal filter to be much stronger Change 3408397 on 2017/04/25 by Daniel.Wright ViewFamily.bRealtimeUpdate is set to false if Slate is throttling (like when toggling show flags). Volumetric fog discards the temporal history when not realtime, so you can see changes immediately. Change 3408428 on 2017/04/25 by Daniel.Wright Changed 'r.AOMaxObjectsPerCullTile' default back to 512 as 256 causes artifacts with RTDF shadows Change 3409764 on 2017/04/26 by Daniel.Wright Force dumping shader debug info for Global shaders when r.ShaderDevelopmentMode is enabled. Most of the shaders you want to look at in a GPU capture are global shaders, and global shaders create few debug files. 'recompileshaders global' time 35s -> 38s for SM5. Change 3411659 on 2017/04/27 by Daniel.Wright [Copy] Set Xbox One engine default screen percentage to 83.33 (1600x900), as ESRAM choices are dependent on this Change 3411660 on 2017/04/27 by Daniel.Wright [Copy] Global distance field composite shader has a version for each flattened axis, which improves efficiency when updating a slab which is what camera movement typically causes Change 3411667 on 2017/04/27 by Daniel.Wright [Copy] Discard distance field AO history buffer if it doesn't match the new buffer size. This prevents reading uinitialized data after a scene render target resize. Change 3411668 on 2017/04/27 by Daniel.Wright [Copy] Better indirect capsule shadow draw event info Change 3411669 on 2017/04/27 by Daniel.Wright [Copy] Pass down FeatureLevel to AddSubjectPrimitive and GatherShadowsForPrimitiveInner instead of calling the scene's virtual function. Showed up prominently in a sampling profile. Change 3411755 on 2017/04/27 by Daniel.Wright [Copy] Occlusion queries are now always done before the base pass if a nearly full prepass is being used(DDM_AllOccluders or DDM_AllOpaque) * Removed r.OcclusionQueryLocation Change 3411827 on 2017/04/27 by Daniel.Wright [Copy] Much cheaper implementation of IsForwardShadingEnabled which showed up prominently in sampling profiles - inlined function and no more unnecessary thread safety overhead Change 3411829 on 2017/04/27 by Daniel.Wright Added an ensure to console manager when doing FindTConsoleVariableData* on a FAutoConsoleVariableRef Change 3411837 on 2017/04/27 by Daniel.Wright [Copy] Worked around slow memcpy's being used to sort FSortedLightSceneInfo Change 3411838 on 2017/04/27 by Daniel.Wright [Copy] Skip tracking MaterialRenderProxyMap on cooked platforms Change 3411843 on 2017/04/27 by Daniel.Wright [Copy] Fixed r.ParallelShadows on PS4 and enabled by default engine-wide (saves 5ms RT with CSM) * Gnm was not tracking DepthClearValue when a depth target was set but not cleared * Gnm has a bug where TargetsNeedingEliminateFastClear does not persist across commandlist breaks. Moved FinishRenderingGBuffer before RenderShadowDepthMaps to workaround (accidentally not in this changelist) * Shadow depth rendering was not using BindClearMRTValues to populate GNM parallel commandlist TargetsNeedingEliminateFastClear values Change 3411873 on 2017/04/27 by Daniel.Wright [Copy] Deferred uniform expression caching. Setting multiple parameters on a material only causes its uniform expressions to be recached once. * 280 calls to CacheUniformExpressions -> 120 during Fortnite combat (6.5ms -> 3.4ms) Change 3411891 on 2017/04/27 by Daniel.Wright [Copy] GatherShadowPrimitives optimizations * Total GatherShadowPrimivies went from 2.3ms -> 1.3ms on PS4 with these changes in GPUPerfTest (duplicated 3x) * Much flatter primitive octree (16 -> 256 max primitives) * Primitives are culled against the shadow frustum before FPrimitiveSceneInfo or FPrimitiveSceneProxy are dereferenced in FilterPrimitiveForShadows * FilterPrimitiveForShadows work is done in a ParallelFor. Primitive octree nodes are processed in different jobs. * StaticMeshWholeSceneShadowBatchVisibility now only stores entries for meshes with bRequiresPerElementVisibility (landscape). Previously it was allocating and zeroing 500Kb 3x per frame (main view + 2 cascades) which cost ~.8ms on PS4. Change 3412192 on 2017/04/27 by Michael.Trepka Fixed Clang compile errors in FortniteGame, partial copy of CL 3313426 Change 3412547 on 2017/04/27 by Daniel.Wright Fixed leak of FShadowMapAllocation and FLightMapAllocation's found by licensee Change 3414239 on 2017/04/28 by Arne.Schober DR - UE-44500 - Removed use of Structured Buffer from MorphTargets due to HLSLCC not supporting it. #RB none #jira UE-44500 Change 3414754 on 2017/04/28 by Daniel.Wright Added VolumetricFogEmissive to ExponentialHeightFogComponent * Volumetric fog does not yet support precomputed lighting, so this is the only way to get an ambient lighting term Change 3416859 on 2017/05/01 by Arne.Schober DR - Remove FeatureLevel from the Clear Functions to reduce area of error #RB Rolando.Caloca Change 3420750 on 2017/05/03 by Arne.Schober DR - [UE-44497] - Fix several PS4 validation layer issues #RB Marcus.Wassmer Change 3422869 on 2017/05/04 by Benjamin.Hyder Fix compile error from merge. Change 3423938 on 2017/05/04 by Marc.Olano [UE-44453] Fix bloom problems by moving saturate after vector math Change 3424494 on 2017/05/04 by Olaf.Piesche #jira UE-44589 When using FindTCosoleVariableData, the CVar can not be an FAutoConsoleVariable. #tests as described in jira ticket Change 3424754 on 2017/05/04 by Uriel.Doyon Fixed call to get texture compressor module outside the main thread. #jira UE-42168 Change 3425447 on 2017/05/05 by Uriel.Doyon #buildfix Change 3427042 on 2017/05/05 by Arne.Schober DR - Fix one of my typos #RB none Change 3428119 on 2017/05/08 by Marcus.Wassmer Fix UE-44733 static analysis warning. Change 3428222 on 2017/05/08 by Uriel.Doyon Fixed bad condition in translucency rendering #jira UE-44452 Change 3429794 on 2017/05/08 by Uriel.Doyon Fixed issues with lightshafts and low res translucency. #jira UE-44452 Change 3430921 on 2017/05/09 by Rolando.Caloca DR - Get additional function pointers for D3DReflect, Compile and Disassemble instructions from the same DLL when compiling D3D11 shaders. - Also fixes using the correct fxc.exe path to match the DLL we distribute. Change 3431156 on 2017/05/09 by Rolando.Caloca DR - Remove unused code Change 3431396 on 2017/05/09 by David.Hill Copy of changes made directly in 4.16 ( CL 341037 ) to be submitted to dev-rendering #jira UE-44641 Change 3431400 on 2017/05/09 by Rolando.Caloca DR - Fix typo Change 3431527 on 2017/05/09 by David.Hill #rb: none Oops. comment out r.ShaderDevelopmentMode =1 Change 3431590 on 2017/05/09 by Daniel.Wright Removed early return landmine in USceneCaptureComponent2D::Serialize Change 3431591 on 2017/05/09 by Daniel.Wright Disallow map building while in PIE, or PIE while buildling lighting Change 3431594 on 2017/05/09 by Daniel.Wright Added RenderTargetFormat to UTextureRenderTarget2D, with choices of 8 bit, 16fp, 32fp and 1, 2 or 4 channels. Change 3431667 on 2017/05/09 by Daniel.Wright Volumetric fog now supersamples lighting when the history is not available, reducing noise on areas that just came on-screen or after a camera cut. * The number of samples is controlled by r.VolumetricFog.HistoryMissSupersampleCount, defaults to 4, cinematic scalability uses 16 * Under fast camera movement, volumetric fog cost went from 1.79ms -> 1.97ms with 4 samples, on a 970GTX Change 3432366 on 2017/05/10 by Richard.Wallis Fix for MetalRHI Asserts When Using "Profile GPU" With RHI-Thread/Parallel-Execution. Don't insert events when not in RHIThread or the actual single-threaded-render thread. #jira UE-36006 Change 3432367 on 2017/05/10 by Richard.Wallis Fix for Metal ReStartRenderPass assert with profiling. macOS metal asserts when using "profileGPU" even with -norhithread argument set. Added no action to the allowed render pass restart store actions for the depth buffer avoiding the assert. Interested to know the details if this is not a valid assumption to make - throwing away the depth buffer after a render pass I think would be a common case. #jira UE-44322 Change 3432409 on 2017/05/10 by Richard.Wallis Merged across CL 3415890 from Release-4.16 fix for (jira UE-43895) Fix for deferred store actions getting cleared when we don't have a valid render target. Change 3432833 on 2017/05/10 by Daniel.Wright Fixed Ocean compile error Change 3432874 on 2017/05/10 by Marc.Olano Improved captions for Noise and VectorNoise material nodes Change 3432947 on 2017/05/10 by Richard.Wallis Fix for shared Material Native Shader Libraries Don't Function With Iterative Cooking. Keep latest versions of shader byte code in native shared material packaged build in an intermediate directory than can be reused on a later iterative cook. - Doesn't handle deletion of the intermediate directory contents. Assumed to be a higher level requirement on non iterative cook flag. #jira UE-44657 Change 3433484 on 2017/05/10 by Arne.Schober DR - UE-44393 - Move ShaderPlatform into TShaderMap for extra debuginformation when it fails to find a proper shader. Also log when Gobalshaders are verified and recompiled. #jira UE-44393 #RB Daniel.Wright Change 3433515 on 2017/05/10 by Arne.Schober DR - Fix a bug where recompileshaders changed while compiling causes a crash where the chached local vertex factories are mutated while been used. #RB Daniel.Wright Change 3433606 on 2017/05/10 by Daniel.Wright Fixed static shadowing of volumetric fog and translucency causing shadowing past the lightmass importance volume. Change 3433619 on 2017/05/10 by Daniel.Wright Skip recapturing reflection captures when PropagateLightingScenarioChange is being called for a level unload. This leaves stale results in reflection captures around when hiding a level in the editor, but avoids the double recapture that happens when swapping lighting scenarios in game, and the unnecessary reflection capture update when exiting PIE. Change 3433795 on 2017/05/10 by Arne.Schober DR - add cmdline to select a GPU vendor when multiple GPUs from differnt Vendors are installed into the same Machine #RB marcus.Wassmer Change 3433941 on 2017/05/10 by Daniel.Wright Cone vs tile bounding sphere intersection tests for Light Grid culling of spotlights, which provides much tighter culling than just View space tile AABB vs light bounding sphere. * Forward shading BasePass 3.7ms -> 2.4ms in a scene with 24 spotlights on 970GTX * Volumetric fog 2.87ms -> 2.09ms in the same scene Change 3435139 on 2017/05/11 by Daniel.Wright Restored GTextureRenderTarget2DMaxSizeX which is used by Ocean Change 3435297 on 2017/05/11 by Arne.Schober DR - Remove manual AlignOf and use C++11 keyword instead #RB Steve.Robb Change 3435367 on 2017/05/11 by Daniel.Wright Circle vertex buffer for slightly tighter voxelization of volumetric fog shadowed lights * 1.5ms -> 1.38ms on 970 GTX with 24 spotlights Change 3435522 on 2017/05/11 by Brian.Karis Dither opacity mask now stacks properly for non parallel polys. Dither is randomized by triangle normal. Change 3436063 on 2017/05/11 by Daniel.Wright Disabled CLB_AggressiveBatching for PC d3d12 as it causes flickering artifacts in lighting Change 3436269 on 2017/05/11 by Uriel.Doyon Fixed UVChannel data possibly not up-to-date depending on user manips. Change 3436611 on 2017/05/12 by Simon.Tovey Improved name and tooltip for static mesh property controlling generation of alias tables for uniform sampling. Change 3436676 on 2017/05/12 by Simon.Tovey Fix for fixed bounds being "invalid" unless set via the toolbar option. Change 3436700 on 2017/05/12 by Simon.Tovey Crash fix. Issue found in https://udn.unrealengine.com/questions/355944/crash-in-fdynamicspriteemitterdatagetdynamicmeshel.html Particle proxies would have stale material resource pointers if the material is changed while the system was invisible. If the old material is freed during this time, the next time the system renders it will crash. Change 3437367 on 2017/05/12 by Brian.Karis Fixed bug with small UV charts not packing. Change 3437860 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI alignment is 4 for int64 #RB none Change 3437972 on 2017/05/12 by Arne.Schober DR - Fix alignment compile error in win32 where according to ABI function calls cannot take alingned structures. In all of the cases the copy was completely unnecessary. #RB none Change 3437975 on 2017/05/12 by Chris.Bunner Added calculation for MaterialParamsEx to MeshDecals.usf. #jira UE-43052 Change 3438109 on 2017/05/12 by Rolando.Caloca DR - Support for -nomcpp on SCW Change 3438889 on 2017/05/15 by Chris.Bunner Nullptr check in a few material uniform expressions. Change 3439351 on 2017/05/15 by Chris.Bunner Added tooltip to Power material expression. Change 3439763 on 2017/05/15 by Daniel.Wright Apply passed in DistanceBiasSqr to line lights - allows volumetric fog to reduce aliasing on line lights Change 3439764 on 2017/05/15 by Daniel.Wright Fixed order of operations with bTreatMaxDepthUnshadowed - manifested as unfiltered static shadow depth lookups Change 3440722 on 2017/05/16 by Guillaume.Abadie Exposes Scene capture's FOV to blueprints Change 3441680 on 2017/05/16 by Uriel.Doyon Added units to point light intensity, to allow the user to specify the value in candelas or lumens. New point light actors now configure the intensity in candelas by default. Replaced viewport exposure settings by an EV100 slider. Hidding the tone mapper in the show flag now still applies the exposure. Added a new AutoExposure method called EV100 which allows to specify : - MinEV100, MaxEV100 - Calibration Constnat - Exposure Compensation #jira UE-42783 Change 3441884 on 2017/05/16 by Uriel.Doyon Fixed StreamingDistanceMultiplier not being applied to the texture streaming data. Change 3442800 on 2017/05/17 by Gil.Gribb Fixed botched merge. Change 3442896 on 2017/05/17 by Gil.Gribb UE4 - Allowed the possibility of running the RHI "thread" on task threads instead and cleaned up and unified the conditionals involved. By default we still have a dedicated RHI thread because it tested slightly faster. Change 3443951 on 2017/05/17 by Richard.Wallis Added Apple override allocator macro - each command encoder type needs it's own allocator queue. Change 3444787 on 2017/05/17 by Daniel.Wright Fixed DBuffer decal default normal (used when DBuffer decals enabled, but not decals rendered) not reconstructing zero properly, adding -.008 to WorldNormal which then caused artifacts with forward lighting specular on materials with roughness near 0. Change 3444882 on 2017/05/17 by Daniel.Wright Added comment to FClearValueBinding::DefaultNormal8Bit to make the dependency on shader decode clear Change 3444883 on 2017/05/17 by Brian.Karis Improved contact shadows Change 3445048 on 2017/05/17 by Daniel.Wright Fixed particle lights in forward shading, they were not setting the lighting channel mask properly Change 3445107 on 2017/05/17 by Michael.Trepka Changed the order of operations in FMetalStateCache::SetRenderState to work around an issue with some Intel drivers where they would not recalculate the raster state in some edge cases. #jira UE-43725 Change 3445212 on 2017/05/17 by Uriel.Doyon Added a -CSV option to ListTextures command Change 3445947 on 2017/05/18 by Richard.Wallis Clone of Release-4.16 Stream CL 3437181 and CL 3442450 - fix(s) for black rendering on macOS El Cap with Nvidia GPU. Move sampling of EyeAdaption texture to pixel shader for Mac Metal using shader language version <= 1 only. Change 3446545 on 2017/05/18 by Chris.Bunner Removed hardcoded (and unused) MRT write from Decal shaders. #jira UE-45095 Change 3446568 on 2017/05/18 by Marc.Olano Sobol and image-based importance sampling C++ functions and blueprint nodes Change 3446988 on 2017/05/18 by Marc.Olano Fix build error: missing include Change 3446990 on 2017/05/18 by Marc.Olano Cell-indexed Sobol sampling for shaders (in MonteCarlo.usf) and materials (Sobol and TemporalSobol nodes) Change 3447142 on 2017/05/18 by Rolando.Caloca DR - RWLock instead of mutex for PSO cache Change 3447144 on 2017/05/18 by Uriel.Doyon Moved shading model code to SetGBufferFromShadingModel(). This allows the code to be reused in other shader files. Change 3447794 on 2017/05/18 by Brian.Karis Virtual texturing foundation code Change 3448944 on 2017/05/19 by Arciel.Rekman Fix non-unity Linux (and Mac, etc) builds. - Mac fix is tentative, did not try. Change 3449183 on 2017/05/19 by Marcus.Wassmer Duplicate fix for reflection captures to happen after sequencer updates. Change 3449196 on 2017/05/19 by Uriel.Doyon Handling RCM_MinMax when reading FloatRGBA textures. This fixes pixel inspector always reading 1 for scene color values greater than one. Change 3451652 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45245 Change 3451660 on 2017/05/22 by Chris.Bunner Additional compile fix. #jira UE-45245 Change 3451897 on 2017/05/22 by Daniel.Wright Moved RTDF shadow project back after the base pass, since it samples the GBuffer for subsurface shadowing. Removed r.DFShadowAsyncCompute which was relying on the previous ordering. Change 3452055 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix #jira UE-45265 Change 3452089 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452108 on 2017/05/22 by Rolando.Caloca DR - Compile fix #jira UE-45246 Change 3452179 on 2017/05/22 by Brian.Karis Exposed dimensions. Fixed static analysis. Change 3452734 on 2017/05/22 by Daniel.Wright When post processing is disabled, TPT_TranslucencyAfterDOF translucency gets forced into the standard translucency pass. Change 3452770 on 2017/05/22 by Daniel.Wright Static light source shapes drawn into reflection captures handle SourceLength via scaled sphere Change 3452861 on 2017/05/22 by Rolando.Caloca DR - Switch compile fix Change 3452952 on 2017/05/22 by Brian.Karis Small VT fixes Change 3453647 on 2017/05/23 by Richard.Wallis Fix for tessellation shaders on Mac (Metal v1.2) failing to compile. #jira UE-45227 Change 3454844 on 2017/05/23 by Uriel.Doyon Fixed extra X16 on some point lights #jira UE-45250 Change 3454934 on 2017/05/23 by Chris.Bunner Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability. Change 3457131 on 2017/05/24 by Arne.Schober DR - [UE-45317] - Fix Depthbuffer not available for resolve in Forward mode #jira UE-45317 #RB Chris.Bunner Change 3457141 on 2017/05/24 by Marc.Olano Sobol bug fixes Change 3457953 on 2017/05/24 by Brian.Karis Fix static analysis #jira UE-45315 #jira UE-45314 #jira UE-45313 Change 3459064 on 2017/05/25 by Chris.Bunner Fix for out of bounds material translation crash. #jira UE-45406 Change 3459700 on 2017/05/25 by Brian.Karis Revert using sprite index buffer because the vert order is different. Change 3459847 on 2017/05/25 by Chris.Bunner Fixing ensure in RenderTestMap. [CL 3461201 by Chris Bunner in Main branch]
2017-05-26 08:22:50 -04:00
&& !GAOClearHistory
// If the scene render targets reallocate, toss the history so we don't read uninitialized data
&& (*BentNormalHistoryState)->GetDesc().Extent == BufferSize)
{
FRDGTextureRef BentNormalHistoryTexture = GraphBuilder.RegisterExternalTexture(*BentNormalHistoryState);
ETextureCreateFlags HistoryPassOutputFlags = ETextureCreateFlags(UseAOHistoryStabilityPass() ? GFastVRamConfig.DistanceFieldAOHistory : TexCreate_None);
// Reuse a render target from the pool with a consistent name, for vis purposes
FRDGTextureRef NewBentNormalHistory = nullptr;
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
AllocateOrReuseAORenderTarget(GraphBuilder, View, NewBentNormalHistory, BentNormalHistoryRTName, PF_FloatRGBA, HistoryPassOutputFlags);
{
FIntRect PrevHistoryViewRect = *DistanceFieldAOHistoryViewRect;
auto* PassParameters = GraphBuilder.AllocParameters<FUpdateHistoryDepthRejectionPS::FParameters>();
PassParameters->View = View.ViewUniformBuffer;
PassParameters->SceneTextures = SceneTexturesUniformBuffer;
PassParameters->AOParameters = DistanceField::SetupAOShaderParameters(Parameters);
PassParameters->GeometryAwareUpsampleParameters = SetupGeometryAwareUpsampleParameters(View, DistanceFieldNormal, BentNormalInterpolation);
PassParameters->BentNormalHistoryTexture = BentNormalHistoryTexture;
PassParameters->BentNormalHistorySampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
PassParameters->VelocityTexture = GetIfProduced(VelocityTexture, SystemTextures.Black);
PassParameters->VelocityTextureSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
PassParameters->HistoryWeight = GAOHistoryWeight;
PassParameters->HistoryDistanceThreshold = GAOHistoryDistanceThreshold;
PassParameters->UseHistoryFilter = UseAOHistoryStabilityPass() ? 1.0f : 0.0f;
{
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
FIntPoint HistoryBufferSize = View.GetSceneTexturesConfig().Extent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor);
const float InvBufferSizeX = 1.0f / HistoryBufferSize.X;
const float InvBufferSizeY = 1.0f / HistoryBufferSize.Y;
const FVector4f HistoryScreenPositionScaleBiasValue(
PrevHistoryViewRect.Width() * InvBufferSizeX / +2.0f,
PrevHistoryViewRect.Height() * InvBufferSizeY / (-2.0f * GProjectionSignY),
(PrevHistoryViewRect.Height() / 2.0f + PrevHistoryViewRect.Min.Y) * InvBufferSizeY,
(PrevHistoryViewRect.Width() / 2.0f + PrevHistoryViewRect.Min.X) * InvBufferSizeX);
// Pull in the max UV to exclude the region which will read outside the viewport due to bilinear filtering
const FVector4f HistoryUVMinMaxValue(
(PrevHistoryViewRect.Min.X + 0.5f) * InvBufferSizeX,
(PrevHistoryViewRect.Min.Y + 0.5f) * InvBufferSizeY,
(PrevHistoryViewRect.Max.X - 0.5f) * InvBufferSizeX,
(PrevHistoryViewRect.Max.Y - 0.5f) * InvBufferSizeY);
PassParameters->HistoryScreenPositionScaleBias = HistoryScreenPositionScaleBiasValue;
PassParameters->HistoryUVMinMax = HistoryUVMinMaxValue;
}
PassParameters->RenderTargets[0] = FRenderTargetBinding(NewBentNormalHistory, ERenderTargetLoadAction::ELoad);
TShaderMapRef<FPostProcessVS> VertexShader(View.ShaderMap);
TShaderMapRef<FUpdateHistoryDepthRejectionPS> PixelShader(View.ShaderMap);
ClearUnusedGraphResources(PixelShader, PassParameters);
GraphBuilder.AddPass(
RDG_EVENT_NAME("UpdateHistory"),
PassParameters,
ERDGPassFlags::Raster,
[PassParameters, VertexShader, PixelShader, &View, SceneTextureExtent]
(FRHICommandList& RHICmdList)
{
RHICmdList.SetViewport(0, 0, 0.0f, View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor, 1.0f);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
FGraphicsPipelineStateInitializer GraphicsPSOInit;
RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit);
GraphicsPSOInit.RasterizerState = TStaticRasterizerState<FM_Solid, CM_None>::GetRHI();
GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState<false, CF_Always>::GetRHI();
GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI();
GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI;
GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader();
GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader();
GraphicsPSOInit.PrimitiveType = PT_TriangleList;
SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0);
SetShaderParameters(RHICmdList, PixelShader, PixelShader.GetPixelShader(), *PassParameters);
DrawRectangle(
RHICmdList,
0, 0,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
View.ViewRect.Min.X / GAODownsampleFactor, View.ViewRect.Min.Y / GAODownsampleFactor,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
FIntPoint(View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor),
SceneTextureExtent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor),
VertexShader);
});
}
if (UseAOHistoryStabilityPass())
{
const FRDGTextureDesc& HistoryDesc = BentNormalHistoryTexture->Desc;
// Reallocate history if buffer sizes have changed
if (HistoryDesc.Extent != SceneTextureExtent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor))
{
GRenderTargetPool.FreeUnusedResource(*BentNormalHistoryState);
*BentNormalHistoryState = nullptr;
// Update the view state's render target reference with the new history
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
AllocateOrReuseAORenderTarget(GraphBuilder, View, BentNormalHistoryTexture, BentNormalHistoryRTName, PF_FloatRGBA);
}
const bool bManuallyClampUV = View.ViewRect.Min != FIntPoint::ZeroValue || View.ViewRect.Max != SceneTextureExtent;
FFilterHistoryPS::FPermutationDomain PermutationVector;
PermutationVector.Set<FFilterHistoryPS::FManuallyClampUV>(bManuallyClampUV);
auto VertexShader = View.ShaderMap->GetShader<FPostProcessVS>();
auto PixelShader = View.ShaderMap->GetShader<FFilterHistoryPS>(PermutationVector);
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
const FIntPoint DownsampledBufferSize(View.GetSceneTexturesConfig().Extent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor));
FVector2f MaxSampleBufferUV(
(View.ViewRect.Width() / GAODownsampleFactor - 0.5f - GAODownsampleFactor) / DownsampledBufferSize.X,
(View.ViewRect.Height() / GAODownsampleFactor - 0.5f - GAODownsampleFactor) / DownsampledBufferSize.Y);
auto* PassParameters = GraphBuilder.AllocParameters<FFilterHistoryPS::FParameters>();
PassParameters->View = View.ViewUniformBuffer;
PassParameters->SceneTextures = SceneTexturesUniformBuffer;
PassParameters->DistanceFieldNormalTexture = DistanceFieldNormal;
PassParameters->BentNormalAOTexture = NewBentNormalHistory;
PassParameters->DistanceFieldNormalSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
PassParameters->BentNormalAOSampler = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
PassParameters->BentNormalAOTexelSize = FVector2f(1.0f / DownsampledBufferSize.X, 1.0f / DownsampledBufferSize.Y);
PassParameters->MaxSampleBufferUV = MaxSampleBufferUV;
PassParameters->HistoryWeight = GAOHistoryWeight;
PassParameters->RenderTargets[0] = FRenderTargetBinding(BentNormalHistoryTexture, ERenderTargetLoadAction::ELoad);
ClearUnusedGraphResources(PixelShader, PassParameters);
GraphBuilder.AddPass(
RDG_EVENT_NAME("UpdateHistoryStability"),
PassParameters,
ERDGPassFlags::Raster,
[PassParameters, VertexShader, PixelShader, &View, SceneTextureExtent](FRHICommandList& RHICmdList)
{
RHICmdList.SetViewport(0, 0, 0.0f, View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor, 1.0f);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
FGraphicsPipelineStateInitializer GraphicsPSOInit;
RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit);
GraphicsPSOInit.RasterizerState = TStaticRasterizerState<FM_Solid, CM_None>::GetRHI();
GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState<false, CF_Always>::GetRHI();
GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI();
GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI;
GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader();
GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader();
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3357411) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3244756 on 2017/01/03 by Marcus.Wassmer Copying //Tasks/UE4/Dev-Niagara@3244743 to Dev-Rendering (//UE4/Dev-Rendering) Change 3248667 on 2017/01/05 by Olaf.Piesche Resaving default asset because of engine verison issue; maybe unnecessary, but resaving niagara engine content to be sure #jira UE-40160 Change 3249324 on 2017/01/06 by Marcus.Wassmer Resave with an actual version to stop cook warning Change 3249611 on 2017/01/06 by Marcus.Wassmer Just remove warning-causing niagara data for now. Change 3308052 on 2017/02/16 by Rolando.Caloca DR - Check for Vulkan SDK, and only use it if it's newer or the same as the headers we distribute Change 3308109 on 2017/02/16 by Rolando.Caloca DR - Upgrade glslang to 1.0.39.1 Change 3308111 on 2017/02/16 by Rolando.Caloca DR - Update Vulkan distribution to 1.0.39.1 Change 3308153 on 2017/02/16 by Rolando.Caloca DR - Updated glslang libs Change 3308842 on 2017/02/17 by Rolando.Caloca DR - Fixed copy/paste Change 3310007 on 2017/02/17 by Chris.Bunner Back out CL 3221219 - causing MIC generation issues and superseded by CL 3273971. #jira UE-37792 Change 3310154 on 2017/02/17 by Chris.Bunner Assert when attempting to add a custom material attribute already in the base attributes list. Change 3310155 on 2017/02/17 by Chris.Bunner PR #3231: Validate material index before accessing (Contributed by projectgheist) #jira UE-41774, UE-41788 Change 3310162 on 2017/02/17 by Chris.Bunner PR #3252: Added MobileMaterialInterface to UsedMaterials (Contributed by projectgheist) #jira UE-41823, UE-41950 Change 3310176 on 2017/02/17 by Chris.Bunner Merging CL 3233886: AMD HDR support (requires r.AMDSupportsHDRDisplayOutput=1 in ini). Update to AGS 5.0.5. Partial code tidy up. Change 3310187 on 2017/02/17 by Chris.Bunner Preserve constant expressions rather than always casting after translating a material attribute. Losing the notion of constant means we can't correctly detect used properties and falsely enable e.g. PDO. Happened because of the incorrect component masks in BreakMaterialNodes which then had to be downcast to the correct type which is done as an inline fragment rather than swizzle expression. #jira UE-41594 Change 3310215 on 2017/02/17 by Chris.Bunner Prevent SpeedTree node compiling for skeletal meshes (not supported as uses more UV sets than available). More descriptive error for missing Cubemap UV input on TextureSample material node . #jira UE-33098 Change 3310838 on 2017/02/18 by Joe.Graf Moved some private functions to public for a licensee #CodeReview: matt.kuhlenschmidt #rb: n/a Change 3311876 on 2017/02/20 by Rolando.Caloca DR - Expose skin cache cvar r.SkinCache.AccumulationBufferSizeInKB #jira UE-42014 Change 3314139 on 2017/02/21 by Rolando.Caloca DR - Minor cleanup pass - Remove FVulkanPendingState - Renamed some classes for clarity - Hoist pending UAVs for flush out to pending compute state Change 3314642 on 2017/02/21 by Rolando.Caloca DR - Some more renaming Change 3315431 on 2017/02/21 by Ben.Salem Properly set default values for test time out and tick. We now will default to ticking once per second, and tracking the macro stats of GPU/Render/Game thread time. #tests Ran showdown demo several times Change 3316710 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Fix refract intrinsic Change 3316718 on 2017/02/22 by Rolando.Caloca DR - hlslcc - Built libs to pick up change from 3316710 - refract fix Change 3316820 on 2017/02/22 by Benjamin.Hyder updating Tm-TrigNodes map Change 3317192 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317528 on 2017/02/22 by Benjamin.Hyder Updating QA-Decals map Change 3317639 on 2017/02/22 by Benjamin.Hyder Updating Decal on Complex Mesh example in QA-Decals Change 3317764 on 2017/02/22 by Benjamin.Hyder Final updates to QA-Decals Change 3318319 on 2017/02/22 by Rolando.Caloca DR - minor reorg/rename Change 3318379 on 2017/02/22 by Rolando.Caloca DR - more cleanup Change 3321181 on 2017/02/24 by Rolando.Caloca DR - Fix GL bug Change 3321247 on 2017/02/24 by Rolando.Caloca DR - Fix misc bugs Change 3321898 on 2017/02/24 by Chris.Bunner Only issue clear TLV dispatch if required. #jira UERNDR-193 Change 3321904 on 2017/02/24 by Chris.Bunner Added comment for potential future optimization. Change 3322013 on 2017/02/24 by Uriel.Doyon Fixed separate translucency being affected by Gaussian DOF #jira UE-40489 Change 3322517 on 2017/02/24 by Uriel.Doyon Fixed issue with InvestigateTexture command removing budget limit. Fixed StreamingBounds show flag not working. It nows shows the streaming bound for the currently selected textures. #jira UE-40485 Change 3323470 on 2017/02/27 by Chad.Garyet Removing DDC job from dev-rendering Change 3323479 on 2017/02/27 by Chad.Garyet Removing RDU agent type Change 3323519 on 2017/02/27 by Chad.Garyet removing NCL/LHR/SEA agent types to clean up space Change 3323639 on 2017/02/27 by Benjamin.Hyder More updates to QA-Decals Change 3324207 on 2017/02/27 by Uriel.Doyon Fixed typo ScaleTexturesByGlobalMyBias -> ScaleTexturesByGlobalMipBias Removed bad merge in FStreamingTextureLevelContext::GetBuildDataIndexRef Change 3324396 on 2017/02/27 by Uriel.Doyon Fixed an issue with the Streaming Bounds show flag interferring with the static level data initialization #jira UE-40485 Change 3325227 on 2017/02/28 by Chris.Bunner Fix-up AMD AGS libs. Change 3325566 on 2017/02/28 by Uriel.Doyon Fixed possible out-of-bound access in GetUsedTexture() when passing ERHIFeatureLevel::Num Change 3326009 on 2017/02/28 by Uriel.Doyon Better fix for 3325566, as the previous fix would ignore the material instance overrides. Change 3327058 on 2017/03/01 by Benjamin.Hyder Preparing TM_Shadermodels map for automation Change 3328222 on 2017/03/01 by Chris.Bunner Prevent decals from drawing in separate translucency pass. Whilst user control and material relevance were already removed, if the flag was checked before being disabled (by swapping to decal domain) this was still being read in the render loop, now explicitly ignores decals. #jira UE-42449, UE-42446 Change 3329848 on 2017/03/02 by Uriel.Doyon Added some extra logs to help track UE-42168 Change 3329977 on 2017/03/02 by Rolando.Caloca DR - Fix bad clear value Change 3330008 on 2017/03/02 by Benjamin.Hyder More preparations for QA-Decals automation Change 3330754 on 2017/03/02 by Daniel.Wright Prominent comment explaining reflection env async compute usage and why it's not overlapped with anything Change 3331451 on 2017/03/03 by Marc.Olano Manually unroll simplex noise loop to avoid PSO bug on AMD/Metal Change 3331839 on 2017/03/03 by Rolando.Caloca DR - hlslcc - add missing file to project Change 3332247 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel PR #3305 #jira UE-42393 Change 3332259 on 2017/03/03 by Rolando.Caloca DR - Fix bad index into pixel formats PR #3237 #jira UE-41855 Change 3332305 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers PR #3271 #jira UE-32618 Change 3332313 on 2017/03/03 by Rolando.Caloca DR - Fix for integrated intel (properly) PR #3305 #jira UE-42393 Change 3332317 on 2017/03/03 by Rolando.Caloca DR - OpenGL SRV for index buffers (properly) PR #3271 #jira UE-32618 Change 3332368 on 2017/03/03 by Rolando.Caloca DR - Minor fixes so -sm4 and -sm5 can be used on windows with OpenGL/Vulkan Change 3333690 on 2017/03/06 by Daniel.Wright [Copy] Changing movable skylight properties no longer affects static draw lists Change 3333693 on 2017/03/06 by Daniel.Wright [Copy] Added 'r.AOListMeshDistanceFields' which dumps out mesh distance fields sorted by memory size, useful for directing content optimizations Change 3333705 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance fields are now 8 bit fixed point by default, but can be changed back to 16 bit floating piont with a project setting. * 8 bit uses half memory but introduces error for thin surfaces or large meshes. Change 3333721 on 2017/03/06 by David.Hill DecalProxy: Copy float FadeScreenSize to FDeferredDecalProxy for use in the render thread. This avoids pointer chasing to the UDecalComponent (game thread component). Change 3333772 on 2017/03/06 by Daniel.Wright [Copy] Scene motion blur data is only updated for the main renderer frames. Fixes scene captures and planar reflections breaking object motion blur. Change 3333790 on 2017/03/06 by Daniel.Wright [Copy] Mesh distance field generation uses Embree, for a 2.5x speedup * Can switch back to old kDOP generation with 'r.DistanceFieldBuild.UseEmbree 0' for debugging Change 3333822 on 2017/03/06 by Daniel.Wright [Copy] Moved mesh distance field code into MeshDistanceFieldUtilities.cpp * Moved FMeshUtilities to its own header so the 8k line MeshUtilites.cpp file can be further split up Change 3333827 on 2017/03/06 by Daniel.Wright [Copy] Range compress 8bit distance fields - gets one extra bit of precision on average Change 3333828 on 2017/03/06 by Daniel.Wright [Copy] Raised High ShadowQuality to 2048 as 1024 for CSM is way too low Change 3333831 on 2017/03/06 by Daniel.Wright Non-editor compile fix Change 3333836 on 2017/03/06 by Daniel.Wright [Copy] Workaround for gobal distance field volume textures being bloated by 4x on PS4 due to the recommended tiling modes. They now use a 2d tiling mode which avoids the bloat, saving 96Mb. Change 3333843 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionExponent to skylight component * Useful for brightening up indoors without losing contact shadows as MinOcclusion does Change 3333845 on 2017/03/06 by Daniel.Wright [Copy] Capsule shadow BP functions Change 3333850 on 2017/03/06 by Daniel.Wright [Copy] Added OcclusionCombineMode to skylight component Change 3333854 on 2017/03/06 by Daniel.Wright [Copy] Gnm properly registers clears as GPU work so those events show up in profilegpu Change 3333857 on 2017/03/06 by Daniel.Wright [Copy] Clear light attenuation for local lights with a quad covering their screen extents * Clearing the entire light attenuation buffer costs .1ms on PS4. This optimization lowers the minimum cost of a shadow casting light from .15ms -> .03ms. * Shadowed lights in Fortnite with 25 lights 3.7ms -> 1.42ms on PS4 Change 3333860 on 2017/03/06 by Daniel.Wright [Copy] Flush deferred deletes when reallocating distance field atlas to reduce peak memory Change 3333861 on 2017/03/06 by Daniel.Wright [Copy] Disable all distance field features on Intel cards as HD 4000 hangs in the RHICreateTexture3D call to allocate the large atlas Change 3333869 on 2017/03/06 by Daniel.Wright [Copy] Volumetric Fog using a volume texture mapped to the camera frustum * Volumetric fog can be enabled on an Exponential Height Fog component with additional controls * Lights have a VolumetricScatteringIntensity * New cvars r.VolumetricFog, r.VolumetricFog.GridPixelSize, r.VolumetricFog.GridSizeZ, r.VolumetricFog.DepthDistributionScale * Lighting features supported: * Directional light with CSM and a light function * Point / spot lights without shadows / light functions / IES profiles * Skylight with occlusion from distance fields * Analytical height fog covers the view range past where the volumetric fog ends * Temporal reprojection is used on the volumetric fog scattering and extinction to achieve stability * Translucency integrates properly into volumetric fog * Height fog StartDistance is not supported by volumetric fog and should be set to 0. Change 3333894 on 2017/03/06 by Daniel.Wright [Copy] Initialize GDummyVolumetricFogGlobalDataUniformBuffer outside of parallel rendering Change 3333902 on 2017/03/06 by Daniel.Wright [Copy] Better handling of volumetric fog enabled with distance of 0 Change 3333903 on 2017/03/06 by Daniel.Wright [Copy] Fixed volumetric fog trying to render light functions for a point light Change 3333908 on 2017/03/06 by Daniel.Wright [Copy] Volumetric materials * Added new material domain Volume, which can output Scattering, Absorption and Emissive. All properties are in world space densities. * Particle systems using the Volume domain are voxelized based on their ParticlePosition and ParticleRadius * Volumetric fog integration is now energy conservative - scattering is integrated against transmission over the depth of each slice. * Added bOverrideLightColorsWithFogInscatteringColors to exponential height fog, which can be enabled to make Volumetric Fog match Height fog more closely Change 3334134 on 2017/03/06 by Daniel.Wright [Copy from Michael Trepka] Added Embree 2.14.0 and changed MeshUtilities to use it as this solves issues with Embree leaking TLS keys. UnrealLightmass is still using older Embree 2.7.0 until we can find time to properly test it with the new version. Also, invalidated distance field DDC to force it to rebuild with updated Embree. Change 3334420 on 2017/03/06 by Daniel.Wright Fixed RTDF shadows Change 3335467 on 2017/03/07 by Benjamin.Hyder Initial submission of QA-Decals map to EngineTest Change 3335556 on 2017/03/07 by Daniel.Wright Changed mesh distance field default format back to R16f Change 3338020 on 2017/03/08 by Daniel.Wright Disable volumetric fog in vertex shaders for feature levels which don't support it Change 3339394 on 2017/03/09 by Chris.Bunner Correctly handle material texture translation error edge case. #jira UE-42579, UE-42670 Change 3339992 on 2017/03/09 by Daniel.Wright Only compile volumetric fog shaders on supporting platforms Change 3341858 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) #RB Rolando.Caloca, Marcus.Wassmer, Daniel.Wright, Nick.Penwarden, Mark.Satterthwaite Change 3342004 on 2017/03/10 by Arne.Schober Copying //UE4/Dev-Rendering-PSO to Dev-Rendering (//UE4/Dev-Rendering) Fix unity build #RB Marcus.Wassmer Change 3343307 on 2017/03/13 by Marcus.Wassmer Update showflags when we are guaranteed it will happen in all possible ways to spawn the scenecapture. (drag into editor, PIE, -game, etc) Change 3343732 on 2017/03/13 by Rolando.Caloca DR - Vulkan compute pipeline & refactor Change 3344846 on 2017/03/14 by Rolando.Caloca DR - Android compile fixes Change 3344883 on 2017/03/14 by Rolando.Caloca DR - Add missing stencil load/store to PSO initializer Change 3344985 on 2017/03/14 by Rolando.Caloca DR - Made load/store actions uint8 Change 3345141 on 2017/03/14 by Rolando.Caloca DR - vk - Rework render pass hash Change 3345304 on 2017/03/14 by Benjamin.Hyder Updating TM-Distancefields map to include TemplateFloor mesh Change 3345387 on 2017/03/14 by Rolando.Caloca DR - Add _RenderThread calls for Create*Shader so RHIs can choose not to stall when creating Change 3345388 on 2017/03/14 by Rolando.Caloca DR - Do not stall when creating shaders on Vulkan Change 3345722 on 2017/03/14 by Chris.Bunner PR #3357: MinimalAPI add to many material expressions (Contributed by DeanoC) #jira UE-42752 Change 3345723 on 2017/03/14 by Chris.Bunner Reduce log verbosity causing spamming during landscape editing. #jira UE-42714 Change 3345725 on 2017/03/14 by Chris.Bunner [Duplicate 3341860] Fixed material translation error with multiple connections from custom interpolator nodes. Change 3345726 on 2017/03/14 by Chris.Bunner Typo fixes. Change 3345732 on 2017/03/14 by Rolando.Caloca DR - Decouple vertex declaration off BSS Change 3345746 on 2017/03/14 by Chris.Bunner Added sign() intrinsic material graph node and delisted material function workaround. Change 3346042 on 2017/03/14 by Chris.Bunner Implement missing size query interface for FRenderTargetResources. #jira UE-41672 Change 3346387 on 2017/03/14 by Daniel.Wright [Copy] Added VolumetricScatteringIntensity to particle lights Change 3346389 on 2017/03/14 by Daniel.Wright [Copy] Clamp Volumetric material attributes to fp16 range to avoid INFs Disable volumetric fog when the fog show flag is disabled Change 3346392 on 2017/03/14 by Daniel.Wright [Copy] Fixed skylight being much too bright on volumetric fog Change 3346406 on 2017/03/14 by Daniel.Wright [Copy] CSM resolution is now controlled by r.Shadow.MaxCSMResolution. * Changed HighPC to use 1024 MaxShadowResolution (max for all non-CSM shadows), saves 60Mb in Fortnite Change 3346412 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for translucency lighting 3d textures, saves 13Mb Change 3346414 on 2017/03/14 by Daniel.Wright [Copy] TexCreate_ReduceMemoryWithTilingMode for volumetric fog 3d textures, saves 13Mb Change 3346415 on 2017/03/14 by Daniel.Wright [Copy] Missing file from cl 3338451 Change 3346421 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaNs in volumetric fog due to rendering when height fog is disabled * Volumetric fog converts NaNs to black now so they don't spread Change 3346422 on 2017/03/14 by Daniel.Wright [Copy] Fixed NaN in volumetric fog with low density values Change 3346423 on 2017/03/14 by Daniel.Wright [Copy] Changed default VolumetricFogScatteringDistribution to .2 Change 3346430 on 2017/03/14 by Daniel.Wright [Copy] New translucent material option to compute fog per pixel instead of the default per vertex Change 3346432 on 2017/03/14 by Daniel.Wright [Copy] Moved Volumetric Fog parameters to view uniform buffer for translucency pass Fixed lifetimes of temporary Volumetric Fog render targets Change 3346526 on 2017/03/14 by Daniel.Wright [Copy] Volumetric Fog supports point and spot light shadows * These lights are injected separately so that per-light resources can be bound (shadow depth map, static shadow depth map) * Forward lighting of local lights can be forced with 'r.VolumetricFog.InjectShadowedLightsSeparately 0' * Shadowed lights come at a cost: 2.9ms for volumetric fog on 970 -> 4.2ms with shadowing Change 3347053 on 2017/03/15 by Rolando.Caloca DR - android compile fix Change 3347384 on 2017/03/15 by Rolando.Caloca DR - Fix merge issue Change 3347643 on 2017/03/15 by Marcus.Wassmer Fix some bugs with the 'disable stationary skylight ffor the project' feature. Fixes lighting in Persona on Paragon. Change 3347979 on 2017/03/15 by Rolando.Caloca DR - Allow to automatically apply cached rendertargets to PSO initializer Change 3348024 on 2017/03/15 by Rolando.Caloca DR - Remove NullPS on Vulkan to avoid deadlock Change 3348303 on 2017/03/15 by Rolando.Caloca DR - Fix for debugging SCW with material SRT Change 3348357 on 2017/03/15 by Marcus.Wassmer Fix stencildither and a stencilref bug that was probably breaking decals sometimes. Change 3348549 on 2017/03/15 by Marcus.Wassmer Hopefully fix static analysis for potential nullptr access. Change 3348614 on 2017/03/15 by Marcus.Wassmer Duplicate some switch changes to fix crash on launch. Change 3349369 on 2017/03/16 by Gil.Gribb Fixed botched merge Change 3349947 on 2017/03/16 by Rolando.Caloca DR - Fix for mismatched primitive type Change 3349956 on 2017/03/16 by Benjamin.Hyder initial updates to TM-DistanceFields map Change 3350151 on 2017/03/16 by Rolando.Caloca DR - Fix UT compile issue Change 3350155 on 2017/03/16 by Rolando.Caloca DR - Catch mismatched primitive type on PSOs on D3D11 Change 3350192 on 2017/03/16 by Daniel.Wright Fix for point light shadow depths rendering with wrong cull mode due to PSO refactor Change 3350736 on 2017/03/16 by Daniel.Wright Fixed formatting from merge Change 3350881 on 2017/03/16 by Rolando.Caloca DR - Fix texture arrays as UAVs on Metal Change 3350927 on 2017/03/16 by Rolando.Caloca DR - Fix warning Change 3350935 on 2017/03/16 by Daniel.Wright Fix for materials with non-Surface domains being skipped in mesh passes Change 3351583 on 2017/03/17 by Marcus.Wassmer Fix clang platforms Change 3351917 on 2017/03/17 by Marcus.Wassmer Fix linux compile Change 3351973 on 2017/03/17 by Marcus.Wassmer Fix mismatched rendertargetformat Change 3352038 on 2017/03/17 by Daniel.Wright Enabled GetAndOrCreateGraphicsPipelineState ensures in Development for testing Change 3352110 on 2017/03/17 by Marcus.Wassmer Fix missing RT PSO apply Change 3352695 on 2017/03/17 by Arne.Schober DR - Remove PSO Rendertarget check in DX12 Resolve with Shader. #RB Rolando.Caloca Change 3352960 on 2017/03/17 by Arne.Schober DR - Fix some things that slipped trough the PSO merge #RB none Change 3353150 on 2017/03/18 by Rolando.Caloca DR - compile fix Change 3353205 on 2017/03/18 by Arne.Schober DR - Fix Incremental Compile and PS4 runtime error where CMASK is not allowed for ThickTile Mode #RB none Change 3353207 on 2017/03/18 by Arne.Schober DR - Fix Confusion #RB none Change 3355183 on 2017/03/20 by Nick.Bullard Fixed up Content orginzation for Decals automation tests in EngineTest Change 3355627 on 2017/03/20 by Arne.Schober DR - [UE-43094] - removed ensure in comporiton graph as control of the clear color cannot be gurantueed. Change 3356342 on 2017/03/21 by Marcus.Wassmer Fix clang errors Change 3356591 on 2017/03/21 by Arne.Schober DR - Fix ensure message #RB none Change 3356873 on 2017/03/21 by Arne.Schober DR - Fix comparission of undefined values in RendertargetApply Check Change 3357261 on 2017/03/21 by Marcus.Wassmer Fix LinuxEditor compile Change 3357294 on 2017/03/21 by Marcus.Wassmer Add missing SSE functions Change 3357351 on 2017/03/21 by Frank.Fella Fix win32 and linux compiler errors Change 3357370 on 2017/03/21 by Arne.Schober DR - disable ensure in test builds #RB Marcus.Wassmer [CL 3357449 by Marcus Wassmer in Main branch]
2017-03-21 17:46:52 -04:00
GraphicsPSOInit.PrimitiveType = PT_TriangleList;
SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0);
SetShaderParameters(RHICmdList, PixelShader, PixelShader.GetPixelShader(), *PassParameters);
DrawRectangle(
RHICmdList,
0, 0,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
0, 0,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
FIntPoint(View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor),
SceneTextureExtent / FIntPoint(GAODownsampleFactor, GAODownsampleFactor),
VertexShader);
});
GraphBuilder.QueueTextureExtraction(BentNormalHistoryTexture, BentNormalHistoryState);
BentNormalHistoryOutput = BentNormalHistoryTexture;
}
else
{
// Update the view state's render target reference with the new history
GraphBuilder.QueueTextureExtraction(NewBentNormalHistory, BentNormalHistoryState);
BentNormalHistoryOutput = NewBentNormalHistory;
}
}
else
{
// Use the current frame's upscaled mask for next frame's history
FRDGTextureRef DistanceFieldAOBentNormal = nullptr;
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
AllocateOrReuseAORenderTarget(GraphBuilder, View, DistanceFieldAOBentNormal, TEXT("DistanceFieldBentNormalAO"), PF_FloatRGBA, GFastVRamConfig.DistanceFieldAOBentNormal);
GeometryAwareUpsample(GraphBuilder, View, DistanceFieldAOBentNormal, DistanceFieldNormal, BentNormalInterpolation, Parameters);
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3304653) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3288774 on 2017/02/06 by Ben.Salem Added in min/max/avg values to table. Allow us to also set which stat groups we use explicitly to massively cut down on plugin overhead. #tests Several tests passes taken on ShooterGame. Change 3289887 on 2017/02/07 by David.Hill Eye Adaptation: Fix basic mode. The last step of the basic eye adaptation needs to know the correct down-sampled viewport size #jira: UE-29491 Change 3290281 on 2017/02/07 by Chris.Bunner Account for LogToLin approximation value offseting. Change 3290282 on 2017/02/07 by Chris.Bunner Fixed missing 2000 nit branch in tonemapper. Change 3290331 on 2017/02/07 by Chris.Bunner Minor optimization for BlendMaterialAttributes node compilation. Change 3291140 on 2017/02/07 by Daniel.Wright Fixed distance field temporal filter using Point filtering * Fixed the manual bilinear filter in the high quality reprojection path, still doesn't solve the streaking artifacts though Change 3292060 on 2017/02/08 by Rolando.Caloca DR - Some enums for max/num bits on RHI definitions Change 3292213 on 2017/02/08 by Benjamin.Hyder Updating TM-DistanceFields map in QAGame Change 3292291 on 2017/02/08 by Benjamin.Hyder small tweaks to TM-DistanceFields Change 3292399 on 2017/02/08 by Chris.Bunner Minor fix to HDR format type check. Change 3293560 on 2017/02/08 by Rolando.Caloca DR - vk - Events Change 3293562 on 2017/02/08 by Rolando.Caloca DR - vk - Disambiguate class name Change 3295346 on 2017/02/09 by Rolando.Caloca DR - Duplicate fix from 3295320 Change 3296930 on 2017/02/10 by Chris.Bunner Search keywords for pre-skinned position/normal nodes. Change 3297162 on 2017/02/10 by Daniel.Wright Distance field temporal filter stores a confidence value, which is used to track leaking of occlusion during the upsample, and flush those leaked values through the history faster. Reduces DFAO ghosting when the camera is moving. Change 3297345 on 2017/02/10 by Daniel.Wright Added 'r.CompressMeshDistanceFields' to rendering project settings, defaults to off to prevent hitches when streaming in levels Change 3297371 on 2017/02/10 by Chris.Bunner Custom vertex interpolator in/out node with auto-packing - Function support. Unified UV/CVI interpolator arrays for mixed custom UV support. Change 3298013 on 2017/02/10 by Daniel.Wright Ray Traced Distance Field shadowing is overlapped with the shadow depth pass, controlled by r.DFShadowAsyncCompute. * Didn't save any GPU time on PS4, so currently disabled until further investigation. * This change breaks RTDF shadows in splitscreen / stereo Change 3300028 on 2017/02/13 by Ben.Salem Adding GPU/Render/Game thread timers by default. Remove pointless flavor whitelisting on the plugin. Add sample usage in ShooterGame.ini config. #tests Ran half a dozen perf passes, and preflighted my changes in EC Change 3301571 on 2017/02/14 by Joe.Graf Deleted this plugin since it is no longer needed as an example Change 3301882 on 2017/02/14 by Daniel.Wright Fixed DistanceFieldAOConfidenceHistoryRT not getting released on RT Change 3304283 on 2017/02/15 by Daniel.Wright Variable shadowing fix Change 3304653 on 2017/02/15 by Ben.Salem Fix thread safety issues in Performance Monitor - deal with floating point bug in determining when to record frames. #tests Preflighted changes several times, ran several runs on Showdown [CL 3307957 by Marcus Wassmer in Main branch]
2017-02-16 17:52:21 -05:00
GraphBuilder.QueueTextureExtraction(DistanceFieldAOBentNormal, BentNormalHistoryState);
BentNormalHistoryOutput = DistanceFieldAOBentNormal;
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3760894) #rb Rendering #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3658809 by Chris.Bunner Changing default HDR display gamut to P3 as in practice that's more common than Rec2020, this should be a user-facing option where possible though as we can't automatically retrieve that data. Change 3658842 by Chris.Bunner Backing out previous HDR default gamut change as it conflicts with mandatory platform defaults. Change 3695269 by Arne.Schober DR - Make clang happy wreorder Change 3695418 by Guillaume.Abadie Fixes compilation failure in FoliageType_InstancedStaticMesh.cpp. Change 3695430 by Guillaume.Abadie Fixes missing BeginFrame dynamic resolution event in EngineTest. Change 3695469 by Guillaume.Abadie Fixes crash when passing down an invalid parameter on the sample material expression's DDX, DDY parameters. Change 3696091 by Guillaume.Abadie Fixes Linux compilation failure in DynamicResolution.cpp Change 3696593 by Chris.Bunner Fixed typo in vetex factory enum. Change 3696596 by Chris.Bunner Added material attributes type checking to If material expression. Updated If material expression to validate compilation of inputs. Change 3696597 by Chris.Bunner Allow visible parameter retrieval to correctly traverse through internally called functions. Previous check was intended to prevent function previews from leaving their graph through unhooked inputs, but unintentionally blocked all function inputs. Change 3696599 by Chris.Bunner Fixed material instance parameter visiblity when using nested static switches across functions. #jira UE-50878 Change 3696734 by Chris.Bunner Return type fix. Change 3697123 by Guillaume.Abadie Fixes compilation failure in PostProcessWeightedSampleSum.cpp on Windows 32bits. Change 3697125 by Guillaume.Abadie Fixes compilation failure in MaterialExpressionIf.h Change 3697127 by Guillaume.Abadie Fixes compilation failure in DynamicResolution.cpp on shipping build. Change 3697135 by Guillaume.Abadie Fixes crash in dynamic resolution event frontend when resizing game play viewport in EngineTest. Change 3697199 by Guillaume.Abadie Fixes TAA upsample's shader compilation failure on Mac. Change 3697220 by Guillaume.Abadie Makes static analysis happy again. Change 3697280 by Chris.Bunner Fixing up invalid casts in material layers validation. Change 3697366 by Rolando.Caloca DR - hlslcc - Fix warning #jira UE-43988 Change 3697451 by Rolando.Caloca DR - vk - Per pipeline descriptor pools Descriptor pool are now allocated per PSO instead of globally to reduce peak mem consumption and fragmentation Enabled on Windows only via VULKAN_USE_PER_PIPELINE_DESCRIPTOR_POOLS Change 3697477 by Rolando.Caloca DR - vk - Custom memory allocator Remove old/unused stats Change 3697486 by Rolando.Caloca DR - vk - Fix validation issue Change 3697488 by Richard.Wallis Fix for Mac editor session no longer accurately tracking Mouse location after moving between Desktops in Mission Control on 10.12.6. Problem stems from the extra call to update the slate cached window position in mouse move while dragging, which is itself is a hack but apparently this is needed as we don't get window position updates on Mac while dragging (although I couldn't see any -ve side effects without it) then the OS (in 10.12.6) doesn't always push out a final window did move notificaiton when changing desktops which leaves the window according to slate incorrectly positoned to it's frame. Solution is to either remove the mouse-move-while-drag window position hack or add a final window position update to the mouse-up event while dragging - this change is the latter. #jira UE-37553 Change 3697501 by Richard.Wallis Move audio processing over to audio bus tap. Currently on Mac Media audio playback uses OS media player mixer rather than Engine as existing implemtation, using AVAssetReader, now suffers from poor performance with new Media Framework. This audio tap version replaces that asset reader implementation but also suffers from bad quality audio hence is still disabled at the top of AvfMediaTracks.cpp. Original Code Review Description: Convert Mac to Play audio through the engine MediaFramework API rather than using AVMediaPlayer. This is the Mac implementation only - this should work ok on iOS but unable to test due to missing audio type implementation (throws error "Init Buffer on unsupported sound type name = Synth type = 5"), as such is only enabled for Mac. There maybe some extra tweaks required for iOS on app backgrounding etc if this feature is enabled. - Stuttering Audio Performace issue investiagation: Re-Tested this implementation against [now fixed] current Mac implementation which was working fine last year and that implementation now has the same audio output quality (performance) issues as this one. Basic investigation seems to point to somewhere in the engine audio handing. When poor audio is heard the FMediaAudioResampler::Generate() function is dequeing an IMediaAudioSample sample buffer and the audio sample queue usually has 50-100 of these IMediaAudioSample buffers waiting in the queue. I think the AvfMedia playback system is providing the sample buffers in good time but they are not getting consumed "fast" enough. This under consuming also occurs if I force the Core Audio - Audio Unit mixer to use 48000 samples/sec. #jira UEPLAT-1677 Change 3697517 by Richard.Wallis XCode 9.0 extra nullability specifiers required. Change 3697537 by Richard.Wallis Back out revision 23 from //UE4/Dev-Rendering/Engine/Plugins/Media/AvfMedia/Source/AvfMedia/Private/Player/AvfMediaTracks.cpp Change 3697670 by Rolando.Caloca DR - vk - Fix mapstaging surface Change 3697846 by Uriel.Doyon Allow denormalized values when converting float32 to float16. Change 3697892 by Uriel.Doyon Fix for unaligned structure elements Change 3699335 by Richard.Wallis Mac compile fix - turns out I did need these nullability specifiers here. Change 3699663 by Guillaume.Abadie Fixes time unit conversions from microseconds to milliseconds error in dynamic resolution heuristic when using GPU busy time queries. Change 3699959 by Rolando.Caloca DR - Fix barrier in the middle of render pass Change 3699969 by Rolando.Caloca DR - vk - Change dump layer location so it prints out validation ids Change 3700356 by Guillaume.Abadie Implements secondary screen percentage to be able to do TAA upsample followed spatial upscale so that the editor viewport still have same TAA upsample screen percentage range to test the content with no matter monitor's DPI. Change 3701105 by Guillaume.Abadie Ignore per view automatic mip bias on texture type other than 2d textures. #jira UE-51396 Change 3702297 by Richard.Wallis Mac compile fix for nullable specifier. Looks like Obj class using the C++ class also needs this otherwise it throws. Seems to be some kind of xcode/compiler caching bug with this stuff as it'll report the error once then on subsequent compiles say everything is ok. #jira UE-51386 Change 3702357 by Richard.Wallis Mac nullability compile fix - again. Looks like I fell foul of that xcode compile caching! #jira UE-51386 Change 3702424 by Guillaume.Abadie Fixes planar reflection from drowing themselves in their own FSceneRenderer in forward shading. #jira UE-51395 Change 3702464 by Guillaume.Abadie Fixes wrong viewport to buffer conversion of the distortion. #jira UE-51406 Change 3702819 by Guillaume.Abadie Fixes planar reflections with secondary screen percentage for HighDPI editor viewports. Change 3703732 by Guillaume.Abadie Removes unecessary check(); when there is more than 2 players with planar reflections. #jira UE-51436 Change 3704302 by Guillaume.Abadie Removes unecessary Interface suffix on new dynamic resolution related interfaces Change 3704390 by Chris.Bunner Fixed a coincidentally correct define. Change 3704730 by Rolando.Caloca DR - vk - Fix map for depth surfaces Change 3704739 by Rolando.Caloca DR - Debug label on D3D11 UAVs - Validate when running -d3debug Change 3705000 by Chris.Bunner Skip compiling opacity and opacity mask inputs on opaque surface materials. Previously the code was always added to the shader, sometimes we force opaque materials down a masked path which then calls the dormant code unintentionally. A safer fix for UE-48254. Partially reverted previous fix in CL 3608303 which removed a material instance optimization caching the overridden base properties. Change 3706065 by Guillaume.Abadie Does some renaming for primary screen percentage, and move the primary screen percentage method selection from dynamic resolution driver to FSceneView. Change 3706464 by Chris.Bunner Fixed material property translate overrides that were generating code in the wrong entry. Fixed conditions in If material expression GetInputType and IsMA check. #jira UE-51368 Change 3706641 by Chris.Bunner Missing "break" in switch statement (which unfortunately needs another bump to resolve). Change 3706642 by Guillaume.Abadie Fixes assertion failure when r.TemporalAA.EnableUpscale = 1 Change 3706650 by Gil.Gribb UE4 - UE4 - Changes from intel. Increase number of worker threads on Windows to if hyperthreads (hyperthreads √ 2) else cores √ 1 up to a max of 22 workers. Increase MAX_THREADS multiplier per bank from 22 to 26. Intel VTune ITT event annotations. Wrapped in same function as your existing CPU events and enabled with √vtune. Optimize NV cloth by consuming FVector instead of FVector4 out of the solver. Vertex buffers were using FVector all along. ~15% improvement. Optimize cloth copy to vertex buffer by adding prefetch (similar to how bones are already done). Move local to world cloth transform from CPU to GPU. When simulating lots of vertices game thread was becoming bottleneck doing matrix multiply. Add your TaskGraph task switch latency test code. Change 3706733 by Daniel.Wright Print Embree Build time Change 3706841 by Daniel.Wright EmbreeFilterFunc4 now handles masked out intersections properly Change 3707437 by Rolando.Caloca DR - vk - Android compile fix #jira UE-51474 Change 3707785 by Guillaume.Abadie Fixes viewport issue in bloom setup pass with TAA upsample. Change 3709623 by Rolando.Caloca DR - vk - Missing barrier for reading into cpu Change 3709633 by Rolando.Caloca DR - vk - Compile fix Change 3710454 by Mark.Satterthwaite Refactor the way we compile Buffer<> & RWBuffer<> types for Metal so that we can support the type-conversion semantics of HLSL/D3D. - Buffer<> types are converted to Linear Textures unless the internal type is 3-compnent or the STRONG_TYPE macro is added as a type-qualifier. Linear Textures require an MTLTexture "view" object be created around the MTLBuffer which is the backing-store and it is typically best if that buffer is marked as Private (GPU-only) memory, reading from this in the shader then uses the texture-fetch hardware to perform the format conversion on load. - RWBuffer<> & 3-compnent Buffer<> types are converted to use template functions to load/store - the implementation of which will read the format from the BufferSizes meta-table and determine which type-conversion to apply. Function-constants are used to specialise the shader where feasible to reduce branch costs (function-constants are a Metal feature that allow efficient runtime recompilation of bytecode shaders). - Buffer<> & RWBuffer<> types where the STRONG_TYPE macro is added as a type-qualifier (only does something on Metal, everywhere else it is #define'd away) are compiled as "raw" Metal buffers of the inner-type (e.g. float4 for Buffer<float4>) and the MetalRHI runtime will enforce that only SRVs/UAVs of the proper format are bound to it. This is necessary in a couple of cases (BoneMatrices, NumCulledLightsGrid, CulledLightDataGrid & ForwardLocalLightBuffer buffers) which are used in a larger number of shaders as Linear Textures have poorer performance than Buffer<>/RWBuffer<>. - Most of the complications to generating subtly different Metal code for different OS/device combinations have been factored out into ue4_stdlib.metal which acts as an extension to the Metal shader standard-library and helps simplify the MetalBackend code - particularly helpful for Buffer<>/RWBuffer<> but also texturecube_array and the SM6 wave-related intrinsics. - Reverted some of the awkward Metal-specific changes Richard.Wallis & Arne had to make to the high-level shaders as they aren't necessary anymore. - Made the existing Metal-specific changes to use uint32 for all light-grid injection buffers apply to all Metal platforms again (I had hoped that it would not be necessary anymore, but it is much faster this way). - STRONG_TYPE is actually hlslcc's "invariant" keyword applied as a type-qualifier to a Buffer<>/RWBuffer<> type - only valid when using Metal which exports this through ILanguageSpec and #define'd out for everyone else. - Old versions of iOS (anything earlier than iOS 10.3) won't be able to use this new code, so every buffer will be treated as "raw" and the MetalRHI will now properly report when something goes awry rather than it leading to mysterious rendering errors and crashes. Change 3710456 by Mark.Satterthwaite Fix the Eddie workset project generator so that Enterprise projects don't get mixed in with regular projects at the top-level because of the way Eddie combines workset groups. Change 3710457 by Mark.Satterthwaite DX11 texture formats for Mac Metal please! Change 3710480 by Mark.Satterthwaite Permit RHI thread and parallel execution in Mac -game mode again. Change 3710522 by Mark.Satterthwaite MSVC type-mismatch error fixes. Change 3710580 by Mark.Satterthwaite Alright then - if I can't use the C++11 extended string semantics I'll have to use "xxd -i" to generate a hex-dump include header from ue4_stdlib.metal instead. This can only be updated from a machine with access to the POSIX xxd command (Mac & Linux, possibly the new Linux sub-system for Win10). Change 3710616 by Mark.Satterthwaite Missing file. Change 3712972 by Guillaume.Abadie Fixes Circle DOF's negative alpha channel getting clamped to 0 in TAA pass. Change 3712979 by Guillaume.Abadie Fixes wrong RT reallocation when doing TAA upsample in editor viewports with secondary upscale. Change 3713406 by Mark.Satterthwaite Use GPU morph targets on Mac - the necessary buffer conversions will always be available there. For iOS it can only be supported if iOS 10 is the minimum OS & Metal standard so leave that on the CPU path for now. Change 3713494 by Richard.Wallis Fix for hitch when PIE unloading sublevel. PerformReachabilityAnalysisOnObjects is spawing multiple threads in Editor builds as there is an extra code path that results in Critical Section locking within a singleton type static object - this is a bottle neck for multiple threads. However they all just need to read the data not change it. Replaced FScopeLock with a Read/Write version allowing these threads to all take a read lock at the same time to reduce contention. Changed the FUObjectAnnotationDense implementation only - left the sparse implementation alone as its not currently affecting this - although we could proactivly change that too. Also tested again repro in linked bug UE-24711. #jira UE-40533 Change 3713612 by Mark.Satterthwaite Integrate LPV_STORE_INDEX_IN_HEAD_BUFFER related changes from //depot/Partners/Microsoft/UE4-MS/Engine-Fable @ 2954744 This should make Light Propagation Volumes potentially viable on non-Microsoft platforms. Change 3713623 by Mark.Satterthwaite Implement ByteAddressBuffer/RWByteAddressBuffer in hlslcc in a similar manner to StructuredBuffer/RWStructuredBuffer so that the backends don't need too much modification. Implement the necessary changes into MetalBackend to make this work for Metal. Load/Store{+2,3,4} & Atomics are supported. Counter operations are not supported and aren't likely to be. Change 3713636 by Mark.Satterthwaite Enable LPVs for Mac Metal. - Rework some multi-dimensional arrays & array-index dependent HLSL code that hlslcc simply can't cope with, the mesa-glsl compiler core is only capable of dealing with 1 dimensional arrays and array-indexing can't itself be directly dependent on the result of an array-index operation. - MetalRHI needs to ignore any SetRenderTargets call that binds nothing at all as you must bind at least one target (UAV, RT, Depth/Stencil) for it to be able to do anything sensible. - Turn on LPVs for Metal as it works now. Change 3714049 by Guillaume.Abadie Do not set screen percentage method to TAA upsample when anti aliasing method is not TAA even if there is automatic fallback in the renderer. Change 3714306 by Guillaume.Abadie Fixes assertion failure in dynamic resolution state proxy with GPU busy time queries. Change 3714714 by Mark.Satterthwaite Tweak Metal GPU identification so that it works with eGPU boxes and protoype hardware - these changes only apply to macOS 10.13 so the system as a whole remains. Change 3716104 by Mark.Satterthwaite Fix 10.12/Xcode 8 compile errors from the build-farm which is still split until Fortnite can update. Change 3716120 by Mark.Satterthwaite Silence static-analysis. Change 3716158 by Guillaume.Abadie Rewrites editor primitive compositing to support TAA upsample. This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives. Change 3716271 by Daniel.Wright Lightmass correctness fixes * After these changes, point, spot, directional and sky lights closely match reference renderer Mitsuba after light unit conversions * Photon density trimming intended for direct photons was affecting indirect photons as well. This caused high noise for point / spot lights with a large attenuation radius. Indirect photon density even for small lights is 5x with this change, which improves 2nd bounce quality. * Removed legacy fudge factor on point / spot light photon energy * Spotlights no longer emit based on indirect photon paths. Fixes excessive photon energy from spot lights as they were emitting outside of the cone. * Fixed photons computing one more bounce than requested. * Added an option to use the Radiosity solver for all multibounce, replacing photons. Useful as a reference but generally too much noise indoors. * Fixed visualization of photons without final gather Change 3716434 by Mark.Satterthwaite Backout the remaining change from 3632041 that is no longer necessary - this was the last of the 4.18 Metal workarounds. Change 3716491 by Chris.Bunner Fixing up an edge-case on a recent optimization. Change 3716611 by Guillaume.Abadie Allows secondary screen percentage >= 100%. Change 3716977 by Guillaume.Abadie Back out changelist 3716158 to unblock QA pass. #jira UE-51580 Change 3717111 by Arne.Schober Fixing nomalization of Morph Tangents https://udn.unrealengine.com/questions/392462/ Also implemanted batching of the dispatches which should help worst case perfomance where dispatches become too small. CalculateInverseAccumulatedWeights is not cheap and proably should be moved onto a task thread that runs as soon as the input weights are ready. Change 3717127 by Mark.Satterthwaite Fix a mismerge from the reversion of 3632041 - part of the modified code had been moved into another file and I didn't initially notice. Change 3717178 by Mark.Satterthwaite Remove useless copy-pasted expressions from glsl_type::GetByteAddressBufferInstance & force MetalBackend to relink. Apparently the previous Mac libs were mysteriously broken. #jira UE-51583 Change 3717476 by Marcus.Wassmer Fix PS4 compile. funciton local statics not allowed on PSSL Also enabled the new atomics method for LPVs for all platforms Change 3717502 by Arne.Schober DR - Compiletime option for compressed ruleset (0.02ms perf gain on PS4 and disabled by default as it limits array size to 2million entries) Change 3717601 by Arne.Schober DR - Move cycle counter into more meaningfull locations. Change 3718054 by Guillaume.Abadie Removes unecessary check() failure on secondary upscale that fires when testing raw output screen percentage method. Change 3718066 by Guillaume.Abadie Reland: Rewrites editor primitive compositing to support TAA upsample. This takes the oportunity to remove the manual depth testing in base pass pixel shader of editor primitives. Change 3718589 by Mark.Satterthwaite Console-variable to enable and disable Manual-Vertex-Fetch for Metal and fix the internal code to handle the subtle changes in behaviour for vertex-declarations so we don't explode under the Metal validation layer. MVF works on macOS, though testing did expose an error with Tessellation on Nvidia (true for MVF enabled & disabled). Change 3718633 by Guillaume.Abadie Fixes temporal instability issue of TAA upsample with secondary screen percentage. Change 3718658 by Arne.Schober DR - 25% MorphTarget Speed increase because there was a bit of cache thrashing between the waves going on. Change 3718818 by Mark.Satterthwaite Fix compilation on hlslcc - integral values are not automatically converted into comparisons with zero. Change 3719004 by Guillaume.Abadie Lets the game viewport client automatically set raw output screen percentage method when doing dynamic resolution with stereo rendering but without TAA upsample. Change 3719375 by Mark.Satterthwaite Extend mtlpp compiler testing app to support Metal tessellation compute shaders so we can send Nvidia a much simpler reproduction of their regression. Change 3720099 by Mark.Satterthwaite Make the left-hand arguments work in airdiff. Change 3720413 by Mark.Satterthwaite Support standalone compute shaders in the mtlpp compiler test app. Change 3721232 by Mark.Satterthwaite No more Metal Shader Model 4 - instead we have to have a Metal Shader Model 5 w/o Tessellation as Nvidia's shader compiler is broken on all tessellation shaders in 10.13.0 and above. There is no guarantee that they will fix this prior to 10.14 and I can't afford to disable tessellation entirely as if I do that then the AMD & Intel compilers will also regress. As there is no Shader Model 4 platform on Mac anymore I've amended the LevelEditorActions to disable the preview modes when no appropriate shader platform is available. Change 3721244 by Mark.Satterthwaite Fix incorrect enum handling for Metal features due to overflow. #jira UE-51643 Change 3721338 by Mark.Satterthwaite MIssing file from 3721232 Change 3721818 by Mark.Satterthwaite Fix the Intel vector-array-dereference workaround so that it doesn't cause the AMD compiler to explode instead. Change 3722139 by Arne.Schober DR - [UE-51602] -Fixed Typo that accidently bound the LightingInstancebuffer to the Transform one #jira UE-51602 Change 3722165 by Rolando.Caloca DR - Default -opengl to GL4 Change 3722682 by Guillaume.Abadie Fixes wrong clear color in SSR important for VR that has a HMD mesh. Change 3722766 by Rolando.Caloca DR - Fix static analysis Change 3722943 by Mark.Satterthwaite Disable the METAL_SM5_NOTESS shader platform again - I can workaround the Nvidia pipeline state compiler crash by changing the buffer address space from "constant" to "device" as we're managing to confuse the poor thing. This won't materially affect AMD or Intel as they don't care much about this, but to limit performance issues on Nvidia we only need to do this for Tessellation Compute shaders. Change 3723100 by Mark.Satterthwaite Apparently users like enabling Metal shader standards that won't work on their current OS, so don't display those that aren't going to work & display an error message before quitting rather than crashing when trying to load a project that tries to use an incompatible shader version. Change 3723121 by Mark.Satterthwaite Fix build error. Change 3723245 by Daniel.Wright Ensure for when a reflection capture upload fails due to incorrect lighting scenario level handling Reflection captures with no data use an array index of 0, instead of -1. Might avoid reading uninitialized memory on PS4. Change 3723387 by Arne.Schober DR - Metal already applies the instance and vertexoffset in the shader Change 3723393 by Mark.Satterthwaite More fixes to the mtlpp compiler test application. Change 3725258 by Guillaume.Abadie Improves fast TAA upsample shader permutation by 15% on console. Change 3725555 by Chris.Bunner [Dupliate] CL 3725548 - Fixed invalid screenpercentage value in VehicleGame sample (was setting -1 but should default to 100). This has always been broken but was recently exposed by CL 3686200. Change 3726845 by Guillaume.Abadie Exposes SvPosition to material through screen position material expression, so that material no longer have SvPosition * InvViewSize * ViewSize precision loss. #jira UE-51428 Change 3728014 by Guillaume.Abadie Uses ScreenPosition material expression's PixelPosition pin in existing engine functions to improve precision. #jira UE-51428 Change 3728053 by Richard.Wallis Duplicate CL 3727958: Crash fix when using shared material libraries. Initial shader code library offset is not zero'd so all entry offsets were garbage. Change 3728339 by Guillaume.Abadie Adds project setting for TAA upample, and officialises TAA upsampling CVar. Change 3728549 by Guillaume.Abadie CsvProfiler is pretty cool, but even better with console autocompletion for lazy developers. Change 3728752 by nick.bullard Built and re-saved QA-MeshPaint #jira UE-50978 Change 3728775 by Guillaume.Abadie Implements r.DynamicRes.ChangePercentageThreshold to stabilize primary screen percentage. Change 3729224 by Uriel.Doyon Hidden levels now keep their last build data when using lighting scenarios. Hidden levels don't affect the scene anymore volumetric lighting when not using lighting scenarios. #jira UE-40454 #jira UE-38131 Change 3729243 by Marcus.Wassmer Update Ansel to 1.4 #github 4159 #jira UE-51545 Change 3729325 by zachary.wilson Adding indirect lighting to TM-LightingChannels #jira UE-47069 Change 3729485 by zachary.wilson Fixing ambient occlusion bias on QA-LightsStationary. Removed global PPV with bad settings, also fixed the shadow on the roof. #jira UE-50972 Change 3729629 by Uriel.Doyon Fixed crash when using debug view modes. Fixed d3ddebug error when clearing quad overdraw buffer. #jira UE-51836 Change 3730053 by Guillaume.Abadie Allows edititing of AScreenshotFunctionalTestBase::ScreenshotCamera. Change 3730308 by Guillaume.Abadie Disables TAA upsample on buffer visualization, and disallow screen percentage preview in editor viewport with any buffer visualization. Change 3730355 by Guillaume.Abadie Sacrifices consistency for good cvar name for TAA upsample. Change 3731403 by Daniel.Wright Reduced slider for ContactShadowLength to .1, algorithm produces poor results with larger values. Change 3731404 by Daniel.Wright Checkpoint for ScreenShadowMaskTexture, allowing 'vis ScreenShadowMaskTexture' Change 3731407 by Daniel.Wright Must opt-in for FDistanceFieldSceneData::VerifyIntegrity Change 3731517 by Guillaume.Abadie Freezes dynamic resolution heuristic when doing pause. Change 3732168 by Guillaume.Abadie Renames TAA upsampling cvar. Change 3732295 by Guillaume.Abadie Lets the scene texture's size and texel size return the correct sizes after TAA upsample. Change 3732313 by Guillaume.Abadie Implements SceneTexture material expressions' automated tests. Change 3734928 by Guillaume.Abadie Adds panic mode when the last N frames are over budget to the dynamic resolution heuristic. Change 3735966 by Ryan.Vance Fixing mac steamvr compile issue. Missed a few lines in the refactor because mac. Change 3736104 by Guillaume.Abadie Removes FSceneViewInitOptions::bDisableGameScreenPercentage brought by 4.18, that new screen percentage API do in a better way. Change 3736346 by Daniel.Wright Volumetric fog is always interpolated in the pixel shader, since per-vertex interpolation gives consistently poor results. Fixes Volumetric Fog on opaque in Forward, and on transparent in Deferred. Forward shading: per-pixel height fog is always done in the base pass, to work with MSAA correctly Change 3736348 by Daniel.Wright Forward shadowing of directional light for translucency * Static shadowing and CSM supported with minimal filtering (1 PCF) * Deferred renderer: affects translucency using 'Surface ForwardShading' lighting mode. Forward renderer: affects all translucency. Change 3736650 by Rolando.Caloca DR - vk - # of desc pools Change 3737985 by Guillaume.Abadie Fixes pixel inspector with primary and secondary screen percentage. Change 3738638 by Michael.Lentine Compile fix due to unclear operator precendence. Change 3739417 by Daniel.Wright Fixed a few issues with irradiance cache visualization Change 3739447 by Daniel.Wright Skip forward static shadowing in projects with static lighting disabled Change 3739595 by Daniel.Wright ConditionalPostLoad DistanceFieldReplacementMesh. Should fix a crash on load when static mesh derived data is being rebuilt, and the DistanceFieldReplacementMesh is in use. Change 3739598 by Daniel.Wright Disable capsules shadows on lowest shadow quality Change 3739611 by Daniel.Wright Added r.CapsuleDirectShadows and r.CapsuleIndirectShadows for more specific scalability control over capsule shadow features New Lighting Feature show flags for RTDF shadows and Capsule Shadows Change 3740516 by Guillaume.Abadie Fixes VR editor rendering only on eye with TAA upsample. #jira UE-52016 Change 3740580 by Guillaume.Abadie Fixes chromatic aberration with TAA upsample and multiple view rendering. #jira UE-51993 Change 3740588 by Guillaume.Abadie Gives to FXAA a more explicit draw event name for easier UDN support. Change 3740845 by Michael.Lentine Fix shipping build. Change 3740903 by Guillaume.Abadie Disables dynamic resolution threading outliers detection by default and includes editor UI GPU cost within dynamic resolution's begin/end frame events for better reliability of timestamp query based dynamic res in editor. Change 3741355 by Daniel.Wright Normalize planar reflection plane - fixes crash when scaling a BP with a planar reflection component Change 3741357 by Daniel.Wright More info on volumetric lightmap import failure Change 3742535 by Ryan.Vance Fix for view rect changes. Change 3743282 by Guillaume.Abadie Fixes a bug in dynamic resolution heuristic's outlier detection that was preventing the over budget panic to react. Change 3743559 by Michael.Lentine Port Siren changes for recompute tangents. This adds recompute tangents for cloth as well as the ability for recompute tangents to work across seams where vertices are duplicated. Change 3743679 by Guillaume.Abadie Cherry-pick 3743621: Fixes subsurface profile fallback to lit shading model when Opacity == 0, introduced by 3447144. #jira UE-51569 Change 3743906 by Ryan.Brucks BlueprintMaterialAndTextureNodes Plugin: Fix for clamping sampled HDR render target values by setting ERangeCompressionMode in the FReadSurfaceDataFlags to RCM_MinMax Change 3744096 by Ryan.Brucks BlueprintMaterialAndTextureNodes Plugin: removed Mip option from Texture2D_SampleUV_EditorOnly for now since reads from source data cannot access mips and it can be misleading. Change 3744253 by Guillaume.Abadie Fixes merge collisions of debug canvas rendering with High DPI, fixes stat unit on high DPI monitors, and fixes secondary screen percentages. Change 3744953 by Chris.Bunner Crash workaround. Change 3745628 by Marcus.Wassmer Temporarily disable recalctangent normal-smoothing #jira UE-52166 Change 3745942 by Guillaume.Abadie Fixes a todo in FCommonViewportClient Change 3746005 by Guillaume.Abadie Fixes stat UnitGraph on high DPI monitor. Change 3746029 by Guillaume.Abadie Oups.... Fix compilation. :D Change 3748322 by Guillaume.Abadie Shows dynamic resolution's primary screen percentage on stat unit/unitgraph console commands. Change 3748346 by Chris.Bunner Potential static analysis fix. Change 3748349 by Chris.Bunner Mac feature support flag fix on versions < 10.30. Change 3749336 by Guillaume.Abadie Fixes some spelling mistakes in dynamic resolution cvars. Thanks Daniel! Change 3749374 by Guillaume.Abadie Adds a black background on the stat unitgraph so timing curves can be seen no matter the content. Change 3749437 by Guillaume.Abadie Final UI polish up for `stat unitgraph` Change 3749719 by Guillaume.Abadie Fixes a crash when changing r.DynamicRes.MaxScreenPercentage below current screen percentage. Change 3750243 by Chris.Bunner Increasing controller's automated test timeout to allow for slower machines to complete the longest tests. #jira UE-48494, UE-51907 Change 3750728 by Guillaume.Abadie Fixes merge collision in chromatic aberration. #jira UE-52282 Change 3750791 by Guillaume.Abadie Fixes chromatic baerration R and G channel swap. Change 3751246 by Guillaume.Abadie Bypasses screen percentage apply with mobile LDR rendering. #jira UE-52089 Change 3752624 by Guillaume.Abadie Simplies dyn res state's event interface to a single virtual method. Change 3753766 by Chris.Bunner Rebuilt volumetric baked lighting test map and updated screenshots. #jira UE-52322 Change 3755108 by Guillaume.Abadie Fixes a bug where default dynamic resolution state was created at startup of server build. #jira UE-52345 Change 3755267 by Mark.Satterthwaite Fix condition controlling which features are enabled when iOS >= 10.3 - it wasn't working for iOS 11+ which was causing all kinds of problems. #jira UE-52301 Change 3755811 by Chris.Bunner Disable some new logging that was causing a stack overflow during EnginePreInit. #jira UE-52345 Change 3756983 by Mark.Satterthwaite Prevent different versions of metal_stdlib/ue4_stdlib from causing shader compilation failures due to a time-stamp mismatch between the local file & the PCH. This can happen when working with Xcode Beta releases that change the modification date, but not the content or compiler version, amongst other possibilities. #jira UE-52073 Change 3757156 by Guillaume.Abadie Fixes editor compositing with wireframe rendering. #jira UE-52017 Change 3757435 by Mark.Satterthwaite Workaround a bug in the MobileSceneCaptureRendering where it was copying the ViewInfo's ViewRect prior to it being configured by the mobile renderer. #jira UE-52327 Change 3757523 by Uriel.Doyon Fixed d3ddebug warning with unused inputs Change 3758318 by Guillaume.Abadie Cleaner fix for mobile scene captures. #jira UE-52327 Change 3759541 by Mark.Satterthwaite Don't enable Manual Vertex Fetch on iOS Metal for the moment as it isn't well tested there and will probably need further changes. Change 3695086 by Guillaume.Abadie Render thread dynamic resolution & TAA upsample. Merging //Tasks/UE4/Dev-DynamicRes/...@3694528 to //UE4/Dev-Rendering/... New features breakdown: - TAA upsample compute shader that accepts screen percentage from 50% to 200%, with a faster shader permutation for consoles; - Material no longer have to deal with BufferUV, and post process material after TAA upsample can sample any scene buffer seamlessly; - Material texture per view mip bias to produce sharper images with TAA upsample; - Render thread dynamic resolution heuristic is fully plugable by game code (for VR plugin specific heuristics); - Dynamic resolution in PIE and game builds; - Busy time queries in the RHI to be implemented on the different platforms so that the dynamic resolution heuristic can exactly associate GPU frame times with screen percentages in its history; - Game user settings to enable/disable dynamic resolution; - In editor viewport screen percentage config to previsualise and test content at different screen percentage. Fixes: - Various fixes for algorithms producing different outputs at different screen percentage. - Various fixes for algorithms sampling outside view rects. Refactors: - TAA shader - Moved some screen percentage specific members from FSceneView to FViewInfo for thread race bullet proofing. Aknowledgements: - VR plugins are broken - DFAO still have some artifacts Premiliminary review: Marcus.Wassmer Review for TAA refactor and TAA upsample shader: Brian.Karis Review for dynamic resolution: Brian.Karis [CL 3761165 by Chris Bunner in Main branch]
2017-11-16 11:36:35 -05:00
DistanceFieldAOHistoryViewRect->Min = FIntPoint::ZeroValue;
DistanceFieldAOHistoryViewRect->Max.X = View.ViewRect.Size().X / GAODownsampleFactor;
DistanceFieldAOHistoryViewRect->Max.Y = View.ViewRect.Size().Y / GAODownsampleFactor;
#if WITH_MGPU && 0 // TODO(RDG)
FRHITexture* TexturesToCopyForTemporalEffect[] = { BentNormalHistoryOutput->GetRHI() };
RHICmdList.BroadcastTemporalEffect(FName(NameForTemporalEffect, View.ViewState->UniqueID), TexturesToCopyForTemporalEffect);
#endif
}
else
{
// Temporal reprojection is disabled or there is no view state - just upscale
FRDGTextureRef DistanceFieldAOBentNormal = nullptr;
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
AllocateOrReuseAORenderTarget(GraphBuilder, View, DistanceFieldAOBentNormal, TEXT("DistanceFieldBentNormalAO"), PF_FloatRGBA, GFastVRamConfig.DistanceFieldAOBentNormal);
GeometryAwareUpsample(GraphBuilder, View, DistanceFieldAOBentNormal, DistanceFieldNormal, BentNormalInterpolation, Parameters);
BentNormalHistoryOutput = DistanceFieldAOBentNormal;
}
}
class FDistanceFieldAOUpsamplePS : public FGlobalShader
{
public:
DECLARE_GLOBAL_SHADER(FDistanceFieldAOUpsamplePS);
SHADER_USE_PARAMETER_STRUCT(FDistanceFieldAOUpsamplePS, FGlobalShader);
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTextures)
SHADER_PARAMETER_STRUCT_INCLUDE(FDFAOUpsampleParameters, DFAOUpsampleParameters)
SHADER_PARAMETER(float, MinIndirectDiffuseOcclusion)
RDG_TEXTURE_ACCESS(DistanceFieldAOBentNormal, ERHIAccess::SRVGraphics)
RENDER_TARGET_BINDING_SLOTS()
END_SHADER_PARAMETER_STRUCT()
class FModulateToSceneColorDim : SHADER_PERMUTATION_BOOL("MODULATE_SCENE_COLOR");
using FPermutationDomain = TShaderPermutationDomain<FModulateToSceneColorDim>;
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)
{
return ShouldCompileDistanceFieldShaders(Parameters.Platform);
}
};
IMPLEMENT_GLOBAL_SHADER(FDistanceFieldAOUpsamplePS, "/Engine/Private/DistanceFieldLightingPost.usf", "AOUpsamplePS", SF_Pixel);
void UpsampleBentNormalAO(
FRDGBuilder& GraphBuilder,
const TArrayView<FViewInfo>& Views,
TRDGUniformBufferRef<FSceneTextureUniformParameters> SceneTexturesUniformBuffer,
FRDGTextureRef SceneColorTexture,
FRDGTextureRef DistanceFieldAOBentNormal,
bool bModulateSceneColor)
{
for (int32 ViewIndex = 0; ViewIndex < Views.Num(); ViewIndex++)
{
const FViewInfo& View = Views[ViewIndex];
FScene* Scene = (FScene*)View.Family->Scene;
RDG_GPU_MASK_SCOPE(GraphBuilder, View.GPUMask);
auto* PassParameters = GraphBuilder.AllocParameters<FDistanceFieldAOUpsamplePS::FParameters>();
PassParameters->View = View.ViewUniformBuffer;
PassParameters->SceneTextures = SceneTexturesUniformBuffer;
PassParameters->DFAOUpsampleParameters = DistanceField::SetupAOUpsampleParameters(View, DistanceFieldAOBentNormal ? DistanceFieldAOBentNormal : GSystemTextures.GetWhiteDummy(GraphBuilder));
PassParameters->MinIndirectDiffuseOcclusion = Scene->SkyLight ? Scene->SkyLight->MinOcclusion : 0;
PassParameters->RenderTargets[0] = FRenderTargetBinding(SceneColorTexture, ERenderTargetLoadAction::ELoad);
PassParameters->DistanceFieldAOBentNormal = DistanceFieldAOBentNormal;
Copying //UE4/Dev-Rendering to Dev-Main (//UE4/Dev-Main) #lockdown nick.penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2879377 on 2016/02/24 by Gil.Gribb UE4 - Added render thread start and stop delegates. GitHub 2006. #Jira UE-26184 Change 2879378 on 2016/02/24 by Gil.Gribb UE4 - Avoided using TG_PrePhysics as the first tickgroup so that licensees can add tickgropups. https://udn.unrealengine.com/questions/279126/code-assumes-that-tg-prephysics-is-the-first-tick.html #Jira UE-26971 Change 2879382 on 2016/02/24 by Gil.Gribb UE4 - Tweaked automation test framework by request from UDN post. Change 2879727 on 2016/02/24 by Martin.Mittring adding debug info for Optimus driver detection issue #rb:Benjamin.Hyder #Test:PC Change 2879728 on 2016/02/24 by Martin.Mittring fixed and improved VisualizeMotionBlur #rb:David.Hill #test:PC Change 2879729 on 2016/02/24 by Martin.Mittring added AngleBetweenVectors() and variants to the FastMath library #rb:David.Hill #code_review:Brian.Karis Change 2880133 on 2016/02/24 by David.Hill new r.DepthOfFieldQualitySetting for GDC squencer demo #rb:Martin.Mittring - OR-15875 Change 2880314 on 2016/02/24 by Daniel.Wright Fixed uses of FDepthDrawingPolicyFactory being affected by bUseAsOccluder * This fixes preshadows on HISMC and foliage Change 2880338 on 2016/02/24 by Martin.Mittring added SkinCache.Debug cvar #rb:Lina.Halper #test:PC Change 2880344 on 2016/02/24 by Daniel.Wright Added the ability to apply DFAO to static indirect lighting, controlled by r.AOApplyToStaticIndirect * Lightmaps, stationary skylight and reflection captures are all affected * Specular occlusion on reflection captures requires a fair amount of tweaking of r.SkySpecularOcclusionStrength, MinOcclusion and MaxOcclusionDistance for good quality * For now, a movable skylight with low intensity (.0001) must be placed to control MaxOcclusionDistance and MinOcclusion Change 2880346 on 2016/02/24 by Daniel.Wright Added several cvars to expose mesh distance field limits, which allows higher quality * r.DistanceFields.MaxPerMeshResolution * r.DistanceFields.DefaultVoxelDensity * r.DistanceFields.AtlasSizeXY * r.DistanceFields.AtlasSizeZ Change 2881304 on 2016/02/25 by Gil.Gribb UE4 - Increased the priority of cloth tasks because these are on the critical path. Change 2881306 on 2016/02/25 by Gil.Gribb UE4 - Added cvar to control background tick list cleanup. Change 2881790 on 2016/02/25 by Daniel.Wright Screen size fading is only applied to spot and point lights Change 2882077 on 2016/02/25 by Daniel.Wright DFAO indirect occlusion on static lighting is now correctly applied to IndirectIrradiance Change 2882391 on 2016/02/25 by Martin.Mittring fixed bad caching of SRV for vertexbuffers in SkinCache (caused rendering artifacts and wasteful memory allocations). Finding a SRV is now O(1), was O(n) #rb:Olaf.Piesche #code_review:Rolando.Caloca,Marcus.Wassmer Change 2883008 on 2016/02/26 by Gil.Gribb UE4 - Fixed recursive shader intialization crash on consoles. Change 2883253 on 2016/02/26 by Martin.Mittring Improved SkinTangent compression #rb:Olaf.Piesche Change 2883295 on 2016/02/26 by Martin.Mittring Added RecomputeSkinTangent feature for GPU SkinCache, not enabled by default (r.SkinCache.RecomputeTangents) #rb:Olaf.Piesche,Brian.Karis,Lina.Halper,Rolando.Caloca Change 2883363 on 2016/02/26 by Gil.Gribb UE4 - Fixed an issue with recurisve shader init on consoles...again. Change 2883912 on 2016/02/26 by Gil.Gribb UE4 - Fixed shadows updating static meshes while the prepass is in progress. Change 2884829 on 2016/02/27 by Martin.Mittring OR-16237 indirect lighting on skin is too dark #rb:Martin.Mittring #code_review:Brian.Karis Change 2885096 on 2016/02/28 by Martin.Mittring OR-13678 [CL 2890130 by Gil Gribb in Main branch]
2016-03-02 13:38:38 -05:00
TShaderMapRef<FPostProcessVS> VertexShader(View.ShaderMap);
FDistanceFieldAOUpsamplePS::FPermutationDomain PermutationVector;
PermutationVector.Set<FDistanceFieldAOUpsamplePS::FModulateToSceneColorDim>(bModulateSceneColor);
TShaderMapRef<FDistanceFieldAOUpsamplePS> PixelShader(View.ShaderMap, PermutationVector);
GraphBuilder.AddPass(
RDG_EVENT_NAME("UpsampleAO"),
PassParameters,
ERDGPassFlags::Raster,
[VertexShader, PixelShader, PassParameters, &View, DistanceFieldAOBentNormal, bModulateSceneColor](FRHICommandList& RHICmdList)
{
RHICmdList.SetViewport(View.ViewRect.Min.X, View.ViewRect.Min.Y, 0.0f, View.ViewRect.Max.X, View.ViewRect.Max.Y, 1.0f);
FGraphicsPipelineStateInitializer GraphicsPSOInit;
RHICmdList.ApplyCachedRenderTargets(GraphicsPSOInit);
GraphicsPSOInit.RasterizerState = TStaticRasterizerState<FM_Solid, CM_None>::GetRHI();
GraphicsPSOInit.DepthStencilState = TStaticDepthStencilState<false, CF_Always>::GetRHI();
GraphicsPSOInit.PrimitiveType = PT_TriangleList;
if (bModulateSceneColor)
{
GraphicsPSOInit.BlendState = TStaticBlendState<CW_RGB, BO_Add, BF_DestColor, BF_Zero, BO_Add, BF_Zero, BF_One>::GetRHI();
}
else
{
GraphicsPSOInit.BlendState = TStaticBlendState<>::GetRHI();
}
GraphicsPSOInit.BoundShaderState.VertexDeclarationRHI = GFilterVertexDeclaration.VertexDeclarationRHI;
GraphicsPSOInit.BoundShaderState.VertexShaderRHI = VertexShader.GetVertexShader();
GraphicsPSOInit.BoundShaderState.PixelShaderRHI = PixelShader.GetPixelShader();
SetGraphicsPipelineState(RHICmdList, GraphicsPSOInit, 0);
SetShaderParameters(RHICmdList, PixelShader, PixelShader.GetPixelShader(), *PassParameters);
DrawRectangle(
RHICmdList,
0, 0,
View.ViewRect.Width(), View.ViewRect.Height(),
View.ViewRect.Min.X / GAODownsampleFactor, View.ViewRect.Min.Y / GAODownsampleFactor,
View.ViewRect.Width() / GAODownsampleFactor, View.ViewRect.Height() / GAODownsampleFactor,
FIntPoint(View.ViewRect.Width(), View.ViewRect.Height()),
UE5_MAIN: Multi-view-family scene renderer refactor, part 2. Move FSceneTextures singleton out of RDG blackboard and FSceneTexturesConfig global variable singleton, into FViewFamilyInfo. This is necessary to allow multiple view families to render in a single render graph and a single scene renderer call. * Existing calls to CreateSceneTextureShaderParameters and similar functions use "GetSceneTexturesChecked", which allows for the possibility that they are reached in a code path where scene textures haven't been initialized, and nullptr is returned instead of asserting. The shader parameter setup functions then fill in dummy defaults for that case. The goal was to precisely match the original behavior, which queried the RDG blackboard, and gracefully handled null if scene textures weren't there. This definitely appears to occur in FNiagaraGpuComputeDispatch::ProcessPendingTicksFlush, which can be called with a dummy scene with no scene textures. In the future, I may change this so dummy defaults are filled in for FSceneTextures at construction time, so the structure is never in an uninitialized state, but I would like to set up a test case for the Niagara code path before doing that, and the checks aren't harmful in the meantime. * I marked as deprecated global functions which query values from FSceneTexturesConfig, but they'll still work with the caveat that if you use multi-view-family rendering, the results will be indeterminate (whatever view family rendered last). There was only one case outside the scene renderer that accessed the globals (depth clear value), which I removed, noting that there is nowhere in the code where we modify the depth clear value from its global default. I would like to permanently deprecate or remove these at some point. Display Cluster is the only code that's currently using the multi-view-family code path, and as a new (still incomplete) feature, third party code can't be using it, and won't be affected. #jira NONE #rb chris.kulla zach.bethel mihnea.balta #preflight 6261aca76119a1a496bd2644 [CL 19873983 by jason hoerner in ue5-main branch]
2022-04-22 17:33:02 -04:00
GetBufferSizeForAO(View),
VertexShader);
});
}
}