2016-01-07 08:17:16 -05:00
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3045398)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3028958 on 2016/06/27 by Ben.Woodhouse
Fix for perf issue with GetSingleFinalDataConst
This was caused by the LPV integration/switch to blendables. Now we cache the flag for the directionalocclusion in the LPV class. This reduces calls to GetSingleFinalDataConst on the blendable data (potentially slow), and makes things a bit cleaner and consistent.
Tested in QAGame editor (with LPV enabled in ConsoleSettings.ini)
#jira UE-26179
Change 3029401 on 2016/06/27 by Rolando.Caloca
DR - More vk logging
Change 3029549 on 2016/06/27 by Uriel.Doyon
Refactored "r.OnlyStreamInTextures" into "r.Streaming.FullyLoadUsedTextures", making it fully load every used textures, as an alternative to disabling texture streaming.
New options "r.Streaming.UsePerTextureBias" that assign a bias between 0 and MipBias to each texture in order to fit in budget.
Fixed crash when disabling texture streaming.
Fixed issue when disabling texture streaming that would make current loaded texture low res.
New logic to prevent retrying to cancel a streaming request more than once.
Pending load request of one extra mip will not be cancelled anymore.
Changed UTexture2D from float to double. Also using FApp::GetCurrentTime() instead of FPlatformTime::Seconds().
#jira UE-32197
#jira UE-31102
Change 3029837 on 2016/06/27 by David.Hill
Fixed Shutter SM4 not working when using compute shader eye-adaptation
#jira UE-32443
The default eye adaptation value was missing.
Change 3030039 on 2016/06/27 by Uriel.Doyon
Fix for crash when landscape materials are used in the Texture Streaming Build.
#jira UE-32196
Change 3030081 on 2016/06/27 by Uriel.Doyon
Updated MaterialTexCoordScalesPixelShader to use PackedEyeIndex, preventing crash when building the map with stereo rendering enabled.
Change 3030401 on 2016/06/28 by Ben.Woodhouse
Perf Monitor: Fix for perf warning due to cvar FindConsoleVariable being called too frequently. Tested in QAGame editor (DX11)
#jira UE-31238
Change 3030607 on 2016/06/28 by Marc.Olano
Random Number generators: fixed bug in TEA, added integer and float Blum-Blum-Shub. BBS is way cheaper for similar quality, suggest it for future use.
Change 3030627 on 2016/06/28 by Ben.Woodhouse
Fix for warning. CVar naming scope clash (doesn't appear to happen in vs2015).
Change 3030809 on 2016/06/28 by Marc.Olano
Noise shader function rename & perf improvement.
Due to incorrect terminology in internet soruces, previous "Perlin" noise was not, in fact, Perlin noise. Now more accurately called "Value" noise. 6x perf improvement for value noise by changing random number function to BBS. Also updated instruction counts in UI tooltips.
Change 3030850 on 2016/06/28 by Marc.Olano
Rename & redirect noise material enums. At some point these got switched around and no longer accurately described the noise options the selected. Redirect, so all existing content will continue to work as-is. Updated UDN docs to match.
Change 3030981 on 2016/06/28 by Rolando.Caloca
DR - vk - More logging
Change 3031056 on 2016/06/28 by Marc.Olano
Introduce new pure-ALU gradient shader noise. Add noise samples to RenderTest map
Change 3031398 on 2016/06/28 by Benjamin.Hyder
updating TM-Shadermodels (correcting Mt Rushmore)
Change 3031441 on 2016/06/28 by Marc.Olano
Use only float version of BBS shader rand function for ES2
Change 3031463 on 2016/06/28 by John.Billon
Fixed F4 changing the viewmode in Fortnite editor. The detailed lighting viewmode (detaillighting) named in DefaultInput.ini differed from the one in BaseInput.ini(lit_detaillighting).
#Jira UE-32020
Change 3031512 on 2016/06/28 by Zabir.Hoque
Relax clear flags for DX12 RHIs.
Properly flush pending commands before residency is updated.
Change 3031517 on 2016/06/28 by Rolando.Caloca
DR - vk logging using r.Vulkan.DumpLayer
Change 3032359 on 2016/06/29 by Allan.Bentham
Fix mobile shadows crash.
Change 3032431 on 2016/06/29 by Gil.Gribb
Merging //UE4/Dev-Main@3032394 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3032757 on 2016/06/29 by Uriel.Doyon
Fixed global mip bias being applied twice following integration with main.
Change 3033121 on 2016/06/29 by Rolando.Caloca
DR - vk - Logging
Change 3033529 on 2016/06/29 by Daniel.Wright
Null world guard on UReflectionCaptureComponent::ReadbackFromGPU
Change 3033668 on 2016/06/29 by Uriel.Doyon
Grouped texture streaming settings to simplify logic.
New options "r.Streaming.UseAllMips" to ignores the different lod and cinematic bias
#jira UE-32118
Change 3034403 on 2016/06/30 by Rolando.Caloca
DR - Shorten dumped shader debug strings
Change 3034475 on 2016/06/30 by Rolando.Caloca
DR - Missing logging
Change 3034722 on 2016/06/30 by Uriel.Doyon
Improved StreamingAccuracy viewmodes with alpha test and translucent materials
#jira UE-32656
Change 3034797 on 2016/06/30 by Rolando.Caloca
DR - vk - 'fix' RHIClear but causes a CPU hang on AMD, so disabled again
Change 3034799 on 2016/06/30 by Rolando.Caloca
DR - vk - missed file
Change 3034905 on 2016/06/30 by Rolando.Caloca
DR - vk - Fix for render passes being reused with wrong dimensions
Change 3035503 on 2016/07/01 by Simon.Tovey
Async compute version of translucency lighting volume clear.
Change 3035577 on 2016/07/01 by Marc.Olano
Tiling noise. Adds tiling option for gradient, gradient texture, and value noise in the noise material node. Tiling is more expensive, but allows noise functions to be baked into a seamless repeating texture.
Change 3035587 on 2016/07/01 by Ben.Woodhouse
Fix for async SSAO bug (SSAO Async Compute results are used before the async job wait)
#jira UE-32709
Change 3035618 on 2016/07/01 by Olaf.Piesche
Asset fixes
Change 3035692 on 2016/07/01 by Rolando.Caloca
DR - vk - Deferred deletion queue
Change 3035808 on 2016/07/01 by Rolando.Caloca
DR - vk - Stat for deletion time, fixed some logging
Change 3036012 on 2016/07/01 by John.Billon
Alpha Coverage Preservation
-Textures have a Alpha Preservation Vec4 property which dictates about much of that channel to preserve down the mip chain during mip generation.
#Jira UE-31986
Change 3036041 on 2016/07/01 by Rolando.Caloca
DR - vk - Fix for 32bit
Change 3036433 on 2016/07/01 by Rolando.Caloca
DR - More vk logging
Change 3036935 on 2016/07/04 by Simon.Tovey
Removing Data Objects
Change 3036942 on 2016/07/04 by Ben.Woodhouse
Fix for decal rendering resource leak
The cause was that FD3D11BoundRenderTargets doesn't support setting RTs sparsely. So if one element is NULL, it won't release the ones after it.
The sparse RT layout happened as a result of a change back in October, which meant that GBuffers for decals could be set sparsely, dependent on whether the decal wrote to the normalbuffer
This change adds support for sparsely bound rendertargets in FD3D11BoundRenderTargets.
#jira UE-32602
Change 3037563 on 2016/07/05 by Chris.Bunner
HLOD self-shadowing in baked lighting fix.
Change 3037640 on 2016/07/05 by Marcus.Wassmer
Fix bug in USE_GPU_OVERWRITE_CHECKING
Change 3037927 on 2016/07/05 by Rolando.Caloca
DR - Fix touch pads not showing on Vulkan
#jira UE-32062
Change 3038085 on 2016/07/05 by Chris.Bunner
HLOD dynamic shadowing support.
#jira UE-22627
Change 3038209 on 2016/07/05 by Rolando.Caloca
DR - vk - Android compile fix
Change 3038644 on 2016/07/05 by Uriel.Doyon
Added LerpRange that allows to lerp between two rotators without taking the sortest path.
Change 3038820 on 2016/07/05 by Uriel.Doyon
Selecting streaming accuracy view modes will not automatically generate missing visualization data.
Change 3039332 on 2016/07/06 by John.Billon
-Made MaxGPUSkinBonesCvar a FAutoConsoleVariableRef and moved it to mesh utilitles from console manager to fix a thread initialization problem.
#Jira UE-31710
Change 3039454 on 2016/07/06 by Simon.Tovey
Moved all Niagara files from Engine and UnrealEd to remove dependancies and increase compile times.
Niagara is now 99.999% decoupled from engine and editor so development should be much streamlined.
Plus a few other edits to remove Curves/DataObjects that I missed in last CL.
Change 3039517 on 2016/07/06 by Gil.Gribb
Merging //UE4/Dev-Main@3039013 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3039587 on 2016/07/06 by Rolando.Caloca
DR - vk logging, submit counter
Change 3039603 on 2016/07/06 by Rolando.Caloca
DR - Allow more samplers on GL4
#jira UE-32628
#jira UE-32744
Change 3039661 on 2016/07/06 by Daniel.Wright
Fixed non-directional DFAO occlusion on specular 'r.AOSpecularOcclusionMode 0'
Skylight occlusion tint now applies to specular
Skylight occlusion tint on diffuse is now correctly affected by DiffuseColor
Change 3039960 on 2016/07/06 by Daniel.Wright
Forward renderer initial implementation
* Point and spot lights are culled to a frustum space grid, base pass loops over culled lights.
* Light culling uses a reverse linked list to avoid a per-cell limit, and the linked list is compacted to an array before the base pass.
* New cvars to control light culling: r.Forward.MaxCulledLightsPerCell, r.Forward.LightGridSizeZ, r.Forward.LightGridPixelSize
* A full Z Prepass is forced with forward shading. This allows deferred rendering before the base pass of shadow projection methods that only rely on depth.
* Dynamic shadows are packed based on the assigned stationary light ShadowMapChannel, since stationary lights are already restricted to 4 overlapping.
* GBuffer render targets are still allocated
* Fixed several issues in parallax corrected base pass reflections - not blending out box shape, discontinuity in reflection vector, not blending with stationary skylight properly
* Forward shading is now used for TLM_SurfacePerPixelLighting translucency in the deferred path
* Notable missing features: shadowing of translucency, support for various translucency lighting modes, multiple blended reflection captures
Change 3040050 on 2016/07/06 by Daniel.Wright
Added r.Shadow.WholeSceneShadowCacheMb, which defaults to 150, to limit how much memory can be spent caching whole scene shadowmaps
Change 3040160 on 2016/07/06 by Daniel.Wright
Fixed tile artifacts in indirect capsule shadows from doing the scaled sphere vs tile bounding sphere intersection in the wrong space
Change 3040163 on 2016/07/06 by Rolando.Caloca
DR - vk - More logging
Change 3040257 on 2016/07/06 by Daniel.Wright
Skylights aren't captured until their level is made visible- fixes the case where skylights capture too early
Change 3040316 on 2016/07/06 by Daniel.Wright
PerObject shadows from point / spot lights do the light source pull back based on subject box size, not subject radius, since the box is used to find a valid < 90 degree projection. Fix from licensee
Change 3040361 on 2016/07/06 by Daniel.Wright
Fixed TexCreate_UAV being used on translucency volume textures in SM4
Change 3040402 on 2016/07/06 by Rolando.Caloca
DR - vk - Make host mem accesses coherent
Change 3040486 on 2016/07/06 by Daniel.Wright
CIS fixes
Change 3041028 on 2016/07/07 by Gil.Gribb
Merging //UE4/Dev-Main@3040917 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3041235 on 2016/07/07 by Simon.Tovey
Compile fix for FName conflict on UProperty (hopefully).
Change 3041666 on 2016/07/07 by Daniel.Wright
Fixed TLM_SurfacePerPixelLighting in SM4, falls back to lighting volume
Change 3041731 on 2016/07/07 by Olaf.Piesche
Adding Niagara to dynamically loaded module list; should fix UE-32915
Change 3042181 on 2016/07/07 by Daniel.Wright
CIS fix
[CL 3045471 by Gil Gribb in Main branch]
2016-07-11 18:51:20 -04:00
# include "NiagaraEditorPrivatePCH.h"
2015-04-13 15:25:14 -04:00
# include "NiagaraScript.h"
# include "NiagaraConstants.h"
2014-03-14 14:13:41 -04:00
# include "NiagaraEditorModule.h"
2015-08-20 08:49:28 -04:00
# include "ComponentReregisterContext.h"
# include "NiagaraComponent.h"
# include "NiagaraSimulation.h"
# include "NiagaraEffect.h"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3045398)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3028958 on 2016/06/27 by Ben.Woodhouse
Fix for perf issue with GetSingleFinalDataConst
This was caused by the LPV integration/switch to blendables. Now we cache the flag for the directionalocclusion in the LPV class. This reduces calls to GetSingleFinalDataConst on the blendable data (potentially slow), and makes things a bit cleaner and consistent.
Tested in QAGame editor (with LPV enabled in ConsoleSettings.ini)
#jira UE-26179
Change 3029401 on 2016/06/27 by Rolando.Caloca
DR - More vk logging
Change 3029549 on 2016/06/27 by Uriel.Doyon
Refactored "r.OnlyStreamInTextures" into "r.Streaming.FullyLoadUsedTextures", making it fully load every used textures, as an alternative to disabling texture streaming.
New options "r.Streaming.UsePerTextureBias" that assign a bias between 0 and MipBias to each texture in order to fit in budget.
Fixed crash when disabling texture streaming.
Fixed issue when disabling texture streaming that would make current loaded texture low res.
New logic to prevent retrying to cancel a streaming request more than once.
Pending load request of one extra mip will not be cancelled anymore.
Changed UTexture2D from float to double. Also using FApp::GetCurrentTime() instead of FPlatformTime::Seconds().
#jira UE-32197
#jira UE-31102
Change 3029837 on 2016/06/27 by David.Hill
Fixed Shutter SM4 not working when using compute shader eye-adaptation
#jira UE-32443
The default eye adaptation value was missing.
Change 3030039 on 2016/06/27 by Uriel.Doyon
Fix for crash when landscape materials are used in the Texture Streaming Build.
#jira UE-32196
Change 3030081 on 2016/06/27 by Uriel.Doyon
Updated MaterialTexCoordScalesPixelShader to use PackedEyeIndex, preventing crash when building the map with stereo rendering enabled.
Change 3030401 on 2016/06/28 by Ben.Woodhouse
Perf Monitor: Fix for perf warning due to cvar FindConsoleVariable being called too frequently. Tested in QAGame editor (DX11)
#jira UE-31238
Change 3030607 on 2016/06/28 by Marc.Olano
Random Number generators: fixed bug in TEA, added integer and float Blum-Blum-Shub. BBS is way cheaper for similar quality, suggest it for future use.
Change 3030627 on 2016/06/28 by Ben.Woodhouse
Fix for warning. CVar naming scope clash (doesn't appear to happen in vs2015).
Change 3030809 on 2016/06/28 by Marc.Olano
Noise shader function rename & perf improvement.
Due to incorrect terminology in internet soruces, previous "Perlin" noise was not, in fact, Perlin noise. Now more accurately called "Value" noise. 6x perf improvement for value noise by changing random number function to BBS. Also updated instruction counts in UI tooltips.
Change 3030850 on 2016/06/28 by Marc.Olano
Rename & redirect noise material enums. At some point these got switched around and no longer accurately described the noise options the selected. Redirect, so all existing content will continue to work as-is. Updated UDN docs to match.
Change 3030981 on 2016/06/28 by Rolando.Caloca
DR - vk - More logging
Change 3031056 on 2016/06/28 by Marc.Olano
Introduce new pure-ALU gradient shader noise. Add noise samples to RenderTest map
Change 3031398 on 2016/06/28 by Benjamin.Hyder
updating TM-Shadermodels (correcting Mt Rushmore)
Change 3031441 on 2016/06/28 by Marc.Olano
Use only float version of BBS shader rand function for ES2
Change 3031463 on 2016/06/28 by John.Billon
Fixed F4 changing the viewmode in Fortnite editor. The detailed lighting viewmode (detaillighting) named in DefaultInput.ini differed from the one in BaseInput.ini(lit_detaillighting).
#Jira UE-32020
Change 3031512 on 2016/06/28 by Zabir.Hoque
Relax clear flags for DX12 RHIs.
Properly flush pending commands before residency is updated.
Change 3031517 on 2016/06/28 by Rolando.Caloca
DR - vk logging using r.Vulkan.DumpLayer
Change 3032359 on 2016/06/29 by Allan.Bentham
Fix mobile shadows crash.
Change 3032431 on 2016/06/29 by Gil.Gribb
Merging //UE4/Dev-Main@3032394 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3032757 on 2016/06/29 by Uriel.Doyon
Fixed global mip bias being applied twice following integration with main.
Change 3033121 on 2016/06/29 by Rolando.Caloca
DR - vk - Logging
Change 3033529 on 2016/06/29 by Daniel.Wright
Null world guard on UReflectionCaptureComponent::ReadbackFromGPU
Change 3033668 on 2016/06/29 by Uriel.Doyon
Grouped texture streaming settings to simplify logic.
New options "r.Streaming.UseAllMips" to ignores the different lod and cinematic bias
#jira UE-32118
Change 3034403 on 2016/06/30 by Rolando.Caloca
DR - Shorten dumped shader debug strings
Change 3034475 on 2016/06/30 by Rolando.Caloca
DR - Missing logging
Change 3034722 on 2016/06/30 by Uriel.Doyon
Improved StreamingAccuracy viewmodes with alpha test and translucent materials
#jira UE-32656
Change 3034797 on 2016/06/30 by Rolando.Caloca
DR - vk - 'fix' RHIClear but causes a CPU hang on AMD, so disabled again
Change 3034799 on 2016/06/30 by Rolando.Caloca
DR - vk - missed file
Change 3034905 on 2016/06/30 by Rolando.Caloca
DR - vk - Fix for render passes being reused with wrong dimensions
Change 3035503 on 2016/07/01 by Simon.Tovey
Async compute version of translucency lighting volume clear.
Change 3035577 on 2016/07/01 by Marc.Olano
Tiling noise. Adds tiling option for gradient, gradient texture, and value noise in the noise material node. Tiling is more expensive, but allows noise functions to be baked into a seamless repeating texture.
Change 3035587 on 2016/07/01 by Ben.Woodhouse
Fix for async SSAO bug (SSAO Async Compute results are used before the async job wait)
#jira UE-32709
Change 3035618 on 2016/07/01 by Olaf.Piesche
Asset fixes
Change 3035692 on 2016/07/01 by Rolando.Caloca
DR - vk - Deferred deletion queue
Change 3035808 on 2016/07/01 by Rolando.Caloca
DR - vk - Stat for deletion time, fixed some logging
Change 3036012 on 2016/07/01 by John.Billon
Alpha Coverage Preservation
-Textures have a Alpha Preservation Vec4 property which dictates about much of that channel to preserve down the mip chain during mip generation.
#Jira UE-31986
Change 3036041 on 2016/07/01 by Rolando.Caloca
DR - vk - Fix for 32bit
Change 3036433 on 2016/07/01 by Rolando.Caloca
DR - More vk logging
Change 3036935 on 2016/07/04 by Simon.Tovey
Removing Data Objects
Change 3036942 on 2016/07/04 by Ben.Woodhouse
Fix for decal rendering resource leak
The cause was that FD3D11BoundRenderTargets doesn't support setting RTs sparsely. So if one element is NULL, it won't release the ones after it.
The sparse RT layout happened as a result of a change back in October, which meant that GBuffers for decals could be set sparsely, dependent on whether the decal wrote to the normalbuffer
This change adds support for sparsely bound rendertargets in FD3D11BoundRenderTargets.
#jira UE-32602
Change 3037563 on 2016/07/05 by Chris.Bunner
HLOD self-shadowing in baked lighting fix.
Change 3037640 on 2016/07/05 by Marcus.Wassmer
Fix bug in USE_GPU_OVERWRITE_CHECKING
Change 3037927 on 2016/07/05 by Rolando.Caloca
DR - Fix touch pads not showing on Vulkan
#jira UE-32062
Change 3038085 on 2016/07/05 by Chris.Bunner
HLOD dynamic shadowing support.
#jira UE-22627
Change 3038209 on 2016/07/05 by Rolando.Caloca
DR - vk - Android compile fix
Change 3038644 on 2016/07/05 by Uriel.Doyon
Added LerpRange that allows to lerp between two rotators without taking the sortest path.
Change 3038820 on 2016/07/05 by Uriel.Doyon
Selecting streaming accuracy view modes will not automatically generate missing visualization data.
Change 3039332 on 2016/07/06 by John.Billon
-Made MaxGPUSkinBonesCvar a FAutoConsoleVariableRef and moved it to mesh utilitles from console manager to fix a thread initialization problem.
#Jira UE-31710
Change 3039454 on 2016/07/06 by Simon.Tovey
Moved all Niagara files from Engine and UnrealEd to remove dependancies and increase compile times.
Niagara is now 99.999% decoupled from engine and editor so development should be much streamlined.
Plus a few other edits to remove Curves/DataObjects that I missed in last CL.
Change 3039517 on 2016/07/06 by Gil.Gribb
Merging //UE4/Dev-Main@3039013 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3039587 on 2016/07/06 by Rolando.Caloca
DR - vk logging, submit counter
Change 3039603 on 2016/07/06 by Rolando.Caloca
DR - Allow more samplers on GL4
#jira UE-32628
#jira UE-32744
Change 3039661 on 2016/07/06 by Daniel.Wright
Fixed non-directional DFAO occlusion on specular 'r.AOSpecularOcclusionMode 0'
Skylight occlusion tint now applies to specular
Skylight occlusion tint on diffuse is now correctly affected by DiffuseColor
Change 3039960 on 2016/07/06 by Daniel.Wright
Forward renderer initial implementation
* Point and spot lights are culled to a frustum space grid, base pass loops over culled lights.
* Light culling uses a reverse linked list to avoid a per-cell limit, and the linked list is compacted to an array before the base pass.
* New cvars to control light culling: r.Forward.MaxCulledLightsPerCell, r.Forward.LightGridSizeZ, r.Forward.LightGridPixelSize
* A full Z Prepass is forced with forward shading. This allows deferred rendering before the base pass of shadow projection methods that only rely on depth.
* Dynamic shadows are packed based on the assigned stationary light ShadowMapChannel, since stationary lights are already restricted to 4 overlapping.
* GBuffer render targets are still allocated
* Fixed several issues in parallax corrected base pass reflections - not blending out box shape, discontinuity in reflection vector, not blending with stationary skylight properly
* Forward shading is now used for TLM_SurfacePerPixelLighting translucency in the deferred path
* Notable missing features: shadowing of translucency, support for various translucency lighting modes, multiple blended reflection captures
Change 3040050 on 2016/07/06 by Daniel.Wright
Added r.Shadow.WholeSceneShadowCacheMb, which defaults to 150, to limit how much memory can be spent caching whole scene shadowmaps
Change 3040160 on 2016/07/06 by Daniel.Wright
Fixed tile artifacts in indirect capsule shadows from doing the scaled sphere vs tile bounding sphere intersection in the wrong space
Change 3040163 on 2016/07/06 by Rolando.Caloca
DR - vk - More logging
Change 3040257 on 2016/07/06 by Daniel.Wright
Skylights aren't captured until their level is made visible- fixes the case where skylights capture too early
Change 3040316 on 2016/07/06 by Daniel.Wright
PerObject shadows from point / spot lights do the light source pull back based on subject box size, not subject radius, since the box is used to find a valid < 90 degree projection. Fix from licensee
Change 3040361 on 2016/07/06 by Daniel.Wright
Fixed TexCreate_UAV being used on translucency volume textures in SM4
Change 3040402 on 2016/07/06 by Rolando.Caloca
DR - vk - Make host mem accesses coherent
Change 3040486 on 2016/07/06 by Daniel.Wright
CIS fixes
Change 3041028 on 2016/07/07 by Gil.Gribb
Merging //UE4/Dev-Main@3040917 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3041235 on 2016/07/07 by Simon.Tovey
Compile fix for FName conflict on UProperty (hopefully).
Change 3041666 on 2016/07/07 by Daniel.Wright
Fixed TLM_SurfacePerPixelLighting in SM4, falls back to lighting volume
Change 3041731 on 2016/07/07 by Olaf.Piesche
Adding Niagara to dynamically loaded module list; should fix UE-32915
Change 3042181 on 2016/07/07 by Daniel.Wright
CIS fix
[CL 3045471 by Gil Gribb in Main branch]
2016-07-11 18:51:20 -04:00
# include "NiagaraNodeOutput.h"
# include "NiagaraNodeInput.h"
# include "NiagaraNodeWriteDataSet.h"
# include "NiagaraNodeReadDataSet.h"
# include "EdgraphSchema_Niagara.h"
2014-03-14 14:13:41 -04:00
//////////////////////////////////////////////////////////////////////////
// NiagaraGraph
2014-10-14 10:29:11 -04:00
UNiagaraGraph : : UNiagaraGraph ( const FObjectInitializer & ObjectInitializer )
: Super ( ObjectInitializer )
2014-03-14 14:13:41 -04:00
{
Schema = UEdGraphSchema_Niagara : : StaticClass ( ) ;
}
2015-05-15 07:50:13 -04:00
void UNiagaraGraph : : PostEditChangeProperty ( FPropertyChangedEvent & PropertyChangedEvent )
{
NotifyGraphChanged ( ) ;
}
2014-03-14 14:13:41 -04:00
class UNiagaraScriptSource * UNiagaraGraph : : GetSource ( ) const
{
return CastChecked < UNiagaraScriptSource > ( GetOuter ( ) ) ;
}
2015-01-14 15:48:20 -05:00
UNiagaraNodeOutput * UNiagaraGraph : : FindOutputNode ( ) const
{
for ( UEdGraphNode * Node : Nodes )
{
if ( UNiagaraNodeOutput * OutNode = Cast < UNiagaraNodeOutput > ( Node ) )
{
return OutNode ;
}
}
check ( 0 ) ;
return NULL ;
}
void UNiagaraGraph : : FindInputNodes ( TArray < class UNiagaraNodeInput * > & OutInputNodes ) const
{
for ( UEdGraphNode * Node : Nodes )
{
if ( UNiagaraNodeInput * InNode = Cast < UNiagaraNodeInput > ( Node ) )
{
OutInputNodes . Add ( InNode ) ;
}
}
}
2015-08-20 08:49:28 -04:00
void UNiagaraGraph : : FindReadDataSetNodes ( TArray < class UNiagaraNodeReadDataSet * > & OutReadNodes ) const
{
for ( UEdGraphNode * Node : Nodes )
{
if ( UNiagaraNodeReadDataSet * InNode = Cast < UNiagaraNodeReadDataSet > ( Node ) )
{
OutReadNodes . Add ( InNode ) ;
}
}
}
void UNiagaraGraph : : FindWriteDataSetNodes ( TArray < class UNiagaraNodeWriteDataSet * > & OutWriteNodes ) const
{
for ( UEdGraphNode * Node : Nodes )
{
if ( UNiagaraNodeWriteDataSet * InNode = Cast < UNiagaraNodeWriteDataSet > ( Node ) )
{
OutWriteNodes . Add ( InNode ) ;
}
}
}
2015-01-14 15:48:20 -05:00
int32 UNiagaraGraph : : GetAttributeIndex ( const FNiagaraVariableInfo & Attr ) const
{
const UNiagaraNodeOutput * OutNode = FindOutputNode ( ) ;
check ( OutNode ) ;
for ( int32 i = 0 ; i < OutNode - > Outputs . Num ( ) ; + + i )
{
if ( OutNode - > Outputs [ i ] = = Attr )
{
return i ;
}
}
return INDEX_NONE ;
}
void UNiagaraGraph : : GetAttributes ( TArray < FNiagaraVariableInfo > & OutAttributes ) const
{
const UNiagaraNodeOutput * OutNode = FindOutputNode ( ) ;
check ( OutNode ) ;
for ( const FNiagaraVariableInfo & Attr : OutNode - > Outputs )
{
check ( ! OutAttributes . Find ( Attr ) ) ;
OutAttributes . Add ( Attr ) ;
}
}
2014-03-14 14:13:41 -04:00
//////////////////////////////////////////////////////////////////////////
// UNiagraScriptSource
2014-10-14 10:29:11 -04:00
UNiagaraScriptSource : : UNiagaraScriptSource ( const FObjectInitializer & ObjectInitializer )
: Super ( ObjectInitializer )
2014-03-14 14:13:41 -04:00
{
}
void UNiagaraScriptSource : : PostLoad ( )
{
Super : : PostLoad ( ) ;
2015-01-14 15:48:20 -05:00
# if WITH_EDITOR
2014-03-14 14:13:41 -04:00
UNiagaraScript * ScriptOwner = Cast < UNiagaraScript > ( GetOuter ( ) ) ;
2015-01-14 15:48:20 -05:00
if ( ScriptOwner & & ScriptOwner - > ByteCode . Num ( ) = = 0 )
2014-03-14 14:13:41 -04:00
{
ScriptOwner - > ConditionalPostLoad ( ) ;
2014-11-14 13:13:42 -05:00
//FNiagaraEditorModule& NiagaraEditorModule = FModuleManager::Get().LoadModuleChecked<FNiagaraEditorModule>(TEXT("NiagaraEditor"));
2015-01-14 15:48:20 -05:00
//NiagaraEditorModule.CompileScript(ScriptOwner);
2014-11-14 13:13:42 -05:00
}
2015-04-13 15:25:14 -04:00
Compile ( ) ;
2015-01-14 15:48:20 -05:00
# endif
2014-11-14 13:13:42 -05:00
}
2015-08-20 08:49:28 -04:00
struct FNiagaraComponentReregisterContext : FComponentReregisterContext
{
FNiagaraEmitterScriptProperties * ScriptProps ;
UNiagaraEmitterProperties * EmitterProps ;
FNiagaraComponentReregisterContext ( UNiagaraComponent * Comp , FNiagaraEmitterScriptProperties * InScriptProps , UNiagaraEmitterProperties * InEmitterProps )
: FComponentReregisterContext ( Comp )
, ScriptProps ( InScriptProps )
, EmitterProps ( InEmitterProps )
{
}
~ FNiagaraComponentReregisterContext ( )
{
ScriptProps - > Init ( EmitterProps ) ;
}
} ;
class FNiagaraScriptCompileContext
{
public :
/** Initialization constructor. */
FNiagaraScriptCompileContext ( UNiagaraScript * Script )
{
// wait until resources are released
FlushRenderingCommands ( ) ;
// Reregister all components usimg Script.
for ( TObjectIterator < UNiagaraComponent > ComponentIt ; ComponentIt ; + + ComponentIt )
{
UNiagaraComponent * Comp = * ComponentIt ;
TSharedPtr < FNiagaraEffectInstance > Inst = Comp - > GetEffectInstance ( ) ;
if ( Inst . IsValid ( ) )
{
TArray < TSharedPtr < FNiagaraSimulation > > & Emitters = Inst - > GetEmitters ( ) ;
for ( TSharedPtr < FNiagaraSimulation > Sim : Emitters )
{
if ( Sim . IsValid ( ) )
{
if ( UNiagaraEmitterProperties * Props = Sim - > GetProperties ( ) . Get ( ) )
{
if ( Props - > UpdateScriptProps . Script = = Script )
{
new ( ComponentContexts ) FNiagaraComponentReregisterContext ( Comp , & Props - > UpdateScriptProps , Props ) ;
}
else if ( Props - > SpawnScriptProps . Script = = Script )
{
new ( ComponentContexts ) FNiagaraComponentReregisterContext ( Comp , & Props - > SpawnScriptProps , Props ) ;
}
}
}
}
}
}
}
private :
/** The recreate contexts for the individual components. */
TIndirectArray < FNiagaraComponentReregisterContext > ComponentContexts ;
} ;
2014-11-14 13:13:42 -05:00
void UNiagaraScriptSource : : Compile ( )
{
UNiagaraScript * ScriptOwner = Cast < UNiagaraScript > ( GetOuter ( ) ) ;
2015-08-20 08:49:28 -04:00
FNiagaraScriptCompileContext ScriptCompileContext ( ScriptOwner ) ;
2014-11-14 13:13:42 -05:00
FNiagaraEditorModule & NiagaraEditorModule = FModuleManager : : Get ( ) . LoadModuleChecked < FNiagaraEditorModule > ( TEXT ( " NiagaraEditor " ) ) ;
NiagaraEditorModule . CompileScript ( ScriptOwner ) ;
2015-06-18 12:16:43 -04:00
FNiagaraConstants & ExternalConsts = ScriptOwner - > ConstantData . GetExternalConstants ( ) ;
2014-11-17 11:11:38 -05:00
2015-06-17 10:12:41 -04:00
//Build the constant list.
//This is mainly just jumping through some hoops for the custom UI. Should be removed and have the UI just read directly from the constants stored in the UScript.
2015-04-09 11:27:52 -04:00
const UEdGraphSchema_Niagara * Schema = CastChecked < UEdGraphSchema_Niagara > ( NodeGraph - > GetSchema ( ) ) ;
ExposedVectorConstants . Empty ( ) ;
for ( int32 ConstIdx = 0 ; ConstIdx < ExternalConsts . GetNumVectorConstants ( ) ; ConstIdx + + )
2014-11-14 13:13:42 -05:00
{
2015-04-09 11:27:52 -04:00
FNiagaraVariableInfo Info ;
FVector4 Value ;
ExternalConsts . GetVectorConstant ( ConstIdx , Value , Info ) ;
if ( Schema - > IsSystemConstant ( Info ) )
2014-11-14 13:13:42 -05:00
{
2015-04-09 11:27:52 -04:00
continue ; //System constants are "external" but should not be exposed to the editor.
2014-11-14 13:13:42 -05:00
}
2015-04-09 11:27:52 -04:00
EditorExposedVectorConstant * Const = new EditorExposedVectorConstant ( ) ;
Const - > ConstName = Info . Name ;
Const - > Value = Value ;
ExposedVectorConstants . Add ( MakeShareable ( Const ) ) ;
}
2014-03-14 14:13:41 -04:00
}
2014-10-16 03:41:17 -04:00
void UNiagaraScriptSource : : GetEmitterAttributes ( TArray < FName > & VectorInputs , TArray < FName > & MatrixInputs )
2014-03-14 14:13:41 -04:00
{
2014-07-28 13:15:12 -04:00
for ( uint32 i = 0 ; i < NiagaraConstants : : NumBuiltinConstants ; i + + )
{
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3054480)
#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]
2016-07-18 17:17:08 -04:00
VectorInputs . Add ( NiagaraConstants : : GConstantNames [ i ] ) ;
2014-07-28 13:15:12 -04:00
}
2014-10-16 03:41:17 -04:00
MatrixInputs . Empty ( ) ;
MatrixInputs . Add ( FName ( TEXT ( " Emitter Transform " ) ) ) ;
2014-03-14 14:13:41 -04:00
}
2014-07-28 13:15:12 -04:00