#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3045482 on 2016/07/11 by Zabir.Hoque
DX12 Quries need to individually track their syncpoints. Only when resolving a query on the same frame should be stall.
Change 3045929 on 2016/07/12 by Simon.Tovey
Removing some deprecated node types from Niagara
Change 3045951 on 2016/07/12 by Ben.Woodhouse
D3D11 Log detailed live device info on shutdown if the debug layer is enabled (including resource types)
Change 3046019 on 2016/07/12 by Chris.Bunner
Fixed typo in material input name.
#jira UE-5575
Change 3046053 on 2016/07/12 by Rolando.Caloca
DR - Fix GL4 shutdown
#jira UE-32799
Change 3046055 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix NumInstances=0
Change 3046063 on 2016/07/12 by Rolando.Caloca
DR - vk - Added flat to uint layouts per glslang
- Fix bad extension on dumped shaders
Change 3046067 on 2016/07/12 by Rolando.Caloca
DR - vk - Fix check when not using color RT
- Added queue submit & present counters
Change 3046088 on 2016/07/12 by Ben.Woodhouse
Live GPU stats
A non-hierarchical realtime high level GPU profiler with support for cumulative stat recording.
Stats are added with SCOPED_GPU_STAT macros, e.g. SCOPED_GPU_STAT(RHICmdList, Stat_GPU_Distortion)
The bulk of the files in this change are simply instrumentation for the renderer. The core changes are in SceneUtils.cpp/h and D3D11Query.cpp (this is the XB1/DX11X implementation of timestamp RHI queries, which was missing)
Note: this is currently disabled by default. Enable with the cvar r.gpustatsenabled
Tested on PC, XB1, PS4
Change 3046128 on 2016/07/12 by Olaf.Piesche
Max draw distance and fade range for lights, requested by JonL
Change 3046183 on 2016/07/12 by Ben.Woodhouse
PR #2532: Fix SSAO being applied in unlit viewmode (Contributed by nick-penwarden)
Change 3046223 on 2016/07/12 by Luke.Thatcher
Fix Scene Cube Captures. SceneCaptureSource flag on the ViewFamily was not set for cube components.
#jira UE-32345
Change 3046228 on 2016/07/12 by Marc.Olano
Add Voronoi noise to Noise material node.
Four versions with differing speed/quality levels accessed through the Quality value in the material node. Tooltips give estimates of the cost of each.
Also includes spiffy new Rand3DPCG16 and Rand3DPCG32 int3 to int3 hash functions, and a 20% improvement on the computed gradient noise.
Change 3046269 on 2016/07/12 by Rolando.Caloca
DR - Skip flush on RHIDiscardRenderTargets and only use it on platforms that need it (ie OpenGL)
Change 3046294 on 2016/07/12 by Rolando.Caloca
DR - Fix static analyisis
warning C6326: Potential comparison of a constant with another constant.
Change 3046295 on 2016/07/12 by Rolando.Caloca
DR - Fix the previous fix
Change 3046731 on 2016/07/12 by Marc.Olano
Fix typo in shader random number constant: repeated extra digit made it too big.
Change 3046796 on 2016/07/12 by Uriel.Doyon
The texture streaming manager now keeps a set of all valid textures.
This is used to prevent from indirecting deleted memory upon SetTexturesRemovedTimestamp.
#jira UE-33048
Change 3046800 on 2016/07/12 by Rolando.Caloca
DR - vk - Added create image & renderpass dump
Change 3046845 on 2016/07/12 by John.Billon
Forgot to apply MaxGPUSkinBones Cvar access changes in a few locations.
Change 3047023 on 2016/07/12 by Olaf.Piesche
Niagara:
-a bit of cleanup
-now store and double buffer attributes individually, eliminating unnecessary copy of unused attributes
-removed FNiagaraConstantMap, replaced with an instance of FNiagaraConstants
-some code simplification
-removed some deprecated structs and code used only by old content
Change 3047052 on 2016/07/12 by Zabir.Hoque
Unshelved from pending changelist '3044062':
PR #2588: Adding blend mode BLEND_AlphaComposite (4.12) (Contributed by moritz-wundke)
Change 3047727 on 2016/07/13 by Luke.Thatcher
Fix Scene Capture Components only updating every other frame.
#jira UE-32581
Change 3047919 on 2016/07/13 by Olaf.Piesche
CMask decode, use in deferred decals, for PS4
Change 3047921 on 2016/07/13 by Uriel.Doyon
"Build Texture Streaming" will now remove duplicate error msg when computing texcoord scales.
Also, several texture messages are packed on the same line if they relate to the same material.
Change 3047952 on 2016/07/13 by Rolando.Caloca
DR - vk - Initial prep pass for separating combined images & samplers
Change 3048648 on 2016/07/13 by Marcus.Wassmer
Fix rare GPU hang when asynctexture reallocs would overlap with EndFrame
Change 3049058 on 2016/07/13 by Rolando.Caloca
DR - vk - timestamps
Change 3049725 on 2016/07/14 by Marcus.Wassmer
Fix autosdk bug where not having a platform directory sync'd at all would break manual SDK detection
Change 3049742 on 2016/07/14 by Rolando.Caloca
DR - Fix warning
Change 3049902 on 2016/07/14 by Rolando.Caloca
DR - Fix typo
Change 3050345 on 2016/07/14 by Olaf.Piesche
UE-23925
Clamping noise tessellation for beams at a high but sensible value; also making sure during beam index buffer building that we never get over 2^16 indices; this is a bit hokey, but there are so many variables that can influence triangle/index count, that this is the only way to be sure (short of nuking the entire site from orbit).
Change 3050409 on 2016/07/14 by Olaf.Piesche
Replicating 3049049; missing break and check for active particles when resolving a source point to avoid a potential crash
Change 3050809 on 2016/07/14 by Rolando.Caloca
DR - vk - Remove redundant validation layers
Change 3051319 on 2016/07/15 by Ben.Woodhouse
Fix for world space camera position not being exposed in decal pixel shaders; also fixes decal lighting missing spec and reflection
The fix was to calculate ResolvedView at the top of the shader. Previously this was not initialized
#jira UE-31976
Change 3051692 on 2016/07/15 by Rolando.Caloca
DR - vk - Enable RHI thread by default
Change 3052103 on 2016/07/15 by Uriel.Doyon
Disabled depth offset in depth only pixel shaders when using debug view shaders (to prevent Z fighting).
#jira UE-32765
Change 3052140 on 2016/07/15 by Rolando.Caloca
DR - vk - Fix shader snafu
Change 3052495 on 2016/07/15 by Rolando.Caloca
DR - Fix for Win32 compile
#jira UE-33349
Change 3052536 on 2016/07/15 by Uriel.Doyon
Fixed texture streaming overbudget warning when using per texture bias.
[CL 3054554 by Gil Gribb in Main branch]
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2998081 on 2016/06/02 by Rolando.Caloca
DR - Update vulkan headers to 1.0.13.0
Change 2998087 on 2016/06/02 by Rolando.Caloca
DR - Added r.DumpShaderDebugWorkerCommandLine to dump a batch file containing a command line for SCW's -directcompile mode
Change 2998092 on 2016/06/02 by Rolando.Caloca
DR - Updated ThirdParty/glslang to 1.0.13.0
Change 2998113 on 2016/06/02 by Martin.Mittring
Added -Deterministic and -BuildName=... as command line option for Screenshot verification
Change 2998115 on 2016/06/02 by Martin.Mittring
optimied Tonemapper sharpen 25->17 instructions
fixes: very bright HDR pixel appeared to not be antialiased
no blonger blurs very bright pixels (we could bring that back if needed but counters the sharpen)
moved one multipy into C++
Added debug visualization (HLSL define)
Change 2998132 on 2016/06/02 by Rolando.Caloca
DR - Remove auto from VulkanRHI wherever possible
Change 2998148 on 2016/06/02 by Rolando.Caloca
DR - Move FVulkanPendingState out of device and into cmd list for more RHI thread fixes
Change 2998180 on 2016/06/02 by Rolando.Caloca
DR - Temp fix for (bogus?) fence validation warning using VULKAN_REUSE_FENCES=0
- Check we are not asking for a VkFormat out of bounds (ie only works with core formats)
Change 2998293 on 2016/06/02 by Rolando.Caloca
DR - Add support for BC6H & BC7 in desktop Vulkan
Change 2998419 on 2016/06/02 by Brian.Karis
Optimized CountBits
Change 2998480 on 2016/06/02 by Rolando.Caloca
DR - Fix for RHI thread failing in an ensure on es31 (doesn't happen on bypass as the ensure is inside RHI cmd list)
Change 2998486 on 2016/06/02 by Martin.Mittring
fixed ES2 shader compile
Change 2998527 on 2016/06/02 by Daniel.Wright
Added cvar r.StencilForLODDither, which is compiled into shaders and forces a full prepass when enabled. This allows r.EarlyZPass to remain changeable at runtime (when not forced to a value by features that are enabled).
Change 2998531 on 2016/06/02 by Daniel.Wright
Fixed Pixel Normal Offset refraction mode with materials using world space normals
Change 2998568 on 2016/06/02 by Rolando.Caloca
DR - Fix typo
Change 2998630 on 2016/06/02 by Rolando.Caloca
DR - Relaxed glslang strictness to get Pos tCombineLUTs working
- Reenabled Post CombineLUTs on Vulkan
- Removed some extra glsl output from Vulkan backend
- Fixed RHI thread uniform buffer assert
Change 2998639 on 2016/06/02 by Brian.Karis
Fix for crash when removing instances while lighting is building
Change 2998640 on 2016/06/02 by Martin.Mittring
added r.ResetViewState to allow for more deterministic rendering
made SSR FrameRandom resetable by not using FrameNumber (Note: SSR on a view without state was flickering before, not it's stabele and doesn't flicker)
Change 2998790 on 2016/06/02 by Martin.Mittring
minor optimization to SSR
Change 2999849 on 2016/06/03 by Martin.Mittring
fixed issue with sort order
Change 3000340 on 2016/06/03 by Rolando.Caloca
DR - Integrate change from 3000177
Workaround for random crash shutting down D3D11/NV driver
jira UE-18906
Change 3000422 on 2016/06/03 by Rolando.Caloca
DR - Mirror change in Odin
Change 3000571 on 2016/06/03 by Rolando.Caloca
DR - Vulkan SM4 prep
Change 3001652 on 2016/06/06 by Gil.Gribb
Merging //UE4/Dev-Main@3001532 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3001935 on 2016/06/06 by Gil.Gribb
UE4 - Fixed botched merge
Change 3002390 on 2016/06/06 by Gil.Gribb
UE4 - Added code to prevent flooding of rendering thread with heartbeats.
Change 3002442 on 2016/06/06 by Martin.Mittring
Moved ImageInvalidator out of NotForLicensees - V1.0 works well enough
Change 3002460 on 2016/06/06 by Martin.Mittring
fixed missing file in ImageValidator
added .exe to extras
Change 3002514 on 2016/06/06 by Martin.Mittring
added OpenSubDiv 3.0.2, not yet used
Change 3002536 on 2016/06/06 by Martin.Mittring
fixed help text on cvar
Change 3002647 on 2016/06/06 by Martin.Mittring
adding r.ResetViewState to RenderOutputValidation
added r.Streaming.FramesForFullUpdate to r.DisplayInternals
#code_review:Benjamin.Hyder
Change 3002945 on 2016/06/06 by Rolando.Caloca
DR - Fix hlslcc issue with access to matrix elements:
This would fail:
M._m30 += f;
- Fixed IRDump for matrix swizzled
- Fix hlslcc_exe not linking
Change 3002979 on 2016/06/06 by John.Billon
DDS unsupported format error
#Jira UE-24529
Change 3002983 on 2016/06/06 by Martin.Mittring
split FPixelShaderInOut in in and out
Change 3003011 on 2016/06/06 by Martin.Mittring
updated OpenSubDiv to 3.0.2
Fixed SubDivisonRendring by using OpenSubDiv
Change 3003264 on 2016/06/06 by Daniel.Wright
Fixed bUseSingleSampleShadowFromStationaryLights on particles
Change 3003296 on 2016/06/06 by Daniel.Wright
Renamed files Forward* to Mobile*
Change 3003350 on 2016/06/06 by Daniel.Wright
Improved "Repaired Painted Vertex Colors" log message. This is now done once on levels at load in the editor, instead of for every component (massive log spam). Total load time caused by the fixup is reported.
Change 3003815 on 2016/06/07 by Chris.Bunner
Updating to more recent D3DCompiler DLL, seeing up to 2x speed-up in testing.
Removed compiler override cvar.
#jira UE-28574
Change 3003827 on 2016/06/07 by Gil.Gribb
UE4 - Increased stack sizes for thread pools.
Change 3003971 on 2016/06/07 by Martin.Mittring
fixed compiler warnings
Change 3004028 on 2016/06/07 by Rolando.Caloca
DR - Update glslang exe
Change 3004555 on 2016/06/07 by Rolando.Caloca
DR - vk - Fix validation warning
Change 3004637 on 2016/06/07 by Martin.Mittring
fixed compiler warning
Change 3004841 on 2016/06/07 by Daniel.Wright
Fix for shadowed variable
Change 3005044 on 2016/06/07 by Daniel.Wright
SubUV Animations can get opacity information from any channel of the source texture
Change 3005057 on 2016/06/07 by Daniel.Wright
Renamed ForwardShading* to Mobile*
Change 3005135 on 2016/06/07 by Uriel.Doyon
Moving wanted mip computation (according to budget) to async task.
Update "stat streaming" to show visible mips and also loading progression.
Fixed overly wanted mip issue cause be max range clamping.
Optimized cost of the texture streamer on the gamethread.
Character, Terrain and Forced Load are now loaded with priority in the AsyncIO
Reduced streaming temp memory requirements on PS4.
Async streaming task now runs in parallel to the incremental update.
Fixed bug with bProcessEverything not working as expected in UpdateResourceStreaming.
Fixed metrics with HiddenScale being applied in addition to overbudget limitation.
Improved budget stability when using split load request (one for visible mips + one for hidden mips)
Implemented a more agressive visibility test (used to be a seen in the last 5 sec, now closer to .5)
Streaming stats are now within a single class named FTextureStreamingStats and updated in a single function.
Cleanup of FStreamingTexture state update into a single function (UpdateDynamicData).
Retention logic now drops texture based on the last render time (for non visible textures) to reduce looping effects.
Change 3005207 on 2016/06/07 by Uriel.Doyon
Fixed warning
[CL 3006426 by Gil Gribb in Main branch]
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2917472 on 2016/03/21 by Rolando.Caloca
DR - Fix SCW directcompile arguments, add -pipeline
Change 2919580 on 2016/03/23 by Rolando.Caloca
DR - HlslParser - Fix for used elements (sparrow's arrow was showing when it shouldn't)
Arrays of input/outputs are now flattened so disjoint entries can be optimized out (and fixes a bug)
#jira OR-15380
#tests Run game with sparrow, test with slomo to check for gfx glitches
Change 2919660 on 2016/03/23 by Rolando.Caloca
DR - Latest vk changes (from dev mobile's 2916881 to 2919157)
Change 2919902 on 2016/03/23 by Rolando.Caloca
DR - Fix skeletal meshes decrementing stats twice
#codereview Marcus.Wassmer
#jira UE-28478
Change 2920020 on 2016/03/23 by David.Hill
#Jira UE-28503
EyeAdapation when used in material shader may not be initialized.
#rb olaf.piesche
Change 2920071 on 2016/03/23 by Rolando.Caloca
DR - Remove old vk define
- Started moving around direct calls to queue submit
Change 2920252 on 2016/03/23 by Rolando.Caloca
DR - Changes vk structs to classes
Change 2920314 on 2016/03/23 by Olaf.Piesche
Add -windowed to standalone game PIE command line to avoid PIE launching in full screen
#jira UE-27870
#codereview michael.trepka
Change 2920745 on 2016/03/24 by Uriel.Doyon
Texture streaming build now takes into account the material texcoord scales applied to the texture sampling.
Also finds out which texcoord is being used when sampling textures (between 0 and 3 currently).
TexCoord analysis debug view shaders is now working with SM4 ane SM5.
StaticMeshComponents hold persistent data coming from the texture streaming build.
#tests tested with different Paragon assets. Editor SM4 & SM5. Cooked maps
#codereview marcus.wassmer
Change 2921335 on 2016/03/24 by Uriel.Doyon
Added missing static keyword for locally defined console variable.
#codereview rolando.caloca
Change 2921416 on 2016/03/24 by Uriel.Doyon
Revert enabling debugview shaders on non PC platforms (until properly tested and debugged)
Change 2921446 on 2016/03/24 by Daniel.Wright
Planar reflection mesh
Change 2921530 on 2016/03/24 by Daniel.Wright
Manual revert of Ronin planar reflections
#codereview Ryan.Vance
Change 2921608 on 2016/03/24 by Uriel.Doyon
Updated texture streamer to take into account the new HLOD texture group.
Change 2921677 on 2016/03/24 by Daniel.Wright
Distance Field Specular Occlusion
* Prototype - disabled by default
Change 2921681 on 2016/03/24 by Daniel.Wright
UnmappedTexelsPercentage is now 100 based
Change 2921682 on 2016/03/24 by Daniel.Wright
Planar reflections
* New actor and component
* The scene is rendered to texture with a mirrored camera and a clip plane each frame
* The reflection texture is then applied to opaque pixels in a deferred pass, with distance and angle from plane fades
* Translucent materials apply the nearest reflection plane in the base pass
* Planar reflections require the project setting 'Support global clip plane for Planar Reflections' to be enabled, since writing to SV_ClipDistance all the time adds about 15% BasePass GPU time on PS4
* Fixed global distance field in materials which had been broken since moving global distance field properties into the view uniform buffer
* Fixed PS4 removing system-value semantics when output from vertex shader and not read in next stage
Change 2921734 on 2016/03/24 by Uriel.Doyon
Fixed tessellated cube having wrong UVs
#jira UE-28379
Change 2922063 on 2016/03/24 by Daniel.Wright
Removed planar reflection debug code
Change 2922428 on 2016/03/25 by Chris.Bunner
Delete FShaderPipeline objects when clearing TMaterialShaderMaps.
#rb Rolando.Caloca
#jira UE-28621
Change 2922803 on 2016/03/25 by Rolando.Caloca
DR - New cmd buffer management (disabled)
- Move cmd buffer out of pending state and into context
- Do not hardcode # cmd buffers
- Move back buffer image mgmt into swapchain
- Fixed some image layout transition bugs
Change 2923056 on 2016/03/25 by Rolando.Caloca
DR - Initial fix for canvas locking inside a render pass
[CL 2932649 by Gil Gribb in Main branch]
Instead of rendering a full screen quad for post process passes, render a mesh which represents only the screen area visible in the HMD after distortion.
This cuts the cost of post processing ~10-15% with no visible difference.
Initial implementation for the Vive.
[CL 2644327 by Ryan Vance in Main branch]
This feature buidls a stencil buffer according to the rougness in the GBuffer to make the difference between pixels that need a SSR computation and those who don't, instead of an early return in the SSR shader itself. Therefore SSR pixel shader invocations will only be for pixel that needs on hardware that have a high resolution stencil test before the pixel shader invocations packing into front lines, removing the efficiency drop caused by the thread that might early return in front lines that still have at least one thread that didn't early return.
#code_review: Brian.Karis
[CL 2561199 by Guillaume Abadie in Main branch]
HZB is now always built and stored on ViewInfo.
SSR uses constant depth intersect instead of segment intersect for better quality near contacts.
[CL 2402625 by Brian Karis in Main branch]
- Removed default shader platform parameter from GetGlobalShaderMap()
- Added an inline overload of GetGlobalShaderMap() that takes a feature level instead, and translates to the correct shader platform
- Cached feature level on FSceneView for faster access
- Cached shader map on FViewInfo for faster access
- Cached featurelevel/shadermap on rendering composition graph execution context, for faster access
Fixed a couple of crashes when switching feature level dynamically
- Needed to allow certain shader permutations to be generated if feature level was ES2, but still on a PC platform. (i.e. hitproxy shaders, and basepass shaders used by editor primitives system)
#codereview Nick.Penwarden
[CL 2275937 by Graeme Thornton in Main branch]
* Both paths still exist in code during this transition. The GetDynamicMeshElements path is currently disabled, enable with 'r.UseGetDynamicMeshElements 1'.
* DrawDynamicElements was called once per pass, all sorts of pass-specific cruft had leaked in along with short-term modifications of shared structures (vertex factories and material proxies). DrawDynamicElements was not const, so a bunch of 'update' type work had leaked in. Various PreRenderView implementations relied on the view being in the view family.
* GetDynamicMeshElements is called once in InitViews, and the resulting meshes are used in various passes. GetDynamicMeshElements is const and must not modify the proxy, update work should be pushed to the proxy from the game thread. GetDynamicMeshElements can be called on views that are not in the view family, which allows a proper view for shadow depth passes.
* View mode override functionality moved out of the individual proxies into a centralized place, ApplyViewModeOverrides
* GPU particles not working yet, FRecastRenderingSceneProxy not implemented
[CL 2253795 by Daniel Wright in Main branch]