2019-12-26 15:32:37 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2019-09-10 17:38:37 -04:00
// .
2016-03-16 21:16:51 -04:00
2022-09-15 13:03:31 -04:00
# include "RHIShaderFormatDefinitions.inl"
2023-08-01 11:03:24 -04:00
# include "ShaderCompilerCommon.h"
2023-08-03 13:40:32 -04:00
# include "ShaderCompilerDefinitions.h"
2023-08-01 11:03:24 -04:00
# include "ShaderParameterParser.h"
# include "ShaderPreprocessTypes.h"
# include "SpirvReflectCommon.h"
# include "VulkanCommon.h"
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 4072632)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3870267 by Arne.Schober
DR - SafeRelease SRVs that might be hold by the Vertexfactories (maybe due to indirect use in GlobalResources)
Note that the VFs are not owners of the data, e.g the underlying Buffers might be released before this and this reference counting should be uneccessary
Change 3872507 by Arne.Schober
Back out changelist 3870267
Change 3988916 by Marcin.Undak
Quail/Linux compilation fix #rb none #codereview arciel.rekman
Change 4042277 by Rolando.Caloca
DR - Clear UBs between PSOs on D3D to help track down not setting resources
Change 4042297 by Arne.Schober
DR - Fix case where LPV requires SSAO to run but no GBuffer is available in formward mode. In this case we force the behaviour to use the simple AO (as ASyncAO pass)
#jira UE-42135
Change 4042404 by Jian.Ru
Fix a race condition when RT is disabled and then re-enabled
#jira
Change 4042437 by Richard.Wallis
Mac Localization - Mac now uses FUICommand and NSLOCTEXT to build main menu items. Don't fetch menu items using name since that could change. Lookup using ID's.
Note:
New CB function binding system in *FStartupApplicationToMacMenuBinder*. Added to simplify the existing and new CB function binding.
Update:
Application menu now also gets an update on runtime langauge changed event. Other menu's get updated anyway as per runloop updates.
#jira UE-49526
Change 4042602 by Guillaume.Abadie
Adds support for alpha channel in DOF.
Change 4042603 by Guillaume.Abadie
Gates global sampler behind SUPPORTS_INDEPENDENT_SAMPLERS for nicer error messsage on platform that do not support them.
Change 4042671 by Guillaume.Abadie
Massages DOF's shader code for HLSLCC.
Change 4042772 by Mark.Satterthwaite
Expose the MTLComputePipelineState's label string.
Change 4043013 by Juan.Canada
Fixed bounds of skeletal meshes could be inverted (min > max) with negative scaling. That was breaking occlusion tests in some scenes, creating flicking issues.
#jira UE-49290
Change 4043171 by Rolando.Caloca
DR - Workaround crash on hlslcc
Change 4043182 by Uriel.Doyon
Fixed skylight issues when using pre-exposure.
Improved IndirectIrradiance gbuffer encoding when using pre-exposure.
Change 4043452 by Mark.Satterthwaite
Extensively refactor the MetalRHI GPU profiling code. There is now a "MetalProfiler Start/Stop/Frames=X" in-game command that will spit out JSON files similar to the platform-agnostic TracingProfiler, but this displays the command-buffer encoding and execution which actually makes sense with Metal where we can't arbitrarily insert requests for time-stamps and breaking command-buffers/encoders is expensive.
Change 4044732 by Richard.Wallis
Fix for macOs restoring to fullscreen results in render with large black border. Also tested that is fix doesn't seem to re-introduce UE-51270 (CL 3696161). There appears to be an edge case that can cause the toogleFullScreen: method to not correctly expand window frame to the full screen size - we end up with a frame size of the previous setting. Forcing the correct values doesn't fix the issue - the only consistant fix seems to be to re-introduce the - (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize delegate method.
#jira UE-57549
Change 4044741 by Guillaume.Abadie
Fixes a couple of regressions in DOF when using temporal upsampling.
Change 4044753 by Guillaume.Abadie
Fixes a bug in WaveBroadcastIntrinsics.ush
Change 4045010 by Guillaume.Abadie
Creates TM-DepthOfField in QAGame to test DOF.
Change 4045417 by Jian.Ru
Prevent recursive flush
#jira
Change 4045923 by Mark.Satterthwaite
Further insulate private plugin usage within MetalRHI.
Change 4046006 by Mark.Satterthwaite
Simplify dependency on the private module and hope it now builds properly.
Change 4046612 by Mark.Satterthwaite
Apple A9 introduced support for baseVertex & baseInstance, earlier GPUs don't support it at all. The code was incorrectly compiling shaders assuming they did at given Metal shader standard versions. Instead we always compile mobile shaders assuming they don't support base index & vertex and for dektop shaders we now need an A9 or better GPU for it to work.
#jira UE-55234
Change 4047504 by Mark.Satterthwaite
Supress warnings about the missing module when not available or enabled. Also make it work on all Metal platforms.
Change 4048765 by Uriel.Doyon
Fixed compilation issue from CL 4048308
Change 4048776 by Guillaume.Abadie
Fixes a static pixel projection regressions in TAA caused by alpha channel support in DOF.
Change 4049059 by Mark.Satterthwaite
Thread names in the MetalProfiler output and don't load the private module when selecting a device as it isn't useful anymore.
Change 4050290 by Mark.Satterthwaite
Sort out the timebase for all the different Metal clocks when profiling - everything is now in microseconds and seems to line up! Need to rework all the other timing code similarly - but not in this commit.
Change 4050822 by Mark.Satterthwaite
Partial custom counter support - still has bugs.
Change 4051210 by Guillaume.Abadie
Dumps PermutationID of shader when shader compile worker crashes.
Change 4051652 by Guillaume.Abadie
Optimises DOF's reduce with wave broadcast instrinsics.
Change 4051839 by Mark.Satterthwaite
Tiny fix to changing custom counters.
Change 4052553 by Guillaume.Abadie
Implements GATHER_INPUT_LAYOUT_RGB_SEPARATE_COC to save texture bandwidth in gather pass.
Change 4052611 by Guillaume.Abadie
Fixes a crashes in light shaft.
Change 4052916 by Mark.Satterthwaite
Extend the Mac & iOS Frame-Pacer API to proivde the target output time and the intended duration so that the MetalProfiler can record the display V-Blank window.
Change 4053111 by Rolando.Caloca
DR - hlslcc - RequiresNegateDDY()
Change 4053402 by Mark.Satterthwaite
Add instrumentation for buffer & texture allocation and shader & pipeline compilation to MetalProfiler. Everything that I personally care to track should now be in place but the implementation details are grim so there's still plenty of room for improvement.
Change 4053454 by Mark.Satterthwaite
More attempts to allow the builders to compile for Mac in such a fashion that the private module's perfectly innocuous headers don't cause an error.
Change 4053765 by Guillaume.Abadie
Fixes a failure in DOFGather's ShouldCompilePermutation() caused by R11G11B10 change.
Change 4053911 by Marcus.Wassmer
Copying //Tasks/UE4/Dev-Rendering-RectLight@4053906 to Dev-Rendering (//UE4/Dev-Rendering)
Change 4053915 by Marcus.Wassmer
Attempt to fix what looks like some unity build rearrangement issue.
Change 4053916 by Marcus.Wassmer
Fix PS4 shader compile issues. Point seems to be a reserved keyword in PSSL
Change 4054642 by Rolando.Caloca
DR - Fix SCW not showing correct callstack/exception info on crashes
Change 4054661 by Mark.Satterthwaite
Make thre MetalBackend convert depth texture sampls to float4 from float to match the expected return type and fix compiler errors.
#jira UE-58670
Change 4054780 by Guillaume.Abadie
Cuts number of shader permutation for DOF's gather pass from 138 to 41.
Change 4054950 by Rolando.Caloca
DR - vk - Fix negated ddy
Change 4055019 by Guillaume.Abadie
Cuts number of shader permutation for tonemapper from ~2k to 64.
Change 4055144 by Guillaume.Abadie
Adds an ensure to catch when there is too many permutations on a global shader.
Change 4055240 by Krzysztof.Narkowicz
Checkboard subsurface fix for resolutions non divisible by 2. Align up subsurface prepare buffer, so downsampling always pickups correct pixel from the full-res buffer.
#jira FORT-79981
Change 4055323 by Rolando.Caloca
DR - Fix GLSL-based platforms
Change 4055387 by Guillaume.Abadie
Adds a point mirror between foreground and background bokeh to be phisically accurate.
Change 4055403 by Rolando.Caloca
DR - Fix uninitialized var causing crash
Change 4055709 by Guillaume.Abadie
Fixes a crash in SunTemple.
Change 4055771 by Guillaume.Abadie
Fixes DOF's reduce pass being compiled for SM4.
#jira UE-58714
Change 4055876 by Rolando.Caloca
DR - hlslcc - Fix crash during loop analysis on empty if() blocks
Change 4056026 by Rolando.Caloca
DR - Enable volumetric fog on Vulkan
Change 4056272 by Guillaume.Abadie
Exposes new DOF settings in post process settings.
Change 4056460 by Brian.Karis
Fix uniform buffer assert.
Change 4057151 by Guillaume.Abadie
Fixes a bug in DOF's temporal stability gathering pass.
Change 4057220 by Guillaume.Abadie
Cherry-picks and reworks experimental AO decal from GDC 2017's The Human Race demo.
AO decal are on purpose not supported with ASync AO, because the proper way location to do that would be right before whenever a pass use it, but is currently challenging to track down considering the screen space AO buffer is used a by a lot of different passes through the scene texture uniform buffer.
#jira UE-53997
Change 4057587 by Rolando.Caloca
DR - Enable Diaphgram DOF on Vulkan
Change 4058022 by Guillaume.Abadie
Exposes new DOF settings to UCineCameraComponent
Change 4058136 by Guillaume.Abadie
Replaces Circle DOF with Diaphragm DOF on supported platforms by default, with renderer settings to fallback.
Change 4058338 by Jostin.Bilyeu
Checking in new map for verifying Mobile rendering features in conjunction with TAAU
Change 4058352 by Matt.Collins
Wrapped NSString for lambda capture.
Change 4058500 by Rolando.Caloca
DR - Fix bad normals & tangents on GL mobile
#jira UE-57769
Change 4058723 by Rolando.Caloca
DR - vk - Split device pipeline cache off generic cache file
Change 4058782 by Mark.Satterthwaite
Rebuild Mac hlslcc for 4055876
Change 4058791 by Mark.Satterthwaite
Force MetalBackend to pick up new hlslcc.
Change 4058840 by Guillaume.Abadie
Fixes a bug in DOF's scalability setting groups
Change 4058928 by Daniel.Wright
Fixed dangling FSceneViewStateReference references getting created when scene capture reallocates its ViewStates array
Change 4059141 by Marcus.Wassmer
PR #3799: Fix for leak in BatchedLines (Contributed by DSDambuster)
Change 4059227 by Brian.Karis
Fix for simple forward
Change 4059269 by Marcus.Wassmer
Update test screenshots to account for minroughness changes from devrectlight
Change 4059478 by Mark.Satterthwaite
It looks like FMetalCompiledShaderCache was misusing FRWScopeLock in ways that I can't believe even compiled - it looks like it ended up creating and destroying the scope-lock as a temporary rather than treating it as a block-local variable.
#jira UE-58773
Change 4059870 by Guillaume.Abadie
Works arround an HLSLCC bug in DOF's recombine pass that was using a AtomicMax(asfloat(MyFloat)).
#jira UE-58850
Change 4060324 by Rolando.Caloca
DR - Very minor render pass
Change 4060328 by Rolando.Caloca
DR - vk - Fix crash when running with r.Vulkan.DelayAcquireBackBuffer=0
Change 4060461 by Jostin.Bilyeu
Updated test map for use during Mobile Rendering based testing. Map name TM-Mobile_TAAU
Change 4060698 by Marcus.Wassmer
Merging xbox compile fix
Change 4060930 by Marcus.Wassmer
Fix android compile
Change 4060971 by Mark.Satterthwaite
Some missing #defines to guard functions that require an external plugin.
#jira UE-58910
Change 4061104 by Guillaume.Abadie
Whitelists mobile tonemapper's high number of permutation in mean time it gets fixed by UE-58014.
#jira UE-58900
Change 4061364 by Jostin.Bilyeu
updated Test map TM-TAAU_Mobile to added lighting importance volume, reflection spheres etc.
Change 4061743 by Mark.Satterthwaite
Fix another build error for iOS.
#jira UE-58827
Change 4061753 by Arne.Schober
DR - Higher precision (16bit per channel) for RecomputeTangent and Skincache
#jira UE-58525
Change 4062236 by Mark.Satterthwaite
AppleTV doesn't appear to support the set*Bytes APIs in Metal.
#jira UE-58580
Change 4062320 by Guillaume.Abadie
Enables bokeh simulation on scattered bokeh on Epic post process settings.
Change 4062402 by Guillaume.Abadie
Phiscally animates the rotation of the bokeh as aperture changes.
Change 4062587 by Mark.Satterthwaite
Fix another Ocean compile error.
#jira N/A
Change 4062811 by Marcus.Wassmer
Only do newton iterations for area lights
Fixes a host of AMD-only bugs
Change 4063174 by Marcus.Wassmer
Workaround shipping build compile error for all clang platforms.
Change 4063760 by Guillaume.Abadie
Changes the default number of diaphragm blades to 7.
Change 4063992 by Marcus.Wassmer
Fix DX12 crash when depthboundstest not available.
Change 4064233 by Rolando.Caloca
DR - Proper fix for GL changes related to tangents
#jira UE-58948
Change 4064323 by Uriel.Doyon
Increase the max number of uavs to 16
#jira 58898
Change 4064428 by Guillaume.Abadie
Fixes a crashes on XB1 when doing async SSAO.
Change 4064525 by Uriel.Doyon
Better logic for depth bound support in d3d12.
#jira 58956
Change 4064694 by Jian.Ru
Fix a bug in FMaterialBakingModule::ReadTextureOutput caused by uninitialized variables
Change 4064873 by Guillaume.Abadie
Fixes wrong resource transitions in DOF's reduce passes.
Change 4064956 by Guillaume.Abadie
Disables R11G11B10 optimisations on platforms that can't supports more than 8 UAVs.
Change 4065215 by Arne.Schober
DR - Make Clang Happy the standart says: "A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied."
In English this means that when the reference is taken (or it is passed by reference) the pointers could be compared and therefore needed to be allocated.
Change 4065312 by Guillaume.Abadie
Fixes D3D12RHI doing a draw indexed indirect behind a DrawPrimitiveIndirect()
Change 4070361 by Guillaume.Abadie
Fixes resource transitions for PS4. PS4 RHI's logic to check for resource transition is still buggy.
Change 4070778 by Marcus.Wassmer
Fix bad merge
Change 4071337 by Rolando.Caloca
DR - vk - Do not spam log
Change 4048308 by Uriel.Doyon
Merging //UE4/Partner-MGPU to Dev-Rendering (//UE4/Dev-Rendering) at CL 4047519 :
- Fixed d3derror when resizing the window in multi-gpu.
- Fixed d3d12 checks when exiting in multi-gpu.
- Command context containter can now only be used with a single gpu mask. This cleans up passing the mask everywhere.
- RenderPass now reuse the current GPUMask instead of assuming the view mask. Decoupling furter more the binding.
- Removed of IRHIComputeContext::GetContextForGPUMask().
- Removed GPUMask from QueueRenderThreadCommandListSubmit and QueueCommandListSubmit since it is now a member of FRHICommandListBase.
- FRHICommandListBase::CopyContext() can not change anymore the GPUMask and the target list must have the same GPUMask as the reference one.
- Command lists now have a GPU mask set at creation time.
- Support for immediate command list GPU mask.
- Using the new SCOPED_GPU_MASK where we previously used a new command list on the stack.
- Refactored most NodeMask naming to GPUMask, and also "const FRHIGPUMask&" to "FRHIGPUMask".
- Commandline option "-mgpu" is now replaced by "-MaxGPUCount=" and "-PresentGPU="
- Multi-gpu modes are now controlled through -mgpumode={ gpu0, gpu1, broadcast, avr, afr }
- Defines WITH_SLI and WITH_MGPU now control the path to multi-gpu support in the engine.
- Variable GNumActiveGPUsForRendering is now split in GNumAlternateFrameRenderingGroups and GNumExplicitGPUsForRendering.
[CL 4072858 by Marcus Wassmer in Main branch]
2018-05-15 11:11:48 -04:00
2023-12-06 15:35:23 -05:00
# include "VulkanThirdParty.h"
2016-03-16 21:16:51 -04:00
# include "VulkanBackend.h"
# include "VulkanShaderResources.h"
2024-07-16 13:40:10 -04:00
# include "SpirVShaderCompiler.inl"
2022-09-15 13:03:31 -04:00
inline bool IsVulkanShaderFormat ( FName ShaderFormat )
2021-11-18 14:37:34 -05:00
{
2022-09-15 13:03:31 -04:00
return ShaderFormat = = NAME_VULKAN_ES3_1_ANDROID
| | ShaderFormat = = NAME_VULKAN_ES3_1
| | ShaderFormat = = NAME_VULKAN_SM5
2023-04-14 14:26:06 -04:00
| | ShaderFormat = = NAME_VULKAN_SM6
2022-09-15 13:03:31 -04:00
| | ShaderFormat = = NAME_VULKAN_SM5_ANDROID ;
2021-11-18 14:37:34 -05:00
}
2022-09-15 13:03:31 -04:00
inline bool IsAndroidShaderFormat ( FName ShaderFormat )
2021-11-18 14:37:34 -05:00
{
2022-09-15 13:03:31 -04:00
return ShaderFormat = = NAME_VULKAN_ES3_1_ANDROID
| | ShaderFormat = = NAME_VULKAN_SM5_ANDROID ;
2021-11-18 14:37:34 -05:00
}
2023-08-01 11:03:24 -04:00
enum class EVulkanShaderVersion
{
ES3_1 ,
ES3_1_ANDROID ,
SM5 ,
SM5_ANDROID ,
SM6 ,
Invalid ,
} ;
2016-03-16 21:16:51 -04:00
DEFINE_LOG_CATEGORY_STATIC ( LogVulkanShaderCompiler , Log , All ) ;
2024-07-16 13:40:10 -04:00
class FVulkanShaderCompilerInternalState : public FSpirvShaderCompilerInternalState
2016-03-16 21:16:51 -04:00
{
2024-07-16 13:40:10 -04:00
EVulkanShaderVersion FormatToVersion ( FName Format )
2016-03-16 21:16:51 -04:00
{
2024-07-16 13:40:10 -04:00
if ( Format = = NAME_VULKAN_ES3_1 )
2016-03-16 21:16:51 -04:00
{
2024-07-16 13:40:10 -04:00
return EVulkanShaderVersion : : ES3_1 ;
2016-03-16 21:16:51 -04:00
}
2024-07-16 13:40:10 -04:00
else if ( Format = = NAME_VULKAN_ES3_1_ANDROID )
2020-09-24 00:43:27 -04:00
{
2024-07-16 13:40:10 -04:00
return EVulkanShaderVersion : : ES3_1_ANDROID ;
}
else if ( Format = = NAME_VULKAN_SM5_ANDROID )
{
return EVulkanShaderVersion : : SM5_ANDROID ;
}
else if ( Format = = NAME_VULKAN_SM5 )
{
return EVulkanShaderVersion : : SM5 ;
}
else if ( Format = = NAME_VULKAN_SM6 )
{
return EVulkanShaderVersion : : SM6 ;
2020-09-24 00:43:27 -04:00
}
else
{
2024-07-16 13:40:10 -04:00
FString FormatStr = Format . ToString ( ) ;
checkf ( 0 , TEXT ( " Invalid shader format passed to Vulkan shader compiler: %s " ) , * FormatStr ) ;
return EVulkanShaderVersion : : Invalid ;
2020-09-24 00:43:27 -04:00
}
}
2016-03-16 21:16:51 -04:00
2024-07-16 13:40:10 -04:00
public :
2023-10-26 23:07:19 -04:00
FVulkanShaderCompilerInternalState ( const FShaderCompilerInput & InInput , const FShaderParameterParser * InParameterParser )
2024-07-16 13:40:10 -04:00
: FSpirvShaderCompilerInternalState ( InInput , InParameterParser )
2023-08-04 23:59:50 -04:00
{
2024-07-16 13:40:10 -04:00
Version = FormatToVersion ( Input . ShaderFormat ) ;
if ( Version = = EVulkanShaderVersion : : SM6 )
2023-08-18 13:12:21 -04:00
{
2024-07-16 13:40:10 -04:00
MinimumTargetEnvironment = CrossCompiler : : FShaderConductorOptions : : ETargetEnvironment : : Vulkan_1_3 ;
2023-08-18 13:12:21 -04:00
}
2024-07-16 13:40:10 -04:00
else if ( Input . IsRayTracingShader ( ) | | Input . Environment . CompilerFlags . Contains ( CFLAG_InlineRayTracing ) )
2023-08-18 13:12:21 -04:00
{
2024-07-16 13:40:10 -04:00
MinimumTargetEnvironment = CrossCompiler : : FShaderConductorOptions : : ETargetEnvironment : : Vulkan_1_2 ;
2023-08-18 13:12:21 -04:00
}
else
{
2024-07-16 13:40:10 -04:00
MinimumTargetEnvironment = CrossCompiler : : FShaderConductorOptions : : ETargetEnvironment : : Vulkan_1_1 ;
2023-08-18 13:12:21 -04:00
}
2024-07-16 13:40:10 -04:00
bIsAndroid = IsAndroidShaderFormat ( Input . ShaderFormat ) ;
bSupportsOfflineCompiler =
Input . ShaderFormat = = NAME_VULKAN_ES3_1_ANDROID | |
Input . ShaderFormat = = NAME_VULKAN_ES3_1 | |
Input . ShaderFormat = = NAME_VULKAN_SM5_ANDROID ; ;
2023-08-18 13:12:21 -04:00
}
2024-07-16 13:40:10 -04:00
bool IsSM6 ( ) const override final
2023-08-04 23:59:50 -04:00
{
return ( Version = = EVulkanShaderVersion : : SM6 ) ;
}
2024-07-16 13:40:10 -04:00
bool IsSM5 ( ) const override final
2023-08-04 23:59:50 -04:00
{
return ( Version = = EVulkanShaderVersion : : SM5 ) | | ( Version = = EVulkanShaderVersion : : SM5_ANDROID ) ;
}
2024-07-16 13:40:10 -04:00
bool IsMobileES31 ( ) const override final
2023-08-04 23:59:50 -04:00
{
return ( Version = = EVulkanShaderVersion : : ES3_1 | | Version = = EVulkanShaderVersion : : ES3_1_ANDROID ) ;
}
2024-07-16 13:40:10 -04:00
CrossCompiler : : FShaderConductorOptions : : ETargetEnvironment GetMinimumTargetEnvironment ( ) const override final
2023-08-04 23:59:50 -04:00
{
2024-07-16 13:40:10 -04:00
return MinimumTargetEnvironment ;
2023-08-04 23:59:50 -04:00
}
2024-07-16 13:40:10 -04:00
bool IsAndroid ( ) const override final
2023-08-18 13:12:21 -04:00
{
2024-07-16 13:40:10 -04:00
return bIsAndroid ;
2023-08-18 13:12:21 -04:00
}
2024-07-16 13:40:10 -04:00
bool SupportsOfflineCompiler ( ) const override final
2023-08-18 13:12:21 -04:00
{
2024-07-16 13:40:10 -04:00
return bSupportsOfflineCompiler ;
2023-08-18 13:12:21 -04:00
}
2024-07-16 13:40:10 -04:00
private :
EVulkanShaderVersion Version ;
CrossCompiler : : FShaderConductorOptions : : ETargetEnvironment MinimumTargetEnvironment ;
bool bIsAndroid = false ;
bool bSupportsOfflineCompiler = false ; ;
2023-08-04 23:59:50 -04:00
} ;
2024-05-15 18:38:27 -04:00
2023-11-30 15:56:34 -05:00
void ModifyVulkanCompilerInput ( FShaderCompilerInput & Input )
2023-08-01 11:03:24 -04:00
{
2023-11-30 15:56:34 -05:00
FVulkanShaderCompilerInternalState InternalState ( Input , nullptr ) ;
2024-07-16 13:40:10 -04:00
SpirvShaderCompiler : : ModifyCompilerInput ( InternalState , Input ) ;
2023-08-01 11:03:24 -04:00
}
2022-09-21 17:34:15 -04:00
2024-06-25 13:22:29 -04:00
// Helper function to know how much space to set aside in the shader record for a global
static uint32 GetSizeForType ( FStringView TypeName , FStringView ArraySize )
{
static TMap < FStringView , uint32 > SizeForTypeMap ;
if ( SizeForTypeMap . Num ( ) = = 0 )
{
SizeForTypeMap . Add ( FStringView ( TEXT ( " uint " ) ) , 4 ) ;
SizeForTypeMap . Add ( FStringView ( TEXT ( " uint2 " ) ) , 8 ) ;
2024-10-01 19:35:49 -04:00
SizeForTypeMap . Add ( FStringView ( TEXT ( " uint3 " ) ) , 12 ) ;
2024-06-25 13:22:29 -04:00
SizeForTypeMap . Add ( FStringView ( TEXT ( " uint4 " ) ) , 16 ) ;
SizeForTypeMap . Add ( FStringView ( TEXT ( " float " ) ) , 4 ) ;
SizeForTypeMap . Add ( FStringView ( TEXT ( " float2 " ) ) , 8 ) ;
2024-10-01 19:35:49 -04:00
SizeForTypeMap . Add ( FStringView ( TEXT ( " float3 " ) ) , 12 ) ;
2024-06-25 13:22:29 -04:00
SizeForTypeMap . Add ( FStringView ( TEXT ( " float4 " ) ) , 16 ) ;
}
checkf ( ArraySize . Len ( ) = = 0 , TEXT ( " Need to add array support! " ) ) ; // :todo-jn: Add array parsing
const uint32 * TypeSize = SizeForTypeMap . Find ( TypeName ) ;
checkf ( TypeSize , TEXT ( " Missing type size for %.*s " ) , TypeName . Len ( ) , TypeName . GetData ( ) ) ;
return * TypeSize ;
}
// :todo-jn: TEMPORARY EXPERIMENT - will eventually move into preprocessing step
static uint32 ConvertGlobalsToShaderRecord ( const FShaderParameterParser & ShaderParameterParser , const TMap < FStringView , FStringView > & ReplacedGlobals , FString & PreprocessedShaderSource , FShaderCompilerOutput & Output )
{
uint32 ShaderRecordGlobalsSize = 0 ;
uint32 ShaderRecordParamCount = 0 ;
FString ShaderRecordGlobalsString ;
for ( const auto & ParamDecl : ReplacedGlobals )
{
ShaderRecordGlobalsString + = ParamDecl . Value ;
const FString ParamName ( ParamDecl . Key ) ;
const FShaderParameterParser : : FParsedShaderParameter & Info = ShaderParameterParser . FindParameterInfos ( ParamName ) ;
const uint32 ParamSize = GetSizeForType ( Info . ParsedType , Info . ParsedArraySize ) ;
HandleReflectedGlobalConstantBufferMember (
ParamName ,
ShaderRecordParamCount + + ,
ShaderRecordGlobalsSize ,
ParamSize ,
Output
) ;
ShaderRecordGlobalsSize + = ParamSize ;
}
if ( ShaderRecordGlobalsString . Len ( ) )
{
const int32 ReplacementCount = PreprocessedShaderSource . ReplaceInline ( TEXT ( " uint VulkanShaderRecordDummyGlobals; " ) , * ShaderRecordGlobalsString , ESearchCase : : CaseSensitive ) ;
checkf ( ReplacementCount = = 1 , TEXT ( " VulkanShaderRecordDummyGlobals was replaced %d times! " ) , ReplacementCount ) ;
}
return ShaderRecordGlobalsSize ;
}
2024-03-20 14:41:02 -04:00
struct FVulkanShaderParameterParserPlatformConfiguration : public FShaderParameterParser : : FPlatformConfiguration
2023-11-07 16:26:20 -05:00
{
2024-06-25 13:22:29 -04:00
FVulkanShaderParameterParserPlatformConfiguration ( const FShaderCompilerInput & Input , TMap < FStringView , FStringView > & InReplacedGlobals )
2023-11-07 16:26:20 -05:00
: FShaderParameterParser : : FPlatformConfiguration ( )
2024-04-11 13:24:57 -04:00
, bIsRayTracingShader ( Input . IsRayTracingShader ( ) )
, HitGroupSystemIndexBufferName ( FShaderParameterParser : : kBindlessSRVPrefix + FString ( TEXT ( " HitGroupSystemIndexBuffer " ) ) )
, HitGroupSystemVertexBufferName ( FShaderParameterParser : : kBindlessSRVPrefix + FString ( TEXT ( " HitGroupSystemVertexBuffer " ) ) )
2024-06-25 13:22:29 -04:00
, ReplacedGlobals ( InReplacedGlobals )
2023-11-07 16:26:20 -05:00
{
EnumAddFlags ( Flags , EShaderParameterParserConfigurationFlags : : SupportsBindless | EShaderParameterParserConfigurationFlags : : BindlessUsesArrays ) ;
// Create a _RootShaderParameters and bind it in slot 0 like any other uniform buffer
if ( Input . Target . GetFrequency ( ) = = SF_RayGen & & Input . RootParametersStructure ! = nullptr )
{
ConstantBufferType = TEXTVIEW ( " cbuffer " ) ;
EnumAddFlags ( Flags , EShaderParameterParserConfigurationFlags : : UseStableConstantBuffer ) ;
}
2024-06-25 13:22:29 -04:00
// Place loose data params in the shader record for shaders with bindless UBs
if ( bIsRayTracingShader & & ( Input . Target . GetFrequency ( ) ! = SF_RayGen ) )
{
EnumAddFlags ( Flags , EShaderParameterParserConfigurationFlags : : ReplaceGlobals ) ;
}
2023-11-07 16:26:20 -05:00
}
2024-03-20 14:41:02 -04:00
virtual FString GenerateBindlessAccess ( EBindlessConversionType BindlessType , FStringView FullTypeString , FStringView ArrayNameOverride , FStringView IndexString ) const final
2023-11-07 16:26:20 -05:00
{
2024-10-16 05:42:42 -04:00
if ( bIsRayTracingShader )
2024-04-11 13:24:57 -04:00
{
2024-10-16 05:42:42 -04:00
if ( BindlessType = = EBindlessConversionType : : SRV )
2024-04-11 13:24:57 -04:00
{
2024-10-16 05:42:42 -04:00
// Patch the HitGroupSystemIndexBuffer/HitGroupSystemVertexBuffer indices to use the ones contained in the shader record
if ( IndexString = = HitGroupSystemIndexBufferName )
{
IndexString = TEXTVIEW ( " VulkanHitGroupSystemParameters.BindlessHitGroupSystemIndexBuffer " ) ;
}
else if ( IndexString = = HitGroupSystemVertexBufferName )
{
IndexString = TEXTVIEW ( " VulkanHitGroupSystemParameters.BindlessHitGroupSystemVertexBuffer " ) ;
}
2024-04-11 13:24:57 -04:00
}
2024-10-16 05:42:42 -04:00
return FString : : Printf ( TEXT ( " %.*s[NonUniformResourceIndex(%.*s)] " ) ,
ArrayNameOverride . Len ( ) , ArrayNameOverride . GetData ( ) ,
IndexString . Len ( ) , IndexString . GetData ( ) ) ;
}
else
{
return FString : : Printf ( TEXT ( " %.*s[%.*s] " ) ,
ArrayNameOverride . Len ( ) , ArrayNameOverride . GetData ( ) ,
IndexString . Len ( ) , IndexString . GetData ( ) ) ;
}
2023-11-07 16:26:20 -05:00
}
2024-04-11 13:24:57 -04:00
2024-06-25 13:22:29 -04:00
// Fill the global with the value stored in the shader record
virtual FString ReplaceGlobal ( FStringView FullDeclString , FStringView ParamName ) const final
{
ReplacedGlobals . Add ( ParamName , FullDeclString ) ;
FString NewDecl ( FullDeclString ) ;
NewDecl = TEXT ( " static " ) + NewDecl ;
NewDecl . InsertAt ( NewDecl . Find ( TEXT ( " ; " ) ) , FString : : Printf ( TEXT ( " = VulkanHitGroupSystemParameters.Globals.%.*s " ) , ParamName . Len ( ) , ParamName . GetData ( ) ) ) ;
return NewDecl ;
}
2024-04-11 13:24:57 -04:00
const bool bIsRayTracingShader ;
const FString HitGroupSystemIndexBufferName ;
const FString HitGroupSystemVertexBufferName ;
2024-06-25 13:22:29 -04:00
TMap < FStringView , FStringView > & ReplacedGlobals ;
2023-11-07 16:26:20 -05:00
} ;
2023-12-15 15:28:27 -05:00
void CompileVulkanShader ( const FShaderCompilerInput & Input , const FShaderPreprocessOutput & InPreprocessOutput , FShaderCompilerOutput & Output , const class FString & WorkingDirectory )
2023-08-01 11:03:24 -04:00
{
check ( IsVulkanShaderFormat ( Input . ShaderFormat ) ) ;
2023-10-11 03:20:39 -04:00
FString EntryPointName = Input . EntryPointName ;
2023-12-15 15:28:27 -05:00
FString PreprocessedSource ( InPreprocessOutput . GetSourceViewWide ( ) ) ;
2023-10-11 03:20:39 -04:00
2024-06-25 13:22:29 -04:00
TMap < FStringView , FStringView > ReplacedGlobals ; // Note: these FStringView point to memory in FShaderParameterParser
FVulkanShaderParameterParserPlatformConfiguration PlatformConfiguration ( Input , ReplacedGlobals ) ;
2023-11-07 16:26:20 -05:00
FShaderParameterParser ShaderParameterParser ( PlatformConfiguration ) ;
if ( ! ShaderParameterParser . ParseAndModify ( Input , Output . Errors , PreprocessedSource ) )
2023-10-11 03:20:39 -04:00
{
// The FShaderParameterParser will add any relevant errors.
return ;
}
2023-10-26 23:07:19 -04:00
FVulkanShaderCompilerInternalState InternalState ( Input , & ShaderParameterParser ) ;
2023-08-01 11:03:24 -04:00
2023-08-19 19:17:32 -04:00
if ( InternalState . bUseBindlessUniformBuffer )
{
2024-06-25 13:22:29 -04:00
InternalState . ShaderRecordGlobalsSize = ConvertGlobalsToShaderRecord ( ShaderParameterParser , ReplacedGlobals , PreprocessedSource , Output ) ;
2024-07-16 16:38:00 -04:00
InternalState . AllBindlessUBs = SpirvShaderCompiler : : ConvertUBToBindless ( PreprocessedSource ) ;
2023-10-11 03:20:39 -04:00
}
2024-06-25 13:22:29 -04:00
if ( ShaderParameterParser . DidModifyShader ( ) | | InternalState . AllBindlessUBs . Num ( ) | | InternalState . ShaderRecordGlobalsSize )
2023-10-11 03:20:39 -04:00
{
Output . ModifiedShaderSource = PreprocessedSource ;
2023-08-19 19:17:32 -04:00
}
2019-03-07 09:13:39 -05:00
bool bSuccess = false ;
2019-03-13 07:53:15 -04:00
2024-01-16 09:15:51 -05:00
# if SHADER_SOURCE_ANSI
// Convert to ANSI prior to calling into ShaderConductor. This copy would have been incurred
// by SC itself anyways, but would (will?) also be unnecessary if (when) shader parameter parser
// is modified to operate on ANSI strings.
const FShaderSource : : FStringType PreprocessedSourceToCompile ( PreprocessedSource ) ;
# else
const FShaderSource : : FStringType & PreprocessedSourceToCompile = PreprocessedSource ;
# endif
2020-09-24 00:43:27 -04:00
# if PLATFORM_MAC || PLATFORM_WINDOWS || PLATFORM_LINUX
2023-08-19 19:17:32 -04:00
// HitGroup shaders might have multiple entrypoints that we combine into a single blob
if ( InternalState . HasMultipleEntryPoints ( ) )
{
2024-07-16 16:38:00 -04:00
bSuccess = SpirvShaderCompiler : : CompileShaderGroup ( InternalState , PreprocessedSourceToCompile , Output ) ;
2023-08-19 19:17:32 -04:00
}
else
{
// Compile regular shader via ShaderConductor (DXC)
2024-07-16 13:40:10 -04:00
SpirvShaderCompilerSerializedOutput SerializedOutput ;
bSuccess = SpirvShaderCompiler : : CompileWithShaderConductor ( InternalState , PreprocessedSourceToCompile , SerializedOutput , Output ) ;
2023-08-19 19:17:32 -04:00
2023-08-28 09:44:39 -04:00
if ( InternalState . bUseBindlessUniformBuffer )
{
2024-07-16 16:38:00 -04:00
SpirvShaderCompiler : : UpdateBindlessUBs ( InternalState , SerializedOutput , Output ) ;
2023-08-28 09:44:39 -04:00
}
2023-08-19 19:17:32 -04:00
// Write out the header and shader source code (except for the extra shaders in hit groups)
2023-11-17 19:47:08 -05:00
checkf ( ! ( bSuccess & & SerializedOutput . Spirv . Data . Num ( ) = = 0 ) , TEXT ( " shader compilation was reported as successful but SPIR-V module is empty " ) ) ;
2023-08-19 19:17:32 -04:00
FMemoryWriter Ar ( Output . ShaderCode . GetWriteAccess ( ) , true ) ;
Ar < < SerializedOutput . Header ;
Ar < < SerializedOutput . ShaderResourceTable ;
uint32 SpirvCodeSizeBytes = SerializedOutput . Spirv . GetByteSize ( ) ;
Ar < < SpirvCodeSizeBytes ;
2023-11-17 19:47:08 -05:00
if ( SerializedOutput . Spirv . Data . Num ( ) > 0 )
{
Ar . Serialize ( ( uint8 * ) SerializedOutput . Spirv . Data . GetData ( ) , SpirvCodeSizeBytes ) ;
}
2024-07-30 16:08:32 -04:00
SpirvShaderCompiler : : FillShaderResourceUsageFlags ( InternalState , SerializedOutput ) ;
Output . ShaderCode . AddOptionalData ( SerializedOutput . PackedResourceCounts ) ;
2023-08-19 19:17:32 -04:00
}
2020-09-24 00:43:27 -04:00
# endif // PLATFORM_MAC || PLATFORM_WINDOWS || PLATFORM_LINUX
2020-02-12 13:27:19 -05:00
2024-05-15 18:38:27 -04:00
if ( InternalState . bUseBindlessUniformBuffer )
{
// HACK: Because of heavy code alterations with bindless ray tracing shaders, line numbers will be all over the place. Remove the tag that leads to remapping...
for ( FShaderCompilerError & ErrorMsg : Output . Errors )
{
ErrorMsg . StrippedErrorMessage . ReplaceInline ( TEXT ( " __UE_FILENAME_SENTINEL " ) , * Input . GenerateShaderName ( ) ) ;
}
}
2023-08-16 15:44:45 -04:00
if ( Input . Environment . CompilerFlags . Contains ( CFLAG_ExtraShaderData ) )
{
Output . ShaderCode . AddOptionalData ( FShaderCodeName : : Key , TCHAR_TO_UTF8 ( * Input . GenerateShaderName ( ) ) ) ;
}
2023-08-25 22:19:10 -04:00
Output . SerializeShaderCodeValidation ( ) ;
2023-10-11 03:20:39 -04:00
ShaderParameterParser . ValidateShaderParameterTypes ( Input , InternalState . IsMobileES31 ( ) , Output ) ;
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3607928)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3441680 by Uriel.Doyon
Added units to point light intensity, to allow the user to specify the value in candelas or lumens.
New point light actors now configure the intensity in candelas by default.
Replaced viewport exposure settings by an EV100 slider.
Hidding the tone mapper in the show flag now still applies the exposure.
Added a new AutoExposure method called EV100 which allows to specify :
- MinEV100, MaxEV100
- Calibration Constnat
- Exposure Compensation
#jira UE-42783
Change 3454934 by Chris.Bunner
Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability.
Change 3512118 by Marc.Olano
Fix rare Sobol shader data problem. Mismatch with CPU code after a large number of points
Resubmit of portion of //UE4/Dev-Rendering@3509854 that was rolled back to avoid massive shader recompiles during integration testing
Change 3512129 by Benjamin.Hyder
Fixing up content in TM-SobolNoise
Change 3512151 by Rolando.Caloca
DR - Fixed some layouts that were general
- Added some extra dump information
Change 3512160 by Benjamin.Hyder
Still Fixing TM-Sobol
Change 3512180 by Marc.Olano
PCSS for spotlights. Like directional PCSS this is experimental, activated by r.Shadow.FilterMethod.
Change 3512261 by Michael.Lentine
Move Subsurface to shared properties.
Previously the same code could be executed multiple times without being optimized out if multiple inputs used the same subsurface output.
#jira UE-44405
Change 3512288 by Rolando.Caloca
DR - Fix issue when recycling image handles
Change 3512338 by Michael.Lentine
Fix precision if user enters a multiple of 90 degree rotation for transforms.
This will only work for exact values. Generally comparing float point numbers using == is unsafe but it should be ok in this case as they are exact values entered from the UI. We may want to later expand this to include thresholding using a value ~1e-7.
#jira UE-46137
Change 3512424 by Michael.Lentine
Regenerate BaseColor.uasset and Specular.uasset to not have the notforclient flags set.
#jira UE-44315
Change 3512686 by Brian.Karis
Fix for quadric assert in infiltrator. Due to bad tangents in source mesh.
Change 3512696 by Brian.Karis
Unrevert TAA. Fixed DOF NaN artifacts
Change 3512717 by Marcus.Wassmer
PR #3714: Fix typo in EOcclusionCombineMode (Contributed by Mumbles4)
Change 3513112 by Richard.Wallis
Crash when packaging for iOS with Shared Material Native Libraries and Share Material Shader Code from windows platform. Offline shader compile for archiving not done - shader header has missing offline compile flag for native Metal library archiving.
Fix includes:
- Handle offline compile failure when not running on Mac and no remote is configured (or remote fails). (I think it's this point at which the crash in the bug report is at).
- Make sure remote can build for native Metal libraries and archive correctly - this should now support Linux platforms or Mac to Mac (if enabled in MetalShaderCompiler.cpp) for testing if required.
- Updated to include remote calling into the xcode 9 Metal pch fix already submitted by Mark Satt.
#jira UE-45657
Change 3513357 by Richard.Wallis
Windows compile fix.
Change 3513375 by Guillaume.Abadie
Exposes the possibility to manually destroy the GPU ressource of UTextureRenderTarget2D.
Change 3513685 by Richard.Hinckley
#jira UEDOC-3822
Fixing a comment that refers to a non-existent function, for documentation purposes.
Change 3513705 by Marc.Olano
Updates to Sobol test levels in RenderTest project
Change 3513730 by Rolando.Caloca
DR - Fix mip size copying resolve targets
- Fix compute fence
- Fix descriptor set texture layout
- More dump info
Change 3513742 by Marc.Olano
Texture-free numeric print for shader debugging
Change 3513777 by Daniel.Wright
Handled edge case where no furthest samples are found in precomputed visibility
Change 3514852 by Rolando.Caloca
DR - Fix -directcompile on SCW
Change 3515049 by Rolando.Caloca
DR - hlslcc dump crash fix
Change 3515167 by Rolando.Caloca
DR - hlslcc - Fix bogus string pointer
- Allow reading from non-scalar UAVs
Change 3515745 by Rolando.Caloca
DR - Linux compile fix
Change 3515862 by Rolando.Caloca
DR - Remove old reference to CCT
- Link with hlslcc debug libs on SCW debug config for easier debugging
Change 3516292 by Rolando.Caloca
DR - glslang exe fixes
Change 3516568 by Rolando.Caloca
DR - hlslcc - Copy fix for *Buffer as functionparameters
Change 3516659 by Marcus.Wassmer
Fix some d3derrors with distance fields
Change 3516801 by Daniel.Wright
Fixed crash when doing editor 'Force Delete' on a static mesh whose distance field is still being built. Any UObject reference that is to an asset can be NULL'ed by the editor.
Change 3516825 by Rolando.Caloca
DR - Some initial fixes for structured buffers
Change 3516843 by Rolando.Caloca
DR - Fix for Vulkan dist fields
Change 3516869 by Marcus.Wassmer
Add format to the createrendertarget blueprint node
Change 3516957 by Daniel.Wright
Fixed bUsesDistortion being editable
Change 3516965 by Daniel.Wright
Still mark the distance field task completed, even if the static mesh has been deleted
Change 3517039 by Yujiang.Wang
GitHub #2655: Optimization for shadow map resolution selection for spot lights
* Use the radius of the inscribed sphere at the cone end as the spot light's screen radius
Note: slight drop of shadow quality of spot lights may occur when they are far away from the camera. This is intended, since before this optimization they tend to be always rendered with the maximum shadow map resolution (2048), which is very costly
#jira UE-33982
Change 3517069 by Yujiang.Wang
Fix for ScissorRect settings in d3d11 being lost under certain scenarios
* Scissor rectangle is always enabled in the low-level d3d11 pipeline, and it is expected that at least one ScissorRect is present no matter whether RHISetScissorRect is called with bEnable=false (when it is false we just use a big rect to make it effectively disabled)
* However FD3D11StateCacheBase::ClearState() clears all the states, which removes scissor rectangles and causes problems for certain routines (FScene::UpdateSkyCaptureContents)
* Now SetScissorRectIfRequiredWhenSettingViewport will always set a effectively disabled ScissorRect on each FD3D11DynamicRHI::RHISetViewport call, just like d3d12 does
#jira UE-45465 UE-44760
Change 3517134 by Yujiang.Wang
CIS fix
Change 3517662 by Rolando.Caloca
DR - Execute upload Vulkan cmds on the RHI thread
- Fix crash with structured buffer
Change 3517677 by Rolando.Caloca
DR - Update/copy textures on RHI thread
Change 3517680 by Rolando.Caloca
DR - Copy texture bulk data on rhi thread
Change 3517748 by Marcus.Wassmer
temporary workaround for one class of GPU crashes
Change 3518832 by Rolando.Caloca
DR - Copy & extend 3518077
- Fix for movable skylight shader missing on simple forward (low lighting quality mode)
Change 3519973 by Richard.Wallis
Jittering in Engine Menu Dropdown Options. Jitter fix: Fix some areas that hadn't been changed from RoundToInt (from previous CL's) to CeilToInt.
#jira UE-46505
Change 3520849 by Uriel.Doyon
Fixed issue with investigate texture command and dynamic component entries.
Change 3521064 by Guillaume.Abadie
Returns absolute path of shader files on error to avoid work loss in visual studio that can't figure out that a sln relative and absolute path might leading to same file on disk.
Change 3521834 by Rolando.Caloca
DR - Fix decals on Vulkan
Change 3521892 by Rolando.Caloca
DR - Fix Vulkan texture streaming
Change 3523181 by Rolando.Caloca
DR - Copy from 3523176
UE4.17 - Fix Vulkan scissor causing text to not clip
Change 3523534 by Yujiang.Wang
UE-46631: Implement a scalable LongGPUTask to fix ProfileGPU
* A new, scalable, platform-independent IssueLongGPUTask is now implemented in UtilityShaders
* Removed IssueLongGPUTask and G*Vector4VertexDeclaration from RHI implementations
* The measurement of the execution time of a basic LongGPUTask unit is kicked off on the very first frame
#jira UE-46631
Change 3524552 by Yujiang.Wang
Fix iteration number calculation of LongGPUTask
Change 3524975 by Joe.Graf
Moved the Hamming-weight function from StaticMeshDrawList.inl to FGenericPlatformMath
Added SSE versions using _mm_popcnt_u64 for platforms that support it
Added a SSE check to gracefully exit when missing the instruction and it was expected to be there
#CodeReview: arciel.rekman, brian.karis
Change 3525306 by Daniel.Wright
Fixed ensure from LPV
Change 3525346 by Rolando.Caloca
DR - Fix linking issue
Change 3525459 by Daniel.Wright
Volumetric Lightmaps - higher quality precomputed GI on dynamic objects and GI on Volumetric Fog
* Enabled by default on all maps, effective after a lighting build. This replaces the existing Precomputed Light Volume and Indirect Lighting Cache features.
* New Lightmass World Settings: VolumeLightingMethod, VolumetricLightmapDetailCellSize and VolumetricLightmapMaximumBrickMemoryMb.
* Lightmass computes lighting samples in an adaptive grid, with higher density around geometry inside the importance volume. Positions outside the importance volume get lit with the border texels.
* Improved Lightmass volume solver to use importance photons and full adaptive final gather, so volume samples have similar quality to 2d lightmaps.
* A static indirection texture is built covering the importance volume and flattening the brick tree by storing the offset to the highest density brick at each indirection cell.
* Seamless and efficient GPU interpolation across density levels is achieved by adding a single row of padding to bricks, copied from neighbors, and stitching up bricks with lower density neighbors
* The Volumetric lightmap stores Irradiance as a 3 band SH, which is 27 floats, quantized into 28 bytes, 7 texture lookups.
* A full screen barebones material using Volumetric Lightmaps costs .42ms on 970 GTX, while Indirect Lighting Cache Point costs .32ms
* Sky bent normal is also stored for stationary skylights and Directional Light Shadowing for Single Sample Shadow receiving.
* Volumetric fog, Movable components, unbuilt Static Components, SingleSampleShadow receiving and Capsule Shadows use Volumetric Lightmaps if available
* New Visualization show flag for Volumetric Lightmap sample points
* Level streaming of volume light data is not currently supported with this method
Change 3525461 by Daniel.Wright
Lowered default r.Shadow.RadiusThreshold for Epic shadow settings as it was causing a lot of visible artifacts from small objects popping out. This will increase shadowmap cost slightly (13.5ms RT -> 14.3ms RT in Fortnite on PS4, no measurable GPU difference).
Change 3526459 by Rolando.Caloca
DR - Fix validation error
Change 3526474 by Rolando.Caloca
DR - Integrate from GV
Change 3526487 by Daniel.Wright
Disabled Volumetric Lightmap filtering with neighbors due to artifacts
Fix linux compile errors
Change 3526833 by Rolando.Caloca
DR - Workaround for hlslcc
Change 3526991 by Uriel.Doyon
Integrated 3526859 : Texture mip bias is now reset whenever the streaming budget increases. This fixes an issue where textures persistently become low res after a memory spike.
Change 3527574 by Rolando.Caloca
DR - Added some missing resource entries for SCW direct mode
Change 3527625 by Rolando.Caloca
DR - Copy from 3527113
UE4.17 - Fix Vulkan not calling Present
Change 3528461 by Brian.Karis
Support larger hash sizes. Added uint list hashing function.
Change 3528780 by Rolando.Caloca
DR - Default Vulkan resources
Change 3528818 by Rolando.Caloca
DR - glslang - Added missing accessor
Change 3528839 by Rolando.Caloca
DR - Fix virtual path issue when using non-engine relative absolute paths
Change 3528900 by Daniel.Wright
Fixed variable shadowing
Change 3529039 by Rolando.Caloca
DR - Read Spirv reflection data (not used yet)
Change 3529040 by Joe.Graf
Fixed the 32bit compile failures for the popcnt optimization
#CodeReview: arciel.rekman
Change 3529060 by Rolando.Caloca
DR - hlslcc - New flag for keeping resource names
Change 3529344 by Rolando.Caloca
DR - Delete unused file
Change 3529723 by Brian.Karis
Fixed static analysis cleaner.
Change 3531357 by Michael.Trepka
Updated Mac glslang libraries with latest changes. Also, updated the Xcode project (generated with CMake) and moved it to a different location so that it no longer uses hardcoded absolute paths. It should be easy to rebuild these libraries in the future.
Change 3531517 by Joe.Graf
Added support for ddx_fine, ddy_fine, ddx_coarse, ddy_coarse to hlslcc
#CodeReview: arciel.rekman, mark.satterthwaite, rolando.caloca
Change 3531626 by Joe.Graf
Mac version of the popcount optimization
Changed Linux version to use the same builtin
#CodeReview: mark.satterthwaite, arciel.rekman
Change 3531837 by Chris.Bunner
SetScissorRectIfRequiredWhenSettingViewport sets the viewport size by default rather than disabling the scissor rect.
#jra UE-46753
Change 3533415 by Joe.Graf
Renamed the SSSE3 checks per feedback
#CodeReview: arciel.rekman
Change 3533480 by Michael.Lentine
Use more accurate descriptions for shader recompile options
Change 3533511 by Joe.Graf
Updated the GenericPlatformMisc to match the SSSE3 name change
#CodeReview: arciel.rekman
Change 3533521 by Marcus.Wassmer
Fix scenerenderer leak when updating out of view planar reflections
Change 3533528 by Joe.Graf
Updated comments
#CodeReview: n/a
Change 3533608 by Mark.Satterthwaite
New manual Xcode project for glslang so that we include all the necessary code and can link again.
Change 3534260 by Mark.Satterthwaite
Fix the Xcode 9 Beta 3 compile errors in MetalRHI without breaking Xcode 8.3.3.
Change 3535789 by Yujiang.Wang
Fix for wrong hair shading in forward shading
* IBL reflections should be turned off for hairs
Change 3537059 by Ben.Marsh
Fixing case of iOS directories, pt1
Change 3537060 by Ben.Marsh
Fixing case of iOS directories, pt2
Change 3538297 by Michael.Lentine
Add shader comparison test.
Adding the basic test case.
Adding logic to Common.ush to enable FP16 conditionally on a define (which is not set by default)
Adding more exported functionality to automation for use in the shader test.
Change 3538309 by Michael.Lentine
Add missing file from Shader Test CL.
Change 3538751 by Michael.Lentine
Add missing pragma once.
Change 3539236 by Michael.Lentine
Do not ignore return values.
Change 3539237 by Michael.Lentine
Check in the correct file
Change 3540343 by Rolando.Caloca
DR - Added t.DumpHitches.AllThreads
Change 3540661 by Yujiang.Wang
Fix spot tube light direction
* The tube direction for a spot light was pointing along the light direction, now it is along the local Z axis which is perpendicular to the light direction. Lightmass is also touched
* A new LightTangent is added to FDeferredLightData
* Packed all the values from LightSceneProxy->GetParameters into a single FLightParameters struct to avoid copy-pasting them everywhere
Change 3541129 by Rolando.Caloca
DR - vk - Copy all Vulkan fixes from 4.17
Change 3541347 by Yujiang.Wang
Fix wrong ViewFlags being set between objects when rendering shadow depth maps
* Bug caused by trying to share DrawRenderState between objects, but SetViewFlagsForShadowPass was designed to start from a fresh render state
* Now SetViewFlagsForShadowPass recalculates and sets the flags on each call
Change 3542603 by Rolando.Caloca
DR - vk - Allow sharing samplers on Vulkan
Change 3542639 by Jian.Ru
Changed warning text to better indicate that global clip plane needs to be enabled for planar reflection
#RB Marcus.Wassmer
Change 3543167 by Michael.Lentine
Fix naming for the shader comparison tests.
Change 3543210 by Uriel.Doyon
Fixed an issue when computing material scales where the default material ends up being used instead of the required material.
In that case, we used the default settings for texture streaming (assuming a scale of 1).
Change 3543221 by Brian.Karis
Simplifier optimizations
Change 3543239 by Arciel.Rekman
hlslcc: remove FCustomStd* workarounds.
- This was previous attempt to work around problems arising from different STL used for building libhlslcc (in the cross-toolchain) and possibly different STL used for building engine (on the system).
- The same problem has been resolved by bundling libc++.
Change 3543946 by Michael.Lentine
Add comparison output.
Change 3544277 by Brian.Karis
Fixed uninitialized var error
Change 3544404 by Rolando.Caloca
DR - Fix broken textures
Change 3544503 by Jian.Ru
Ensure lighting failure delegates are always called
#RB Marcus.Wassmer,Daniel.Wright
#3689
Change 3545241 by Daniel.Wright
Fixed spotlight whole scene shadows using a radius 2x too long
Change 3545347 by Daniel.Wright
Fixed shadow occlusion culling broken by shadowmap caching change. FProjectedShadowKey is now computed correctly for whole scene shadows and SDCM_StaticPrimitivesOnly shadowmaps will fall back to the query for a SDCM_MovablePrimitivesOnly, since the static primitives shadowmap's query is not issued every frame.
Change 3546196 by Marcus.Wassmer
Fix minor typo
Change 3546459 by Daniel.Wright
ULevel::PostEditChangeProperty recreates rendering resources if MapBuildData is modified - fixes a crash when Force Deleting the MapBuildData package.
Change 3546469 by Jian.Ru
Take into account CVarStaticMeshLODDistanceScale during static mesh LOD calculation
Change 3546804 by Daniel.Wright
[Copy] Added SendAllEndOfFrameUpdates draw event to wrap skin cache events
Change 3546814 by Daniel.Wright
[Copy] Only use skylight OcclusionMaxDistance for the global distance field if it casts shadows
Change 3546815 by Daniel.Wright
[Copy] Snap volumetric fog light function target resolution to a factor of 32 to avoid constant texture reallocation
Change 3546817 by Daniel.Wright
[Copy] Warmup time warning
Change 3546828 by Daniel.Wright
[Copy] Fixed UWorld::DestroyActor in PIE calling InvalidateLightingCacheDetailed which can do a FlushRenderingCommands and cause a large hitch
Change 3546836 by Daniel.Wright
[Copy] ULightComponent::InvalidateLightingCacheInner uses MarkRenderStateDirty instead of slow reregister + FlushRendingCommands, and only for lights which might have static lighting data
Change 3546849 by Rolando.Caloca
DR - vk - Fix missing samplerstates
- Fixes for structured buffers
- Add missing Draw and Dispatch Indirect
Change 3547516 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547542 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547563 by Brian.Karis
Fixed some compiler warnings and hopefully some errors.
Change 3547610 by Brian.Karis
Replaced macros with inlined functions
Change 3547620 by Brian.Karis
Clean up includes
Change 3547770 by Marcus.Wassmer
GPU Crash for MTBF analytics
Change 3547773 by Marcus.Wassmer
Updated doxygen comment for new analytic
Change 3548244 by Rolando.Caloca
DR - Fix for translucency
Change 3548352 by Yujiang.Wang
Added soft source radius for point and spot lights
* Soft source radius controls how 'blurry' the shape of specular lighting looks
* Implemented by LobeRoughness modification
* Better approximation for spherical lights so that they don't look sharp when the radius is large using 'smoothed representative point' method
* Suppoted LightTangent in forward shading
Change 3548530 by Brian.Karis
Fix for mac build
Change 3548770 by Rolando.Caloca
DR - vk - Prereq work for Vulkan parallel RHI contexts
Change 3548772 by Jian.Ru
Fixed an issue that caused an ensure when switching levels in D3D10. #rb Marcus.Wassmer
Change 3548865 by Daniel.Wright
With shadowmap caching of whole scene shadows, only one of the cache modes issues an occlusion query. Fixes a crash where the static primitive shadowmap is culled but the movable primitive shadowmap is visible, which is normally not possible.
Change 3548952 by Rolando.Caloca
DR - Allow separate samplers in the shaders on Vulkan
Change 3549197 by Marcus.Wassmer
Fix DX12 PIx not working in cooked builds
Change 3549209 by Daniel.Wright
Occlusion culling for CSM, from the main camera, controlled by 'r.Shadow.OcclusionCullCascadedShadowMaps'. Disabled by default as rapid view changes don't work well with latent occlusion queries.
Change 3549943 by Ben.Marsh
Include better diagnostic information when a modified build product is detected after running a build step.
Change 3550546 by Rolando.Caloca
DR - Fix merge issue
Change 3550962 by Marcus.Wassmer
EarlyZ Masking requires full depth prepass, so just force it to.
Change 3551062 by Daniel.Wright
Handle NULL skylight
Change 3551104 by Rolando.Caloca
DR - vk - Remove assert to match other platforms
Change 3551221 by Rolando.Caloca
DR - vk - Add mirror clamp to edge extension
- Fix framebuffer deletion
Change 3551224 by Daniel.Wright
Volumetric lightmap increase density around static lights affecting a voxel brighter than LightBrightnessSubdivideThreshold.
Change 3551495 by Rolando.Caloca
DR - vk - Intiial support for async queue
Change 3552101 by Rolando.Caloca
DR - vk - Fix for async
Change 3552102 by Rolando.Caloca
DR - SkinCache - Fix potential leak on staging buffers for recompute tangents
- Integrate changes from 4.17 for memory optimizations
Change 3552104 by Rolando.Caloca
DR - vk - Support for SRVs for index buffers
Change 3552838 by Rolando.Caloca
DR - vk - Enable debug markers if found
Change 3553106 by Rolando.Caloca
DR - vk - Fixes for index buffer SRVs
Change 3553107 by Rolando.Caloca
DR - vk - Enable recompute tangents on Vulkan
Change 3553154 by Rolando.Caloca
DR - vk - Fix crash with null uav
Change 3553342 by Yujiang.Wang
Fix redundant skylights in AdvancedPreviewScene
* PreviewScene was changed to using a skylight instead of ambient cubemap to support forward shading
* AdvancedPreviewScene originally had a skylight, now it is changed to using the one inherited from PreviewScene
Change 3553481 by Rolando.Caloca
DR - Integrate fix for D3D12 support of index buffers SRVs
#jira UE-47674
Change 3553715 by Rolando.Caloca
DR - Fix crash when launching PC with -featureleveles31
Change 3553725 by Rolando.Caloca
DR - Redo fix
Change 3553803 by Rolando.Caloca
DR - Shader compile fixes for ES3.1
Change 3553963 by Rolando.Caloca
DR - vk - Remove extra IRDump
Change 3554741 by Ben.Marsh
CIS fix.
Change 3555222 by Rolando.Caloca
DR - vk - static analysis fix
Change 3555362 by Rolando.Caloca
DR - vk - Prep work for separate present queue
Change 3556800 by Daniel.Wright
Fixed screenshot for simple volume material doc
Change 3556942 by Brian.Karis
Fixed Bokeh DOF regression.
Change 3556959 by Rolando.Caloca
DR - vk - Rework staging buffer peak usage
Change 3557497 by Daniel.Wright
Better display name for Unbound property on post process volume
Change 3557499 by Daniel.Wright
Disable r.GenerateLandscapeGIData by default, opt-in for kite demo. Projects that want to use heightfield GI need to opt-in to r.GenerateLandscapeGIData.
Change 3557068 by Olaf.Piesche
Configurable spawn rate scaling reference value; sets the zero-scale reference value (default: 2), so additional quality levels can be added and scaling customized further.
IMPORTANT: This sets the reference to 3 in PS4Scalability.ini; effects on PS4 are again going to have reduced spawn rates versus PC and Neo, as intended by the FX artists starting with this change.
#tests QAGame test maps
Change 3558123 by Rolando.Caloca
DR - vk - static analysis fix
Change 3558685 by Yujiang.Wang
Github #3323: Two sided foliage lightmap directionality fix
* Subsurface is not intended to work with lightmaps that don't have directionality, however we still want it to look similar to a directional one
* Now it uses a constant directionality value
#jira UE-42523
Change 3559052 by Brian.Karis
Hopefully fix static analysis
Change 3559113 by Rolando.Caloca
DR - Fix crash witrh planar reflections
Change 3559275 by Yujiang.Wang
Fix race condition on several scalability CVars between rendering thread and game thread
Change 3559612 by Rolando.Caloca
DR - vk - SM5 with uniform buffers backend support
Change 3559716 by Rolando.Caloca
DR - hlslcc - Fix linker warning on SCW debug
Change 3559768 by Rolando.Caloca
DR - vk - Keep ub names for bindings
Change 3560195 by Rolando.Caloca
DR - accessor
Change 3560275 by Rolando.Caloca
DR - vk - Support for uniform buffers
Change 3560913 by Rolando.Caloca
DR - vk - Fix static analysis
Change 3561145 by Rolando.Caloca
DR - Don't crash if out of resource table bits
Change 3561194 by Rolando.Caloca
DR - vk - Integrate timestamp fixes
Change 3562009 by Rolando.Caloca
DR - vk - Workaround for bad UTexture data
Change 3563884 by Chris.Bunner
VK_NULL_HANDLE fix.
Change 3563885 by Jian.Ru
Ignore a warning caused by enabling distance field generation so that test Cube_Blue and Cube_Section don't fail. #rb Chris.Bunner
Change 3565943 by Jian.Ru
Add extra warning log triggered when attempt to create FRWBuffer greater than 256MB in ComputeLightGrid() #rb Chris.Bunner
Change 3569479 by Michael.Lentine
Integrate rhino shader changes to dev-rendering
Change 3569511 by Michael.Lentine
Fix formating and string out on windows.
Change 3569572 by Yujiang.Wang
Fix MeasureLongGPUTaskExecutionTime crashing on AMD on Macs
Change 3569614 by Yujiang.Wang
Flush rendering commands before measuring the long GPU task's excution time to get accurate results
Change 3570524 by Jian.Ru
Add extra parentheses to avoid compilation warning #rb Chris.Bunner
Change 3570722 by Chris.Bunner
Static analysis workaround - same code, just validating compile-time assumptions a little further.
Change 3570880 by Jian.Ru
Add small depth offset to avoid depth test failing during velocity pass
#jira UE-37556
Change 3572532 by Jian.Ru
Disable a warning to let tests pass
#jira UE-48021
Change 3573109 by Michael.Lentine
Checkin Michael.Trepka's fix for external dynamic libraries on mac.
This is needed to make the build go green on mac.
Change 3573995 by Jian.Ru
Move an include out of define to let nightly build pass
Change 3574777 by Chris.Bunner
Continued merge fixes.
Change 3574792 by Rolando.Caloca
DR - Rename todo
Change 3574794 by Chris.Bunner
Re-adding includes lost in a pre-merge merge.
Change 3574879 by Michael.Trepka
Disabled a couple of Mac deprecation warnings
Change 3574932 by Chris.Bunner
Merge fix.
Change 3575048 by Michael.Trepka
Fixed iOS compile warnings
Change 3575530 by Chris.Bunner
Duplicating static analysis fix CL 3539836.
Change 3575582 by Chris.Bunner
Fixed GetDimensions return type in depth resolve shaders.
Compile error fix.
Change 3576326 by Chris.Bunner
Static analysis fixes.
Change 3576513 by Michael.Trepka
Updated Mac MCPP lib to be compatible with OS X 10.9
Change 3576555 by Richard.Wallis
Metal Validation Errors. Dummy black volume texture is in the wrong format in the Metal shader for the VolumetricLightmapIndirectionTexture. Create a new dummy texture with pixel format PF_R8G8B8A8_UINT.
#jira UE-47549
Change 3576562 by Chris.Bunner
OpenGL SetStreamSource stride updates.
Change 3576589 by Michael.Trepka
Fixed Mac CIS warnings and errors in Dev-Rendering
Change 3576708 by Jian.Ru
Fix cascade preview viewport background color not changing
#jira UE-39687
Change 3576827 by Rolando.Caloca
DR - Minor fix for licensee
Change 3576973 by Chris.Bunner
Fixing up HLSLCC language spec mismatch (potential shader compile crashes in GL and Vulkan).
Change 3577729 by Rolando.Caloca
DR - Fix for info on SCW crashes
Change 3578723 by Chris.Bunner
Fixed issue where custom material attribute was using display name as hlsl function name.
Change 3578797 by Chris.Bunner
Fixed pixel inspector crashing on high-precision normals gbuffer format.
#jira UE-48094
Change 3578815 by Yujiang.Wang
Fix for UE-48207 Orion cooked windows server crash on startup
* Crash caused by rendering features not available in a dedicated server build
* Skip over MeasureLongGPUTaskExecutionTime when !FApp::CanEvenRender()
#jira UE-48207
Change 3578828 by Daniel.Wright
Disable volumetric lightmap 3d texture creation on mobile
Change 3579473 by Daniel.Wright
Added View.SharedBilinearClampSampler and View.SharedBilinearWrapSampler. Used these to reduce base pass sampler counts with volumetric lightmaps.
Change 3580088 by Jian.Ru
Fix QAGame TM-CharacterMovement crashing on PIE
#jira UE-48031
Change 3580388 by Daniel.Wright
Fixed shadowed light injection into volumetric fog fallout from Rhino merge
Change 3580407 by Michael.Trepka
Updated Mac UnrealPak binaries
Change 3581094 by Michael.Trepka
Fix for ScreenSpaceReflections not working properly on iOS 11
Change 3581242 by Michael.Trepka
Fixed a crash on startup on Mac when launching TM-ShaderModels in QAGame
#jira UE-48255
Change 3581489 by Olaf.Piesche
Replicating CL 3578030 from Fortnite-Main to fix #jira UE-46475
#jira FORT-47068, FORT-49705
Don't inappropriaely touch game thread data on the render thread. Push SubUV cutout data into a RT side object owned by the sprite dynamic data.
#tests FN LastPerfTest
Change 3581544 by Simon.Tovey
Fix for ensure accessing cvar from task thread.
#tests no more ensure
Change 3581934 by Chris.Bunner
Fixed ConsoleVariables.ini break from merge.
Change 3581968 by Jian.Ru
Fix QAGame TM-ShaderModels PIE crash when resizing game viewport
#jira UE-48251
Change 3581989 by Richard.Wallis
Fix for NULL PrecomputedLightingBuffer. It is null for first frame request in forward rendering so should have the GEmptyPrecomputedLightingUniformBuffer set in these cases after it's been initially tried to be set not before.
#jira UE-46955
Change 3582632 by Chris.Bunner
Resolved merge error.
Change 3582722 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on GL
#jira UE-48208
Change 3584096 by Rolando.Caloca
DR - Fix for renderdoc crashing in shipping
#jira UE-46867
Change 3584245 by Jian.Ru
Fix System.Promotion.Editor.Particle Editor test crash
#jira UE-48235
Change 3584359 by Yujiang.Wang
Fix for UE-48315 Wall behind base in Monolith is flickering white in -game Orion
* Caused by dot(N, V) being negative
* Clamp to (0, 1)
#jira UE-48315
Change 3587864 by Mark.Satterthwaite
Fix the GPU hang on iOS caused by changes to the Depth-Stencil MSAA handling: you can't store the MSAA stencil results on iOS < 10 unless you use the slower MTLStoreActionStoreAndMultisampleResolve which we don't need for the mobile renderer.
#jira UE-48342
Change 3587866 by Mark.Satterthwaite
Correctly fix iOS compilation errors against Xcode 9 Beta 5 and Xcode 8.3.3 - duplicating function definitions is guaranteed to be wrong.
Change 3588168 by Mark.Satterthwaite
Move the Xcode version into the Metal shader format header, not the DDC key, so that we can handle bad compiler/driver combinations in the runtime and don't force all users to recompile every time the Xcode version changes.
Change 3588192 by Rolando.Caloca
DR - Fix d3d12 linker error when EXECUTE_DEBUG_COMMAND_LISTS is enabled
Change 3588291 by Rolando.Caloca
DR - Fix for d3d12 command list crash: Commited resources can not have aliasing barriers
#jira UE-48299
Change 3590134 by Michael.Trepka
Copy of CL 3578963
Reset automation tests timer after shader compilation when preparing for screenshots taking to make sure tests don't time out.
Change 3590405 by Rolando.Caloca
DR - hlslcc - support for sqrt(uint)
Change 3590436 by Mark.Satterthwaite
Rebuild Mac hlslcc for CL #3590405 - without the various compiler workarounds left over from before the recent code changes.
Change 3590674 by Rolando.Caloca
DR - vk - Integration from working branch
- Fixes distance field maps
- Compute pipelines stored in saved file
- Adds GRHIRequiresRenderTargetForPixelShaderUAVs for platforms that need dummy render targets
Change 3590699 by Rolando.Caloca
DR - Fix distance fields mem leak
Change 3590815 by Rolando.Caloca
DR - vk - Fixes for uniform buffers and empty resource tables
Change 3590818 by Mark.Satterthwaite
Temporarily switch back to OpenVR v1.0.6 for Mac only until I can clarify what to do about a required but missing API hook for Metal. Re-enabled and fixed compile errors with Mac SteamVR plugin code.
Change 3590905 by Mark.Satterthwaite
For Metal shader compilation where the bytecode compiler is unavailable force the debug compiler flag and disable the archiving flag because storing text requires this.
#jira UE-48163
Change 3590961 by Mark.Satterthwaite
Submitted on Richard Wallis's behalf as he's on holiday:
Mac fixes for Compute Skin Cache rendering issues (resulting in incorrect positions and tangents) and for recomputing tangents. Problem sampling from buffers/textures as floats with packed data. Some of the data appears as denorms so get flushed to zero then reinterpreted as uints via asuint or in Metal as_type<uint>(). Fix here for Metal seems to be to use uint types for the skin cache SRV's and as_type<> to floats instead.
There could be some other areas where we're unpacking via floats that could affect Metal and I'm not sure how this will impact on other platforms.
#jira UE-46688, UE-39256, UE-47215
Change 3590965 by Mark.Satterthwaite
Remove the Z-bias workaround from Metal MRT as it isn't required and actually causes more problems.
Change 3590969 by Mark.Satterthwaite
Make all Metal shader platforms compile such that half may be used, unless the material specifies full precision.
Change 3591871 by Rolando.Caloca
DR - Enable PCSS on Vulkan & Metal
- Enable capsule shadows on Vulkan
Change 3592014 by Mark.Satterthwaite
Remove support for Mac OS X El Capitan (10.11) including the stencil view workaround.
Bump the minimum Metal shader standard for Metal SM4, SM5 & Metal MRT to v1.2 (macOS 10.12 Sierra & iOS 10) so we can use FMAs and other newer shader language features globally.
Enable the new GRHIRequiresRenderTargetForPixelShaderUAVs flag as Metal is like Vulkan and needs a target for fragment rendering.
Also fix the filename for direct-compile & remove the old batch file generation in the Metal shader compiler.
Change 3592171 by Rolando.Caloca
DR - CIS fix
Change 3592753 by Jian.Ru
repeat Daniel's fix on xb1 profilegpu crash (draw events cannot live beyond present)
Change 3594595 by Rolando.Caloca
DR - Fix D3D shader compiling run time stack corruption failure on debug triggering falsely
Change 3594794 by Michael.Trepka
Call FPlatformMisc::PumpMessages() before attempting to toggle fullscreen on Mac to fix an issue on some Macs running 10.13 beta that would ignore the toggle fullscreen call freezing the app
Change 3594999 by Mark.Satterthwaite
Disable MallocBinned2 for iOS as on Rhino it worked but on iOS 10.0.2 there are bugs (munmap uses 64kb granularity, not the 4096 the code expects given the reported page-size).
While we are here remove the spurious FORCE_MALLOC_ANSI from the iOS platform header.
#jira UE-48342
Change 3595004 by Mark.Satterthwaite
Disable Metal's Deferred Store Actions and combined Depth/Stencil formats on iOS < 10.3 as there are bugs on earlier versions of iOS 10.
#jira UE-48342
Change 3595386 by Mark.Satterthwaite
Silence the deprecation warning for kIOSurfaceIsGlobal until SteamVR switches to one of the newer IOSurface sharing mechanisms.
Change 3595394 by Rolando.Caloca
DR - Added function for tracking down errors in the hlsl parser
- Added support for simple #if 0...#endif
Change 3599352 by Rolando.Caloca
DR - Fixes for HlslParser
- Added missing attributes for functions
- Fixed nested assignment
Change 3602440 by Michael.Trepka
Fixed Metal shader compilation from Windows with remote compilation disabled
#jira UE-48163
Change 3602898 by Chris.Bunner
Resaving assets.
Change 3603731 by Jian.Ru
fix a crash caused by a material destroyed before the decal component
#jira UE-48587
Change 3604629 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on Android
#jira UE-48208
Change 3604984 by Peter.Sauerbrei
fix for orientation not being limited to that specified in the plist
#jira UE-48360
Change 3605738 by Chris.Bunner
Allow functional screenshot tests to request a camera cut (e.g. tests relying on temporal aa history).
#jira UE-48748
Change 3606009 by Mark.Satterthwaite
Correctly implement ClipDistance for Metal as an array of floats as required by the spec. and fix a few irritating issues from the merge that should not have.
- When compiling a tessellation vertex shader in the SCW direct mode we can't evaluate non-existant defines and we don't actually need to.
- The define names, values & shader file name are irrelevant to the Metal output key, but the shader format name & Metal standard really do matter - should speed up Metal shader compilation a bit.
- Move the shader vertex layer clip-distance to index 2 to avoid conflicts.
- Don't default initialise the debug code string for Metal shaders or it won't print out the actual code....
#jira UE-47663
Change 3606108 by Mark.Satterthwaite
Temporary hack to avoid a crash in AVPlayer.
#jira UE-48758
Change 3606121 by Mark.Satterthwaite
Fix Windows compilation.
Change 3606992 by Chris.Bunner
Static analysis fix.
[CL 3608256 by Marcus Wassmer in Main branch]
2017-08-24 15:38:57 -04:00
2023-11-30 15:56:34 -05:00
if ( EnumHasAnyFlags ( Input . DebugInfoFlags , EShaderDebugInfoFlags : : CompileFromDebugUSF ) )
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3607928)
#lockdown Nick.Penwarden
============================
MAJOR FEATURES & CHANGES
============================
Change 3441680 by Uriel.Doyon
Added units to point light intensity, to allow the user to specify the value in candelas or lumens.
New point light actors now configure the intensity in candelas by default.
Replaced viewport exposure settings by an EV100 slider.
Hidding the tone mapper in the show flag now still applies the exposure.
Added a new AutoExposure method called EV100 which allows to specify :
- MinEV100, MaxEV100
- Calibration Constnat
- Exposure Compensation
#jira UE-42783
Change 3454934 by Chris.Bunner
Backing out changelists 3441680, 3454636 and 3454844 for the sake of integration stability.
Change 3512118 by Marc.Olano
Fix rare Sobol shader data problem. Mismatch with CPU code after a large number of points
Resubmit of portion of //UE4/Dev-Rendering@3509854 that was rolled back to avoid massive shader recompiles during integration testing
Change 3512129 by Benjamin.Hyder
Fixing up content in TM-SobolNoise
Change 3512151 by Rolando.Caloca
DR - Fixed some layouts that were general
- Added some extra dump information
Change 3512160 by Benjamin.Hyder
Still Fixing TM-Sobol
Change 3512180 by Marc.Olano
PCSS for spotlights. Like directional PCSS this is experimental, activated by r.Shadow.FilterMethod.
Change 3512261 by Michael.Lentine
Move Subsurface to shared properties.
Previously the same code could be executed multiple times without being optimized out if multiple inputs used the same subsurface output.
#jira UE-44405
Change 3512288 by Rolando.Caloca
DR - Fix issue when recycling image handles
Change 3512338 by Michael.Lentine
Fix precision if user enters a multiple of 90 degree rotation for transforms.
This will only work for exact values. Generally comparing float point numbers using == is unsafe but it should be ok in this case as they are exact values entered from the UI. We may want to later expand this to include thresholding using a value ~1e-7.
#jira UE-46137
Change 3512424 by Michael.Lentine
Regenerate BaseColor.uasset and Specular.uasset to not have the notforclient flags set.
#jira UE-44315
Change 3512686 by Brian.Karis
Fix for quadric assert in infiltrator. Due to bad tangents in source mesh.
Change 3512696 by Brian.Karis
Unrevert TAA. Fixed DOF NaN artifacts
Change 3512717 by Marcus.Wassmer
PR #3714: Fix typo in EOcclusionCombineMode (Contributed by Mumbles4)
Change 3513112 by Richard.Wallis
Crash when packaging for iOS with Shared Material Native Libraries and Share Material Shader Code from windows platform. Offline shader compile for archiving not done - shader header has missing offline compile flag for native Metal library archiving.
Fix includes:
- Handle offline compile failure when not running on Mac and no remote is configured (or remote fails). (I think it's this point at which the crash in the bug report is at).
- Make sure remote can build for native Metal libraries and archive correctly - this should now support Linux platforms or Mac to Mac (if enabled in MetalShaderCompiler.cpp) for testing if required.
- Updated to include remote calling into the xcode 9 Metal pch fix already submitted by Mark Satt.
#jira UE-45657
Change 3513357 by Richard.Wallis
Windows compile fix.
Change 3513375 by Guillaume.Abadie
Exposes the possibility to manually destroy the GPU ressource of UTextureRenderTarget2D.
Change 3513685 by Richard.Hinckley
#jira UEDOC-3822
Fixing a comment that refers to a non-existent function, for documentation purposes.
Change 3513705 by Marc.Olano
Updates to Sobol test levels in RenderTest project
Change 3513730 by Rolando.Caloca
DR - Fix mip size copying resolve targets
- Fix compute fence
- Fix descriptor set texture layout
- More dump info
Change 3513742 by Marc.Olano
Texture-free numeric print for shader debugging
Change 3513777 by Daniel.Wright
Handled edge case where no furthest samples are found in precomputed visibility
Change 3514852 by Rolando.Caloca
DR - Fix -directcompile on SCW
Change 3515049 by Rolando.Caloca
DR - hlslcc dump crash fix
Change 3515167 by Rolando.Caloca
DR - hlslcc - Fix bogus string pointer
- Allow reading from non-scalar UAVs
Change 3515745 by Rolando.Caloca
DR - Linux compile fix
Change 3515862 by Rolando.Caloca
DR - Remove old reference to CCT
- Link with hlslcc debug libs on SCW debug config for easier debugging
Change 3516292 by Rolando.Caloca
DR - glslang exe fixes
Change 3516568 by Rolando.Caloca
DR - hlslcc - Copy fix for *Buffer as functionparameters
Change 3516659 by Marcus.Wassmer
Fix some d3derrors with distance fields
Change 3516801 by Daniel.Wright
Fixed crash when doing editor 'Force Delete' on a static mesh whose distance field is still being built. Any UObject reference that is to an asset can be NULL'ed by the editor.
Change 3516825 by Rolando.Caloca
DR - Some initial fixes for structured buffers
Change 3516843 by Rolando.Caloca
DR - Fix for Vulkan dist fields
Change 3516869 by Marcus.Wassmer
Add format to the createrendertarget blueprint node
Change 3516957 by Daniel.Wright
Fixed bUsesDistortion being editable
Change 3516965 by Daniel.Wright
Still mark the distance field task completed, even if the static mesh has been deleted
Change 3517039 by Yujiang.Wang
GitHub #2655: Optimization for shadow map resolution selection for spot lights
* Use the radius of the inscribed sphere at the cone end as the spot light's screen radius
Note: slight drop of shadow quality of spot lights may occur when they are far away from the camera. This is intended, since before this optimization they tend to be always rendered with the maximum shadow map resolution (2048), which is very costly
#jira UE-33982
Change 3517069 by Yujiang.Wang
Fix for ScissorRect settings in d3d11 being lost under certain scenarios
* Scissor rectangle is always enabled in the low-level d3d11 pipeline, and it is expected that at least one ScissorRect is present no matter whether RHISetScissorRect is called with bEnable=false (when it is false we just use a big rect to make it effectively disabled)
* However FD3D11StateCacheBase::ClearState() clears all the states, which removes scissor rectangles and causes problems for certain routines (FScene::UpdateSkyCaptureContents)
* Now SetScissorRectIfRequiredWhenSettingViewport will always set a effectively disabled ScissorRect on each FD3D11DynamicRHI::RHISetViewport call, just like d3d12 does
#jira UE-45465 UE-44760
Change 3517134 by Yujiang.Wang
CIS fix
Change 3517662 by Rolando.Caloca
DR - Execute upload Vulkan cmds on the RHI thread
- Fix crash with structured buffer
Change 3517677 by Rolando.Caloca
DR - Update/copy textures on RHI thread
Change 3517680 by Rolando.Caloca
DR - Copy texture bulk data on rhi thread
Change 3517748 by Marcus.Wassmer
temporary workaround for one class of GPU crashes
Change 3518832 by Rolando.Caloca
DR - Copy & extend 3518077
- Fix for movable skylight shader missing on simple forward (low lighting quality mode)
Change 3519973 by Richard.Wallis
Jittering in Engine Menu Dropdown Options. Jitter fix: Fix some areas that hadn't been changed from RoundToInt (from previous CL's) to CeilToInt.
#jira UE-46505
Change 3520849 by Uriel.Doyon
Fixed issue with investigate texture command and dynamic component entries.
Change 3521064 by Guillaume.Abadie
Returns absolute path of shader files on error to avoid work loss in visual studio that can't figure out that a sln relative and absolute path might leading to same file on disk.
Change 3521834 by Rolando.Caloca
DR - Fix decals on Vulkan
Change 3521892 by Rolando.Caloca
DR - Fix Vulkan texture streaming
Change 3523181 by Rolando.Caloca
DR - Copy from 3523176
UE4.17 - Fix Vulkan scissor causing text to not clip
Change 3523534 by Yujiang.Wang
UE-46631: Implement a scalable LongGPUTask to fix ProfileGPU
* A new, scalable, platform-independent IssueLongGPUTask is now implemented in UtilityShaders
* Removed IssueLongGPUTask and G*Vector4VertexDeclaration from RHI implementations
* The measurement of the execution time of a basic LongGPUTask unit is kicked off on the very first frame
#jira UE-46631
Change 3524552 by Yujiang.Wang
Fix iteration number calculation of LongGPUTask
Change 3524975 by Joe.Graf
Moved the Hamming-weight function from StaticMeshDrawList.inl to FGenericPlatformMath
Added SSE versions using _mm_popcnt_u64 for platforms that support it
Added a SSE check to gracefully exit when missing the instruction and it was expected to be there
#CodeReview: arciel.rekman, brian.karis
Change 3525306 by Daniel.Wright
Fixed ensure from LPV
Change 3525346 by Rolando.Caloca
DR - Fix linking issue
Change 3525459 by Daniel.Wright
Volumetric Lightmaps - higher quality precomputed GI on dynamic objects and GI on Volumetric Fog
* Enabled by default on all maps, effective after a lighting build. This replaces the existing Precomputed Light Volume and Indirect Lighting Cache features.
* New Lightmass World Settings: VolumeLightingMethod, VolumetricLightmapDetailCellSize and VolumetricLightmapMaximumBrickMemoryMb.
* Lightmass computes lighting samples in an adaptive grid, with higher density around geometry inside the importance volume. Positions outside the importance volume get lit with the border texels.
* Improved Lightmass volume solver to use importance photons and full adaptive final gather, so volume samples have similar quality to 2d lightmaps.
* A static indirection texture is built covering the importance volume and flattening the brick tree by storing the offset to the highest density brick at each indirection cell.
* Seamless and efficient GPU interpolation across density levels is achieved by adding a single row of padding to bricks, copied from neighbors, and stitching up bricks with lower density neighbors
* The Volumetric lightmap stores Irradiance as a 3 band SH, which is 27 floats, quantized into 28 bytes, 7 texture lookups.
* A full screen barebones material using Volumetric Lightmaps costs .42ms on 970 GTX, while Indirect Lighting Cache Point costs .32ms
* Sky bent normal is also stored for stationary skylights and Directional Light Shadowing for Single Sample Shadow receiving.
* Volumetric fog, Movable components, unbuilt Static Components, SingleSampleShadow receiving and Capsule Shadows use Volumetric Lightmaps if available
* New Visualization show flag for Volumetric Lightmap sample points
* Level streaming of volume light data is not currently supported with this method
Change 3525461 by Daniel.Wright
Lowered default r.Shadow.RadiusThreshold for Epic shadow settings as it was causing a lot of visible artifacts from small objects popping out. This will increase shadowmap cost slightly (13.5ms RT -> 14.3ms RT in Fortnite on PS4, no measurable GPU difference).
Change 3526459 by Rolando.Caloca
DR - Fix validation error
Change 3526474 by Rolando.Caloca
DR - Integrate from GV
Change 3526487 by Daniel.Wright
Disabled Volumetric Lightmap filtering with neighbors due to artifacts
Fix linux compile errors
Change 3526833 by Rolando.Caloca
DR - Workaround for hlslcc
Change 3526991 by Uriel.Doyon
Integrated 3526859 : Texture mip bias is now reset whenever the streaming budget increases. This fixes an issue where textures persistently become low res after a memory spike.
Change 3527574 by Rolando.Caloca
DR - Added some missing resource entries for SCW direct mode
Change 3527625 by Rolando.Caloca
DR - Copy from 3527113
UE4.17 - Fix Vulkan not calling Present
Change 3528461 by Brian.Karis
Support larger hash sizes. Added uint list hashing function.
Change 3528780 by Rolando.Caloca
DR - Default Vulkan resources
Change 3528818 by Rolando.Caloca
DR - glslang - Added missing accessor
Change 3528839 by Rolando.Caloca
DR - Fix virtual path issue when using non-engine relative absolute paths
Change 3528900 by Daniel.Wright
Fixed variable shadowing
Change 3529039 by Rolando.Caloca
DR - Read Spirv reflection data (not used yet)
Change 3529040 by Joe.Graf
Fixed the 32bit compile failures for the popcnt optimization
#CodeReview: arciel.rekman
Change 3529060 by Rolando.Caloca
DR - hlslcc - New flag for keeping resource names
Change 3529344 by Rolando.Caloca
DR - Delete unused file
Change 3529723 by Brian.Karis
Fixed static analysis cleaner.
Change 3531357 by Michael.Trepka
Updated Mac glslang libraries with latest changes. Also, updated the Xcode project (generated with CMake) and moved it to a different location so that it no longer uses hardcoded absolute paths. It should be easy to rebuild these libraries in the future.
Change 3531517 by Joe.Graf
Added support for ddx_fine, ddy_fine, ddx_coarse, ddy_coarse to hlslcc
#CodeReview: arciel.rekman, mark.satterthwaite, rolando.caloca
Change 3531626 by Joe.Graf
Mac version of the popcount optimization
Changed Linux version to use the same builtin
#CodeReview: mark.satterthwaite, arciel.rekman
Change 3531837 by Chris.Bunner
SetScissorRectIfRequiredWhenSettingViewport sets the viewport size by default rather than disabling the scissor rect.
#jra UE-46753
Change 3533415 by Joe.Graf
Renamed the SSSE3 checks per feedback
#CodeReview: arciel.rekman
Change 3533480 by Michael.Lentine
Use more accurate descriptions for shader recompile options
Change 3533511 by Joe.Graf
Updated the GenericPlatformMisc to match the SSSE3 name change
#CodeReview: arciel.rekman
Change 3533521 by Marcus.Wassmer
Fix scenerenderer leak when updating out of view planar reflections
Change 3533528 by Joe.Graf
Updated comments
#CodeReview: n/a
Change 3533608 by Mark.Satterthwaite
New manual Xcode project for glslang so that we include all the necessary code and can link again.
Change 3534260 by Mark.Satterthwaite
Fix the Xcode 9 Beta 3 compile errors in MetalRHI without breaking Xcode 8.3.3.
Change 3535789 by Yujiang.Wang
Fix for wrong hair shading in forward shading
* IBL reflections should be turned off for hairs
Change 3537059 by Ben.Marsh
Fixing case of iOS directories, pt1
Change 3537060 by Ben.Marsh
Fixing case of iOS directories, pt2
Change 3538297 by Michael.Lentine
Add shader comparison test.
Adding the basic test case.
Adding logic to Common.ush to enable FP16 conditionally on a define (which is not set by default)
Adding more exported functionality to automation for use in the shader test.
Change 3538309 by Michael.Lentine
Add missing file from Shader Test CL.
Change 3538751 by Michael.Lentine
Add missing pragma once.
Change 3539236 by Michael.Lentine
Do not ignore return values.
Change 3539237 by Michael.Lentine
Check in the correct file
Change 3540343 by Rolando.Caloca
DR - Added t.DumpHitches.AllThreads
Change 3540661 by Yujiang.Wang
Fix spot tube light direction
* The tube direction for a spot light was pointing along the light direction, now it is along the local Z axis which is perpendicular to the light direction. Lightmass is also touched
* A new LightTangent is added to FDeferredLightData
* Packed all the values from LightSceneProxy->GetParameters into a single FLightParameters struct to avoid copy-pasting them everywhere
Change 3541129 by Rolando.Caloca
DR - vk - Copy all Vulkan fixes from 4.17
Change 3541347 by Yujiang.Wang
Fix wrong ViewFlags being set between objects when rendering shadow depth maps
* Bug caused by trying to share DrawRenderState between objects, but SetViewFlagsForShadowPass was designed to start from a fresh render state
* Now SetViewFlagsForShadowPass recalculates and sets the flags on each call
Change 3542603 by Rolando.Caloca
DR - vk - Allow sharing samplers on Vulkan
Change 3542639 by Jian.Ru
Changed warning text to better indicate that global clip plane needs to be enabled for planar reflection
#RB Marcus.Wassmer
Change 3543167 by Michael.Lentine
Fix naming for the shader comparison tests.
Change 3543210 by Uriel.Doyon
Fixed an issue when computing material scales where the default material ends up being used instead of the required material.
In that case, we used the default settings for texture streaming (assuming a scale of 1).
Change 3543221 by Brian.Karis
Simplifier optimizations
Change 3543239 by Arciel.Rekman
hlslcc: remove FCustomStd* workarounds.
- This was previous attempt to work around problems arising from different STL used for building libhlslcc (in the cross-toolchain) and possibly different STL used for building engine (on the system).
- The same problem has been resolved by bundling libc++.
Change 3543946 by Michael.Lentine
Add comparison output.
Change 3544277 by Brian.Karis
Fixed uninitialized var error
Change 3544404 by Rolando.Caloca
DR - Fix broken textures
Change 3544503 by Jian.Ru
Ensure lighting failure delegates are always called
#RB Marcus.Wassmer,Daniel.Wright
#3689
Change 3545241 by Daniel.Wright
Fixed spotlight whole scene shadows using a radius 2x too long
Change 3545347 by Daniel.Wright
Fixed shadow occlusion culling broken by shadowmap caching change. FProjectedShadowKey is now computed correctly for whole scene shadows and SDCM_StaticPrimitivesOnly shadowmaps will fall back to the query for a SDCM_MovablePrimitivesOnly, since the static primitives shadowmap's query is not issued every frame.
Change 3546196 by Marcus.Wassmer
Fix minor typo
Change 3546459 by Daniel.Wright
ULevel::PostEditChangeProperty recreates rendering resources if MapBuildData is modified - fixes a crash when Force Deleting the MapBuildData package.
Change 3546469 by Jian.Ru
Take into account CVarStaticMeshLODDistanceScale during static mesh LOD calculation
Change 3546804 by Daniel.Wright
[Copy] Added SendAllEndOfFrameUpdates draw event to wrap skin cache events
Change 3546814 by Daniel.Wright
[Copy] Only use skylight OcclusionMaxDistance for the global distance field if it casts shadows
Change 3546815 by Daniel.Wright
[Copy] Snap volumetric fog light function target resolution to a factor of 32 to avoid constant texture reallocation
Change 3546817 by Daniel.Wright
[Copy] Warmup time warning
Change 3546828 by Daniel.Wright
[Copy] Fixed UWorld::DestroyActor in PIE calling InvalidateLightingCacheDetailed which can do a FlushRenderingCommands and cause a large hitch
Change 3546836 by Daniel.Wright
[Copy] ULightComponent::InvalidateLightingCacheInner uses MarkRenderStateDirty instead of slow reregister + FlushRendingCommands, and only for lights which might have static lighting data
Change 3546849 by Rolando.Caloca
DR - vk - Fix missing samplerstates
- Fixes for structured buffers
- Add missing Draw and Dispatch Indirect
Change 3547516 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547542 by Brian.Karis
Linear time 5-coloring for planar graphs.
Brought in the Planarity library written by John Boyer, heavily edited and trimmed down to only include code necesary for graph coloring. Put behind a simple wrapper.
Change 3547563 by Brian.Karis
Fixed some compiler warnings and hopefully some errors.
Change 3547610 by Brian.Karis
Replaced macros with inlined functions
Change 3547620 by Brian.Karis
Clean up includes
Change 3547770 by Marcus.Wassmer
GPU Crash for MTBF analytics
Change 3547773 by Marcus.Wassmer
Updated doxygen comment for new analytic
Change 3548244 by Rolando.Caloca
DR - Fix for translucency
Change 3548352 by Yujiang.Wang
Added soft source radius for point and spot lights
* Soft source radius controls how 'blurry' the shape of specular lighting looks
* Implemented by LobeRoughness modification
* Better approximation for spherical lights so that they don't look sharp when the radius is large using 'smoothed representative point' method
* Suppoted LightTangent in forward shading
Change 3548530 by Brian.Karis
Fix for mac build
Change 3548770 by Rolando.Caloca
DR - vk - Prereq work for Vulkan parallel RHI contexts
Change 3548772 by Jian.Ru
Fixed an issue that caused an ensure when switching levels in D3D10. #rb Marcus.Wassmer
Change 3548865 by Daniel.Wright
With shadowmap caching of whole scene shadows, only one of the cache modes issues an occlusion query. Fixes a crash where the static primitive shadowmap is culled but the movable primitive shadowmap is visible, which is normally not possible.
Change 3548952 by Rolando.Caloca
DR - Allow separate samplers in the shaders on Vulkan
Change 3549197 by Marcus.Wassmer
Fix DX12 PIx not working in cooked builds
Change 3549209 by Daniel.Wright
Occlusion culling for CSM, from the main camera, controlled by 'r.Shadow.OcclusionCullCascadedShadowMaps'. Disabled by default as rapid view changes don't work well with latent occlusion queries.
Change 3549943 by Ben.Marsh
Include better diagnostic information when a modified build product is detected after running a build step.
Change 3550546 by Rolando.Caloca
DR - Fix merge issue
Change 3550962 by Marcus.Wassmer
EarlyZ Masking requires full depth prepass, so just force it to.
Change 3551062 by Daniel.Wright
Handle NULL skylight
Change 3551104 by Rolando.Caloca
DR - vk - Remove assert to match other platforms
Change 3551221 by Rolando.Caloca
DR - vk - Add mirror clamp to edge extension
- Fix framebuffer deletion
Change 3551224 by Daniel.Wright
Volumetric lightmap increase density around static lights affecting a voxel brighter than LightBrightnessSubdivideThreshold.
Change 3551495 by Rolando.Caloca
DR - vk - Intiial support for async queue
Change 3552101 by Rolando.Caloca
DR - vk - Fix for async
Change 3552102 by Rolando.Caloca
DR - SkinCache - Fix potential leak on staging buffers for recompute tangents
- Integrate changes from 4.17 for memory optimizations
Change 3552104 by Rolando.Caloca
DR - vk - Support for SRVs for index buffers
Change 3552838 by Rolando.Caloca
DR - vk - Enable debug markers if found
Change 3553106 by Rolando.Caloca
DR - vk - Fixes for index buffer SRVs
Change 3553107 by Rolando.Caloca
DR - vk - Enable recompute tangents on Vulkan
Change 3553154 by Rolando.Caloca
DR - vk - Fix crash with null uav
Change 3553342 by Yujiang.Wang
Fix redundant skylights in AdvancedPreviewScene
* PreviewScene was changed to using a skylight instead of ambient cubemap to support forward shading
* AdvancedPreviewScene originally had a skylight, now it is changed to using the one inherited from PreviewScene
Change 3553481 by Rolando.Caloca
DR - Integrate fix for D3D12 support of index buffers SRVs
#jira UE-47674
Change 3553715 by Rolando.Caloca
DR - Fix crash when launching PC with -featureleveles31
Change 3553725 by Rolando.Caloca
DR - Redo fix
Change 3553803 by Rolando.Caloca
DR - Shader compile fixes for ES3.1
Change 3553963 by Rolando.Caloca
DR - vk - Remove extra IRDump
Change 3554741 by Ben.Marsh
CIS fix.
Change 3555222 by Rolando.Caloca
DR - vk - static analysis fix
Change 3555362 by Rolando.Caloca
DR - vk - Prep work for separate present queue
Change 3556800 by Daniel.Wright
Fixed screenshot for simple volume material doc
Change 3556942 by Brian.Karis
Fixed Bokeh DOF regression.
Change 3556959 by Rolando.Caloca
DR - vk - Rework staging buffer peak usage
Change 3557497 by Daniel.Wright
Better display name for Unbound property on post process volume
Change 3557499 by Daniel.Wright
Disable r.GenerateLandscapeGIData by default, opt-in for kite demo. Projects that want to use heightfield GI need to opt-in to r.GenerateLandscapeGIData.
Change 3557068 by Olaf.Piesche
Configurable spawn rate scaling reference value; sets the zero-scale reference value (default: 2), so additional quality levels can be added and scaling customized further.
IMPORTANT: This sets the reference to 3 in PS4Scalability.ini; effects on PS4 are again going to have reduced spawn rates versus PC and Neo, as intended by the FX artists starting with this change.
#tests QAGame test maps
Change 3558123 by Rolando.Caloca
DR - vk - static analysis fix
Change 3558685 by Yujiang.Wang
Github #3323: Two sided foliage lightmap directionality fix
* Subsurface is not intended to work with lightmaps that don't have directionality, however we still want it to look similar to a directional one
* Now it uses a constant directionality value
#jira UE-42523
Change 3559052 by Brian.Karis
Hopefully fix static analysis
Change 3559113 by Rolando.Caloca
DR - Fix crash witrh planar reflections
Change 3559275 by Yujiang.Wang
Fix race condition on several scalability CVars between rendering thread and game thread
Change 3559612 by Rolando.Caloca
DR - vk - SM5 with uniform buffers backend support
Change 3559716 by Rolando.Caloca
DR - hlslcc - Fix linker warning on SCW debug
Change 3559768 by Rolando.Caloca
DR - vk - Keep ub names for bindings
Change 3560195 by Rolando.Caloca
DR - accessor
Change 3560275 by Rolando.Caloca
DR - vk - Support for uniform buffers
Change 3560913 by Rolando.Caloca
DR - vk - Fix static analysis
Change 3561145 by Rolando.Caloca
DR - Don't crash if out of resource table bits
Change 3561194 by Rolando.Caloca
DR - vk - Integrate timestamp fixes
Change 3562009 by Rolando.Caloca
DR - vk - Workaround for bad UTexture data
Change 3563884 by Chris.Bunner
VK_NULL_HANDLE fix.
Change 3563885 by Jian.Ru
Ignore a warning caused by enabling distance field generation so that test Cube_Blue and Cube_Section don't fail. #rb Chris.Bunner
Change 3565943 by Jian.Ru
Add extra warning log triggered when attempt to create FRWBuffer greater than 256MB in ComputeLightGrid() #rb Chris.Bunner
Change 3569479 by Michael.Lentine
Integrate rhino shader changes to dev-rendering
Change 3569511 by Michael.Lentine
Fix formating and string out on windows.
Change 3569572 by Yujiang.Wang
Fix MeasureLongGPUTaskExecutionTime crashing on AMD on Macs
Change 3569614 by Yujiang.Wang
Flush rendering commands before measuring the long GPU task's excution time to get accurate results
Change 3570524 by Jian.Ru
Add extra parentheses to avoid compilation warning #rb Chris.Bunner
Change 3570722 by Chris.Bunner
Static analysis workaround - same code, just validating compile-time assumptions a little further.
Change 3570880 by Jian.Ru
Add small depth offset to avoid depth test failing during velocity pass
#jira UE-37556
Change 3572532 by Jian.Ru
Disable a warning to let tests pass
#jira UE-48021
Change 3573109 by Michael.Lentine
Checkin Michael.Trepka's fix for external dynamic libraries on mac.
This is needed to make the build go green on mac.
Change 3573995 by Jian.Ru
Move an include out of define to let nightly build pass
Change 3574777 by Chris.Bunner
Continued merge fixes.
Change 3574792 by Rolando.Caloca
DR - Rename todo
Change 3574794 by Chris.Bunner
Re-adding includes lost in a pre-merge merge.
Change 3574879 by Michael.Trepka
Disabled a couple of Mac deprecation warnings
Change 3574932 by Chris.Bunner
Merge fix.
Change 3575048 by Michael.Trepka
Fixed iOS compile warnings
Change 3575530 by Chris.Bunner
Duplicating static analysis fix CL 3539836.
Change 3575582 by Chris.Bunner
Fixed GetDimensions return type in depth resolve shaders.
Compile error fix.
Change 3576326 by Chris.Bunner
Static analysis fixes.
Change 3576513 by Michael.Trepka
Updated Mac MCPP lib to be compatible with OS X 10.9
Change 3576555 by Richard.Wallis
Metal Validation Errors. Dummy black volume texture is in the wrong format in the Metal shader for the VolumetricLightmapIndirectionTexture. Create a new dummy texture with pixel format PF_R8G8B8A8_UINT.
#jira UE-47549
Change 3576562 by Chris.Bunner
OpenGL SetStreamSource stride updates.
Change 3576589 by Michael.Trepka
Fixed Mac CIS warnings and errors in Dev-Rendering
Change 3576708 by Jian.Ru
Fix cascade preview viewport background color not changing
#jira UE-39687
Change 3576827 by Rolando.Caloca
DR - Minor fix for licensee
Change 3576973 by Chris.Bunner
Fixing up HLSLCC language spec mismatch (potential shader compile crashes in GL and Vulkan).
Change 3577729 by Rolando.Caloca
DR - Fix for info on SCW crashes
Change 3578723 by Chris.Bunner
Fixed issue where custom material attribute was using display name as hlsl function name.
Change 3578797 by Chris.Bunner
Fixed pixel inspector crashing on high-precision normals gbuffer format.
#jira UE-48094
Change 3578815 by Yujiang.Wang
Fix for UE-48207 Orion cooked windows server crash on startup
* Crash caused by rendering features not available in a dedicated server build
* Skip over MeasureLongGPUTaskExecutionTime when !FApp::CanEvenRender()
#jira UE-48207
Change 3578828 by Daniel.Wright
Disable volumetric lightmap 3d texture creation on mobile
Change 3579473 by Daniel.Wright
Added View.SharedBilinearClampSampler and View.SharedBilinearWrapSampler. Used these to reduce base pass sampler counts with volumetric lightmaps.
Change 3580088 by Jian.Ru
Fix QAGame TM-CharacterMovement crashing on PIE
#jira UE-48031
Change 3580388 by Daniel.Wright
Fixed shadowed light injection into volumetric fog fallout from Rhino merge
Change 3580407 by Michael.Trepka
Updated Mac UnrealPak binaries
Change 3581094 by Michael.Trepka
Fix for ScreenSpaceReflections not working properly on iOS 11
Change 3581242 by Michael.Trepka
Fixed a crash on startup on Mac when launching TM-ShaderModels in QAGame
#jira UE-48255
Change 3581489 by Olaf.Piesche
Replicating CL 3578030 from Fortnite-Main to fix #jira UE-46475
#jira FORT-47068, FORT-49705
Don't inappropriaely touch game thread data on the render thread. Push SubUV cutout data into a RT side object owned by the sprite dynamic data.
#tests FN LastPerfTest
Change 3581544 by Simon.Tovey
Fix for ensure accessing cvar from task thread.
#tests no more ensure
Change 3581934 by Chris.Bunner
Fixed ConsoleVariables.ini break from merge.
Change 3581968 by Jian.Ru
Fix QAGame TM-ShaderModels PIE crash when resizing game viewport
#jira UE-48251
Change 3581989 by Richard.Wallis
Fix for NULL PrecomputedLightingBuffer. It is null for first frame request in forward rendering so should have the GEmptyPrecomputedLightingUniformBuffer set in these cases after it's been initially tried to be set not before.
#jira UE-46955
Change 3582632 by Chris.Bunner
Resolved merge error.
Change 3582722 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on GL
#jira UE-48208
Change 3584096 by Rolando.Caloca
DR - Fix for renderdoc crashing in shipping
#jira UE-46867
Change 3584245 by Jian.Ru
Fix System.Promotion.Editor.Particle Editor test crash
#jira UE-48235
Change 3584359 by Yujiang.Wang
Fix for UE-48315 Wall behind base in Monolith is flickering white in -game Orion
* Caused by dot(N, V) being negative
* Clamp to (0, 1)
#jira UE-48315
Change 3587864 by Mark.Satterthwaite
Fix the GPU hang on iOS caused by changes to the Depth-Stencil MSAA handling: you can't store the MSAA stencil results on iOS < 10 unless you use the slower MTLStoreActionStoreAndMultisampleResolve which we don't need for the mobile renderer.
#jira UE-48342
Change 3587866 by Mark.Satterthwaite
Correctly fix iOS compilation errors against Xcode 9 Beta 5 and Xcode 8.3.3 - duplicating function definitions is guaranteed to be wrong.
Change 3588168 by Mark.Satterthwaite
Move the Xcode version into the Metal shader format header, not the DDC key, so that we can handle bad compiler/driver combinations in the runtime and don't force all users to recompile every time the Xcode version changes.
Change 3588192 by Rolando.Caloca
DR - Fix d3d12 linker error when EXECUTE_DEBUG_COMMAND_LISTS is enabled
Change 3588291 by Rolando.Caloca
DR - Fix for d3d12 command list crash: Commited resources can not have aliasing barriers
#jira UE-48299
Change 3590134 by Michael.Trepka
Copy of CL 3578963
Reset automation tests timer after shader compilation when preparing for screenshots taking to make sure tests don't time out.
Change 3590405 by Rolando.Caloca
DR - hlslcc - support for sqrt(uint)
Change 3590436 by Mark.Satterthwaite
Rebuild Mac hlslcc for CL #3590405 - without the various compiler workarounds left over from before the recent code changes.
Change 3590674 by Rolando.Caloca
DR - vk - Integration from working branch
- Fixes distance field maps
- Compute pipelines stored in saved file
- Adds GRHIRequiresRenderTargetForPixelShaderUAVs for platforms that need dummy render targets
Change 3590699 by Rolando.Caloca
DR - Fix distance fields mem leak
Change 3590815 by Rolando.Caloca
DR - vk - Fixes for uniform buffers and empty resource tables
Change 3590818 by Mark.Satterthwaite
Temporarily switch back to OpenVR v1.0.6 for Mac only until I can clarify what to do about a required but missing API hook for Metal. Re-enabled and fixed compile errors with Mac SteamVR plugin code.
Change 3590905 by Mark.Satterthwaite
For Metal shader compilation where the bytecode compiler is unavailable force the debug compiler flag and disable the archiving flag because storing text requires this.
#jira UE-48163
Change 3590961 by Mark.Satterthwaite
Submitted on Richard Wallis's behalf as he's on holiday:
Mac fixes for Compute Skin Cache rendering issues (resulting in incorrect positions and tangents) and for recomputing tangents. Problem sampling from buffers/textures as floats with packed data. Some of the data appears as denorms so get flushed to zero then reinterpreted as uints via asuint or in Metal as_type<uint>(). Fix here for Metal seems to be to use uint types for the skin cache SRV's and as_type<> to floats instead.
There could be some other areas where we're unpacking via floats that could affect Metal and I'm not sure how this will impact on other platforms.
#jira UE-46688, UE-39256, UE-47215
Change 3590965 by Mark.Satterthwaite
Remove the Z-bias workaround from Metal MRT as it isn't required and actually causes more problems.
Change 3590969 by Mark.Satterthwaite
Make all Metal shader platforms compile such that half may be used, unless the material specifies full precision.
Change 3591871 by Rolando.Caloca
DR - Enable PCSS on Vulkan & Metal
- Enable capsule shadows on Vulkan
Change 3592014 by Mark.Satterthwaite
Remove support for Mac OS X El Capitan (10.11) including the stencil view workaround.
Bump the minimum Metal shader standard for Metal SM4, SM5 & Metal MRT to v1.2 (macOS 10.12 Sierra & iOS 10) so we can use FMAs and other newer shader language features globally.
Enable the new GRHIRequiresRenderTargetForPixelShaderUAVs flag as Metal is like Vulkan and needs a target for fragment rendering.
Also fix the filename for direct-compile & remove the old batch file generation in the Metal shader compiler.
Change 3592171 by Rolando.Caloca
DR - CIS fix
Change 3592753 by Jian.Ru
repeat Daniel's fix on xb1 profilegpu crash (draw events cannot live beyond present)
Change 3594595 by Rolando.Caloca
DR - Fix D3D shader compiling run time stack corruption failure on debug triggering falsely
Change 3594794 by Michael.Trepka
Call FPlatformMisc::PumpMessages() before attempting to toggle fullscreen on Mac to fix an issue on some Macs running 10.13 beta that would ignore the toggle fullscreen call freezing the app
Change 3594999 by Mark.Satterthwaite
Disable MallocBinned2 for iOS as on Rhino it worked but on iOS 10.0.2 there are bugs (munmap uses 64kb granularity, not the 4096 the code expects given the reported page-size).
While we are here remove the spurious FORCE_MALLOC_ANSI from the iOS platform header.
#jira UE-48342
Change 3595004 by Mark.Satterthwaite
Disable Metal's Deferred Store Actions and combined Depth/Stencil formats on iOS < 10.3 as there are bugs on earlier versions of iOS 10.
#jira UE-48342
Change 3595386 by Mark.Satterthwaite
Silence the deprecation warning for kIOSurfaceIsGlobal until SteamVR switches to one of the newer IOSurface sharing mechanisms.
Change 3595394 by Rolando.Caloca
DR - Added function for tracking down errors in the hlsl parser
- Added support for simple #if 0...#endif
Change 3599352 by Rolando.Caloca
DR - Fixes for HlslParser
- Added missing attributes for functions
- Fixed nested assignment
Change 3602440 by Michael.Trepka
Fixed Metal shader compilation from Windows with remote compilation disabled
#jira UE-48163
Change 3602898 by Chris.Bunner
Resaving assets.
Change 3603731 by Jian.Ru
fix a crash caused by a material destroyed before the decal component
#jira UE-48587
Change 3604629 by Rolando.Caloca
DR - Workaround for PF_R8G8B8A8_UINT on Android
#jira UE-48208
Change 3604984 by Peter.Sauerbrei
fix for orientation not being limited to that specified in the plist
#jira UE-48360
Change 3605738 by Chris.Bunner
Allow functional screenshot tests to request a camera cut (e.g. tests relying on temporal aa history).
#jira UE-48748
Change 3606009 by Mark.Satterthwaite
Correctly implement ClipDistance for Metal as an array of floats as required by the spec. and fix a few irritating issues from the merge that should not have.
- When compiling a tessellation vertex shader in the SCW direct mode we can't evaluate non-existant defines and we don't actually need to.
- The define names, values & shader file name are irrelevant to the Metal output key, but the shader format name & Metal standard really do matter - should speed up Metal shader compilation a bit.
- Move the shader vertex layer clip-distance to index 2 to avoid conflicts.
- Don't default initialise the debug code string for Metal shaders or it won't print out the actual code....
#jira UE-47663
Change 3606108 by Mark.Satterthwaite
Temporary hack to avoid a crash in AVPlayer.
#jira UE-48758
Change 3606121 by Mark.Satterthwaite
Fix Windows compilation.
Change 3606992 by Chris.Bunner
Static analysis fix.
[CL 3608256 by Marcus Wassmer in Main branch]
2017-08-24 15:38:57 -04:00
{
for ( const auto & Error : Output . Errors )
{
2020-10-29 13:38:15 -04:00
FPlatformMisc : : LowLevelOutputDebugStringf ( TEXT ( " %s \n " ) , * Error . GetErrorStringWithLineMarker ( ) ) ;
2016-03-16 21:16:51 -04:00
}
2019-03-07 09:13:39 -05:00
ensure ( bSuccess ) ;
2016-03-16 21:16:51 -04:00
}
}
2023-08-01 11:03:24 -04:00
void OutputVulkanDebugData ( const FShaderCompilerInput & Input , const FShaderPreprocessOutput & PreprocessOutput , const FShaderCompilerOutput & Output )
{
UE : : ShaderCompilerCommon : : DumpExtendedDebugShaderData ( Input , PreprocessOutput , Output ) ;
}