diff --git a/Engine/Build/Commit.gitdeps.xml b/Engine/Build/Commit.gitdeps.xml index ae928cb010f2..9dc0f314c6f1 100644 --- a/Engine/Build/Commit.gitdeps.xml +++ b/Engine/Build/Commit.gitdeps.xml @@ -35915,7 +35915,7 @@ - + @@ -61315,6 +61315,7 @@ + @@ -67730,7 +67731,7 @@ - + @@ -67891,7 +67892,7 @@ - + @@ -72139,7 +72140,7 @@ - + @@ -72265,7 +72266,7 @@ - + @@ -75235,7 +75236,7 @@ - + @@ -76595,7 +76596,7 @@ - + @@ -77372,7 +77373,7 @@ - + @@ -78259,7 +78260,7 @@ - + @@ -80449,7 +80450,7 @@ - + @@ -81523,7 +81524,7 @@ - + @@ -84466,7 +84467,7 @@ - + @@ -87816,7 +87817,7 @@ - + @@ -90977,7 +90978,7 @@ - + @@ -93645,7 +93646,7 @@ - + @@ -96514,7 +96515,6 @@ - @@ -96771,7 +96771,7 @@ - + @@ -100563,7 +100563,7 @@ - + @@ -101182,6 +101182,7 @@ + @@ -101542,6 +101543,7 @@ + @@ -102148,6 +102150,7 @@ + @@ -102211,7 +102214,6 @@ - @@ -102243,7 +102245,6 @@ - @@ -103790,7 +103791,6 @@ - diff --git a/Engine/Build/SNDBSTemplates/clang++.exe.sn-dbs-tool.ini b/Engine/Build/SNDBSTemplates/clang++.exe.sn-dbs-tool.ini new file mode 100644 index 000000000000..810e012ef2b7 --- /dev/null +++ b/Engine/Build/SNDBSTemplates/clang++.exe.sn-dbs-tool.ini @@ -0,0 +1,28 @@ +[tool] +family=clang-cl +include_path01=..\include +include_path02=..\include\c++\v1 +include_path03=..\lib\clang\*\include + +[files] +main=clang++.exe +file01=clang-shared.dll +file02=libclang.dll +file03=NXMangledNamePrinter.dll +file04=..\lib\* + +[output-file-patterns] +outputfile01=\s*"([^ ",]+\.cpp\.txt)\" + +[output-file-rules] +rule01=*.log|discard=true +rule02=*.dat|discard=true +rule03=*.tmp|discard=true + +[system-file-filters] +filter01=msvcr*.dll +filter02=msvcp*.dll +filter03=vcruntime140*.dll +filter04=appcrt140*.dll +filter05=desktopcrt140*.dll +filter06=concrt140*.dll \ No newline at end of file diff --git a/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/InputDevice.cpp b/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/InputDevice.cpp index 4ff08e0c01fd..5f092c3ec47c 100644 --- a/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/InputDevice.cpp +++ b/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/InputDevice.cpp @@ -36,8 +36,6 @@ class FCursor : public ICursor public: FCursor() {} virtual ~FCursor() = default; - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override { return nullptr; } - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override { return nullptr; } virtual FVector2D GetPosition() const override { return Position; } virtual void SetPosition(const int32 X, const int32 Y) override { Position = FVector2D(X, Y); }; virtual void SetType(const EMouseCursor::Type InNewCursor) override {}; diff --git a/Engine/Source/Developer/AutomationDriver/Private/AutomatedApplication.cpp b/Engine/Source/Developer/AutomationDriver/Private/AutomatedApplication.cpp index 7f853fa875f1..3ed21c3745c1 100644 --- a/Engine/Source/Developer/AutomationDriver/Private/AutomatedApplication.cpp +++ b/Engine/Source/Developer/AutomationDriver/Private/AutomatedApplication.cpp @@ -13,16 +13,6 @@ public: virtual ~FAutomatedCursor() { } - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override - { - return nullptr; - } - - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override - { - return nullptr; - } - virtual FVector2D GetPosition() const override { if (bAllowMessageHandling) diff --git a/Engine/Source/Programs/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs b/Engine/Source/Programs/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs index 2623a201c544..fcbb2d708450 100644 --- a/Engine/Source/Programs/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs +++ b/Engine/Source/Programs/AutomationTool/Scripts/CopyBuildToStagingDirectory.Automation.cs @@ -3481,6 +3481,8 @@ public partial class Project : CommandUtils // clean the staging directories first foreach (var SC in DeployContextList) { + SC.StageTargetPlatform.PreStage(Params, SC); + // write out the commandline file now so it can go into the manifest WriteStageCommandline(Params, SC); CreateStagingManifest(Params, SC); diff --git a/Engine/Source/Programs/UnrealBuildTool/Executors/SNDBS.cs b/Engine/Source/Programs/UnrealBuildTool/Executors/SNDBS.cs index 15391c713cc1..7f28aab4aae4 100644 --- a/Engine/Source/Programs/UnrealBuildTool/Executors/SNDBS.cs +++ b/Engine/Source/Programs/UnrealBuildTool/Executors/SNDBS.cs @@ -237,13 +237,15 @@ namespace UnrealBuildTool { // Create a dummy force-included file which references PCH files, so that SN-DBS knows they are dependencies. string AdditionalStubIncludes = ""; - if (Action.CommandPath.GetFileName().Equals("cl.exe", StringComparison.OrdinalIgnoreCase)) + if (Action.CommandPath.GetFileName().Equals("cl.exe", StringComparison.OrdinalIgnoreCase) || Action.CommandPath.GetFileName().Equals("cl-filter.exe", StringComparison.OrdinalIgnoreCase)) { - string ResponseFile = Action.CommandArguments.Replace("\"", "").Replace("@", "").Trim(); + string DummyPCHIncludeFile = Action.DependencyListFile.AbsolutePath.Replace("\"", "").Replace("@", "").Trim(); + DummyPCHIncludeFile = Path.ChangeExtension(DummyPCHIncludeFile, null); + StringBuilder WrapperContents = new StringBuilder(); using (StringWriter Writer = new StringWriter(WrapperContents)) { - Writer.WriteLine("// PCH dependencies for {0}", ResponseFile); + Writer.WriteLine("// PCH dependencies for {0}", DummyPCHIncludeFile); Writer.WriteLine("#if 0"); foreach (FileItem Preqrequisite in Action.PrerequisiteItems) { @@ -255,8 +257,8 @@ namespace UnrealBuildTool Writer.WriteLine("#endif"); } - FileItem DummyResponseFileDependency = FileItem.CreateIntermediateTextFile(new FileReference(ResponseFile + ".dummy.h"), WrapperContents.ToString()); - AdditionalStubIncludes = string.Format("/FI\"{0}\"", DummyResponseFileDependency); + FileItem DummyPCHIncludeFileDependency = FileItem.CreateIntermediateTextFile(new FileReference(DummyPCHIncludeFile + ".dummy.h"), WrapperContents.ToString()); + AdditionalStubIncludes = string.Format("/FI\"{0}\"", DummyPCHIncludeFileDependency); } // Add to script for execution by SN-DBS @@ -536,6 +538,11 @@ namespace UnrealBuildTool IEnumerable PlatformExpansions = PlatformNames.Select(p => String.Format("$1/{0}/{0}$2|$1/{0}$2", p)); IncludeRewriteRulesText.Add(String.Format("expansions2={0}", String.Join("|", PlatformExpansions))); } + { + IncludeRewriteRulesText.Add(@"pattern3=ULANG_STRINGIFY\(\s*(\S*)ULANG_PLATFORM/ULANG_PLATFORM(\S*)\s*\)"); + IEnumerable PlatformExpansions = PlatformNames.Select(p => String.Format("$1{0}/{0}$2", p)); + IncludeRewriteRulesText.Add(String.Format("expansions3={0}", String.Join("|", PlatformExpansions))); + } File.WriteAllText(IncludeRewriteRulesFile.FullName, String.Join(Environment.NewLine, IncludeRewriteRulesText)); } } diff --git a/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/VCToolChain.cs b/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/VCToolChain.cs index 45223194ae88..c0ede7ca201a 100644 --- a/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/VCToolChain.cs +++ b/Engine/Source/Programs/UnrealBuildTool/Platform/Windows/VCToolChain.cs @@ -1292,7 +1292,8 @@ namespace UnrealBuildTool // Resource tool can run remotely if possible CompileAction.bCanExecuteRemotely = true; - + CompileAction.bCanExecuteRemotelyWithSNDBS = false; // no tool template for SN-DBS results in warnings + List Arguments = new List(); // Suppress header spew @@ -1333,7 +1334,7 @@ namespace UnrealBuildTool } } - // Figure the icon to use. We can only use a custom icon when compiling to a project-specific intemediate directory (and not for the shared editor executable, for example). + // Figure the icon to use. We can only use a custom icon when compiling to a project-specific intermediate directory (and not for the shared editor executable, for example). FileReference IconFile; if(Target.ProjectFile != null && !CompileEnvironment.bUseSharedBuildEnvironment) { diff --git a/Engine/Source/Programs/UnrealBuildTool/System/Action.cs b/Engine/Source/Programs/UnrealBuildTool/System/Action.cs index fc0b13d0ee98..a67ecf843c76 100644 --- a/Engine/Source/Programs/UnrealBuildTool/System/Action.cs +++ b/Engine/Source/Programs/UnrealBuildTool/System/Action.cs @@ -168,6 +168,12 @@ namespace UnrealBuildTool public Action(ActionType InActionType) { ActionType = InActionType; + + // link actions are going to run locally on SN-DBS so don't try to distribute them as that generates warnings for missing tool templates + if ( ActionType == ActionType.Link ) + { + bCanExecuteRemotelyWithSNDBS = false; + } } public Action(BinaryArchiveReader Reader) diff --git a/Engine/Source/Runtime/ApplicationCore/Private/Linux/LinuxCursor.cpp b/Engine/Source/Runtime/ApplicationCore/Private/Linux/LinuxCursor.cpp index e33feab1094d..ce5fb49f4df5 100644 --- a/Engine/Source/Runtime/ApplicationCore/Private/Linux/LinuxCursor.cpp +++ b/Engine/Source/Runtime/ApplicationCore/Private/Linux/LinuxCursor.cpp @@ -172,11 +172,6 @@ FLinuxCursor::~FLinuxCursor() } } -void* FLinuxCursor::CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) -{ - return nullptr; -} - void* FLinuxCursor::CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) { uint32 Rmask = 0x000000ff; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/Android/AndroidCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/Android/AndroidCursor.h index 623e5b1f7b88..ea5eb6967b43 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/Android/AndroidCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/Android/AndroidCursor.h @@ -15,16 +15,6 @@ public: { } - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override - { - return nullptr; - } - - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override - { - return nullptr; - } - virtual FVector2D GetPosition() const override { return CurrentPosition; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/GenericPlatformSoftwareCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/GenericPlatformSoftwareCursor.h index f9feecda4d23..d6ae0db18b7f 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/GenericPlatformSoftwareCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/GenericPlatformSoftwareCursor.h @@ -18,16 +18,6 @@ public: { } - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override - { - return nullptr; - } - - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override - { - return nullptr; - } - virtual FVector2D GetPosition() const override { return CurrentPosition; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/ICursor.h b/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/ICursor.h index 520f0d63a67a..34ea14fff297 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/ICursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/GenericPlatform/ICursor.h @@ -69,11 +69,14 @@ namespace EMouseCursor class ICursor { public: - /** Creates a hardware cursor from file. Can return nullptr when not availbale. */ - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) = 0; + /** Creates a hardware cursor from file. Can return nullptr when not available. */ + virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) { return nullptr; } + + /** Is CreateCursorFromRGBABuffer() supported by this cursor? */ + virtual bool IsCreateCursorFromRGBABufferSupported() const { return false; } /** Creates a hardware cursor from bitmap data. Can return nullptr when not available. */ - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) = 0; + virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) { return nullptr; } /** The position of the cursor */ virtual FVector2D GetPosition() const = 0; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/HoloLens/HoloLensCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/HoloLens/HoloLensCursor.h index 5632fabc3c3d..a24f5e29cce4 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/HoloLens/HoloLensCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/HoloLens/HoloLensCursor.h @@ -58,17 +58,6 @@ public: */ void SetTypeShape(EMouseCursor::Type InCursorType, void* CursorHandle); - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override - { - return nullptr; - } - - /** Creates a hardware cursor from bitmap data. Can return nullptr when not available. */ - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override - { - return nullptr; - } - private: void SetUseRawMouse(bool bUse); diff --git a/Engine/Source/Runtime/ApplicationCore/Public/IOS/IOSCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/IOS/IOSCursor.h index bf89d0c90892..92e1b1d13ea8 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/IOS/IOSCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/IOS/IOSCursor.h @@ -15,16 +15,6 @@ public: { } - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override - { - return nullptr; - } - - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override - { - return nullptr; - } - virtual FVector2D GetPosition() const override { return CurrentPosition; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/Linux/LinuxCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/Linux/LinuxCursor.h index 723740ec4ff7..0888dd20de5d 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/Linux/LinuxCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/Linux/LinuxCursor.h @@ -16,7 +16,10 @@ public: virtual ~FLinuxCursor(); - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override; + virtual bool IsCreateCursorFromRGBABufferSupported() const override + { + return true; + } virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/Mac/MacCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/Mac/MacCursor.h index 3bfac5cde75d..e49542cec8e4 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/Mac/MacCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/Mac/MacCursor.h @@ -17,6 +17,8 @@ public: virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override; + virtual bool IsCreateCursorFromRGBABufferSupported() const override { return true; } + virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override; virtual FVector2D GetPosition() const override; diff --git a/Engine/Source/Runtime/ApplicationCore/Public/Windows/WindowsCursor.h b/Engine/Source/Runtime/ApplicationCore/Public/Windows/WindowsCursor.h index 21ec35fedc3c..7d6a4357159e 100644 --- a/Engine/Source/Runtime/ApplicationCore/Public/Windows/WindowsCursor.h +++ b/Engine/Source/Runtime/ApplicationCore/Public/Windows/WindowsCursor.h @@ -16,6 +16,11 @@ public: virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) override; + virtual bool IsCreateCursorFromRGBABufferSupported() const override + { + return true; + } + virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) override; virtual FVector2D GetPosition() const override; diff --git a/Engine/Source/Runtime/ClothingSystemRuntimeNv/Private/ClothingSimulationNv.cpp b/Engine/Source/Runtime/ClothingSystemRuntimeNv/Private/ClothingSimulationNv.cpp index 3b540f75fe52..3845883fca06 100644 --- a/Engine/Source/Runtime/ClothingSystemRuntimeNv/Private/ClothingSimulationNv.cpp +++ b/Engine/Source/Runtime/ClothingSystemRuntimeNv/Private/ClothingSimulationNv.cpp @@ -1155,9 +1155,23 @@ void FClothingSimulationNv::UpdateLod(int32 InPredictedLod, const FTransform& Co bool bOldLodMapped = LodMap.IsValidIndex(CurrentMeshLodIndex) && LodMap[CurrentMeshLodIndex] != INDEX_NONE; // Get the clothing LOD mapped from the mesh predicted LOD - const int32 PredictedClothingLod = LodMap[InPredictedLod]; + + const int32 OldClothingLod = bOldLodMapped ? LodMap[CurrentMeshLodIndex] : INDEX_NONE; + // If potentialLod doesn't map to a valid LOD, we try higher LOD levels for a valid LOD. + // Asset might only have lod on LOD 1 and not 0, however if mesh doesn't force LOD to 1, + // asset will not be assigned valid LOD index and will not generate sim data, breaking things. + int32 PredictedClothingLod = INDEX_NONE; + for (int32 PotentialLod = InPredictedLod; PotentialLod < LodMap.Num(); ++PotentialLod) + { + if (LodMap[PotentialLod] != INDEX_NONE) + { + PredictedClothingLod = LodMap[PotentialLod]; + break; + } + } + if(PredictedClothingLod == Actor.CurrentLodIndex) { // We must have forced a LOD update because we added a new actor - this actor is good to go though. diff --git a/Engine/Source/Runtime/Engine/Private/GameViewportClient.cpp b/Engine/Source/Runtime/Engine/Private/GameViewportClient.cpp index 7231005f9b7c..d33c5dd7b20a 100644 --- a/Engine/Source/Runtime/Engine/Private/GameViewportClient.cpp +++ b/Engine/Source/Runtime/Engine/Private/GameViewportClient.cpp @@ -3817,6 +3817,11 @@ bool UGameViewportClient::GetUseMouseForTouch() const void* UGameViewportClient::LoadCursorFromPngs(ICursor& PlatformCursor, const FString& InPathToCursorWithoutExtension, FVector2D InHotSpot) { + if (!PlatformCursor.IsCreateCursorFromRGBABufferSupported()) + { + return nullptr; + } + TArray> CursorPngFiles; if (!LoadAvailableCursorPngs(CursorPngFiles, InPathToCursorWithoutExtension)) { diff --git a/Engine/Source/Runtime/Engine/Private/PrecomputedVolumetricLightmap.cpp b/Engine/Source/Runtime/Engine/Private/PrecomputedVolumetricLightmap.cpp index cdf7c0baf055..467fb2398d29 100644 --- a/Engine/Source/Runtime/Engine/Private/PrecomputedVolumetricLightmap.cpp +++ b/Engine/Source/Runtime/Engine/Private/PrecomputedVolumetricLightmap.cpp @@ -538,6 +538,8 @@ ENGINE_API void FPrecomputedVolumetricLightmapData::AddToSceneData(FPrecomputedV // Steal the indirection texture. When the sublevels are unloaded the values will be restored. IndirectionTexture = SceneData->IndirectionTexture; } + + RHICmdList.TransitionResource(EResourceTransitionAccess::EReadable, IndirectionTexture.Texture); } else { @@ -1057,6 +1059,20 @@ void FVolumetricLightmapBrickAtlas::Insert(int32 Index, FPrecomputedVolumetricLi // Replace with new allcations Allocations = NewAllocations; TextureSet = NewTextureSet; // <-- Old texture references are released here + + FRHITexture* Textures[3 + UE_ARRAY_COUNT(TextureSet.SHCoefficients)] = + { + TextureSet.AmbientVector.Texture, + TextureSet.SkyBentNormal.Texture, + TextureSet.DirectionalLightShadowing.Texture + }; + + for (int32 TextureIndex = 0; TextureIndex < UE_ARRAY_COUNT(TextureSet.SHCoefficients); ++TextureIndex) + { + Textures[TextureIndex + 3] = TextureSet.SHCoefficients[TextureIndex].Texture; + } + + RHICmdList.TransitionResources(EResourceTransitionAccess::EReadable, Textures, UE_ARRAY_COUNT(Textures)); } void FVolumetricLightmapBrickAtlas::Remove(FPrecomputedVolumetricLightmapData* Data) diff --git a/Engine/Source/Runtime/Engine/Private/RendererSettings.cpp b/Engine/Source/Runtime/Engine/Private/RendererSettings.cpp index b8f2307c05ea..00f691f41c44 100644 --- a/Engine/Source/Runtime/Engine/Private/RendererSettings.cpp +++ b/Engine/Source/Runtime/Engine/Private/RendererSettings.cpp @@ -73,7 +73,7 @@ URendererSettings::URendererSettings(const FObjectInitializer& ObjectInitializer GPUSimulationTextureSizeX = 1024; GPUSimulationTextureSizeY = 1024; bEnableRayTracing = 0; - bEnableRayTracingTextureLOD = 0; + bEnableRayTracingTextureLOD = 0; bLPV = 1; } diff --git a/Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidParticles.h b/Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidParticles.h index d85a0e0532a5..ada742682e9c 100644 --- a/Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidParticles.h +++ b/Engine/Source/Runtime/Experimental/Chaos/Public/Chaos/PBDRigidParticles.h @@ -5,7 +5,7 @@ #include "Chaos/RigidParticles.h" #include "Chaos/Rotation.h" -#if !PLATFORM_PS4 +#if defined(_MSC_VER) #pragma warning(push) #pragma warning(disable:4946) #endif @@ -187,6 +187,6 @@ FChaosArchive& operator<<(FChaosArchive& Ar, TPBDRigidParticles& Particles } } -#if !PLATFORM_PS4 +#if defined(MSC_VER) #pragma warning(pop) #endif diff --git a/Engine/Source/Runtime/RenderCore/Private/ClearReplacementShaders.cpp b/Engine/Source/Runtime/RenderCore/Private/ClearReplacementShaders.cpp index 25f382662af0..bd9e9ff96a2a 100644 --- a/Engine/Source/Runtime/RenderCore/Private/ClearReplacementShaders.cpp +++ b/Engine/Source/Runtime/RenderCore/Private/ClearReplacementShaders.cpp @@ -23,3 +23,4 @@ IMPLEMENT_SHADER_TYPE2_WITH_TEMPLATE_PREFIX(template<>, FClearReplacementCS_Text IMPLEMENT_SHADER_TYPE2_WITH_TEMPLATE_PREFIX(template<>, FClearReplacementCS_Texture3D_Uint4 , SF_Compute); IMPLEMENT_SHADER_TYPE2_WITH_TEMPLATE_PREFIX(template<>, FClearReplacementCS_Texture2D_Uint4 , SF_Compute); IMPLEMENT_SHADER_TYPE2_WITH_TEMPLATE_PREFIX(template<>, FClearReplacementCS_Texture2DArray_Uint4 , SF_Compute); +IMPLEMENT_SHADER_TYPE2_WITH_TEMPLATE_PREFIX(template<>, FClearReplacementCS_Buffer_Uint4 , SF_Compute); diff --git a/Engine/Source/Runtime/RenderCore/Public/ClearReplacementShaders.h b/Engine/Source/Runtime/RenderCore/Public/ClearReplacementShaders.h index 0c20df7c6147..fb5ad91548a3 100644 --- a/Engine/Source/Runtime/RenderCore/Public/ClearReplacementShaders.h +++ b/Engine/Source/Runtime/RenderCore/Public/ClearReplacementShaders.h @@ -277,3 +277,4 @@ typedef TClearReplacementCS FClearReplacementCS_Texture3D_Uint4; typedef TClearReplacementCS FClearReplacementCS_Texture2D_Uint4; typedef TClearReplacementCS FClearReplacementCS_Texture2DArray_Uint4; +typedef TClearReplacementCS FClearReplacementCS_Buffer_Uint4; diff --git a/Engine/Source/Runtime/Renderer/Private/PostProcess/DiaphragmDOF.h b/Engine/Source/Runtime/Renderer/Private/PostProcess/DiaphragmDOF.h index e1d6d4c51e2b..e07fcd907b02 100644 --- a/Engine/Source/Runtime/Renderer/Private/PostProcess/DiaphragmDOF.h +++ b/Engine/Source/Runtime/Renderer/Private/PostProcess/DiaphragmDOF.h @@ -10,11 +10,6 @@ #include "RendererInterface.h" #include "PostProcess/PostProcessing.h" - -// Whitelist diaphragm DOF for platforms that actually have been tested. -#define WITH_DIAPHRAGM_DOF (PLATFORM_WINDOWS || PLATFORM_XBOXONE || PLATFORM_PS4 || PLATFORM_MAC || PLATFORM_LINUX || PLATFORM_IOS || PLATFORM_SWITCH) - - class FViewInfo; class FSceneTextureParameters; struct FTemporalAAHistory; @@ -122,11 +117,6 @@ struct FBokehModel /** Returns whether DOF is supported. */ inline bool IsSupported(EShaderPlatform ShaderPlatform) { - // Since this is still prototype, only allow it on D3D. - #if !WITH_DIAPHRAGM_DOF - return false; - #endif - // Only compile diaphragm DOF on platform it has been tested to ensure this is not blocking anyone else. return ShaderPlatform == SP_PCD3D_SM5 || diff --git a/Engine/Source/Runtime/Slate/Private/Framework/Application/SlateApplication.cpp b/Engine/Source/Runtime/Slate/Private/Framework/Application/SlateApplication.cpp index 839d66d02bcf..03bbd951cf9d 100644 --- a/Engine/Source/Runtime/Slate/Private/Framework/Application/SlateApplication.cpp +++ b/Engine/Source/Runtime/Slate/Private/Framework/Application/SlateApplication.cpp @@ -64,8 +64,6 @@ class FFauxSlateCursor : public ICursor public: FFauxSlateCursor() {} virtual ~FFauxSlateCursor() {} - virtual void* CreateCursorFromFile(const FString& InPathToCursorWithoutExtension, FVector2D HotSpot) { return nullptr; } - virtual void* CreateCursorFromRGBABuffer(const FColor* Pixels, int32 Width, int32 Height, FVector2D InHotSpot) { return nullptr; } virtual void SetTypeShape(EMouseCursor::Type InCursorType, void* CursorHandle) override {} virtual FVector2D GetPosition() const override { return CurrentPosition; } @@ -2706,6 +2704,17 @@ void FSlateApplication::SetAllUserFocus(const FWidgetPath& InFocusPath, const EF ForEachUser([&] (FSlateUser& User) { SetUserFocus(User, InFocusPath, InCause); }); + + // cache the focus path so it can be applied to any new users + if (InFocusPath.IsValid()) + { + LastAllUsersFocusWidget = InFocusPath.GetLastWidget(); + } + else + { + LastAllUsersFocusWidget.Reset(); + } + LastAllUsersFocusCause = InCause; } void FSlateApplication::SetAllUserFocusAllowingDescendantFocus(const FWidgetPath& InFocusPath, const EFocusCause InCause) @@ -2718,6 +2727,10 @@ void FSlateApplication::SetAllUserFocusAllowingDescendantFocus(const FWidgetPath SetUserFocus(User, InFocusPath, InCause); } }); + + // cache the focus path so it can be applied to any new users + LastAllUsersFocusWidget = FocusWidget; + LastAllUsersFocusCause = InCause; } FModifierKeysState FSlateApplication::GetModifierKeys() const @@ -3783,6 +3796,12 @@ TSharedRef FSlateApplication::RegisterNewUser(int32 UserIndex, bool Users[UserIndex] = NewUser; + // Apply the last known "all users" focus widget path to this new user if they do not have a specific one + if (!NewUser->HasValidFocusPath() && LastAllUsersFocusWidget.IsValid()) + { + SetUserFocus(NewUser->GetUserIndex(), LastAllUsersFocusWidget.Pin(), LastAllUsersFocusCause); + } + UE_LOG(LogSlate, Log, TEXT("Slate User Registered. User Index %d, Is Virtual User: %d"), UserIndex, bIsVirtual); UserRegisteredEvent.Broadcast(UserIndex); diff --git a/Engine/Source/Runtime/Slate/Public/Framework/Application/SlateApplication.h b/Engine/Source/Runtime/Slate/Public/Framework/Application/SlateApplication.h index afbc52988f8b..22ea7933a16e 100644 --- a/Engine/Source/Runtime/Slate/Public/Framework/Application/SlateApplication.h +++ b/Engine/Source/Runtime/Slate/Public/Framework/Application/SlateApplication.h @@ -1612,6 +1612,12 @@ private: /** Weak pointers to the allocated virtual users. */ TArray> VirtualUsers; + /** + * Last widget that was set for 'all users' focus and the cause. + */ + TWeakPtr LastAllUsersFocusWidget; + EFocusCause LastAllUsersFocusCause; + /** * Application throttling */