diff --git a/Plugins/Marketplace/FSR3-550/FSR3/FSR3.uplugin b/Plugins/Marketplace/FSR3-550/FSR3/FSR3.uplugin index ffc37399..e5c4572b 100644 --- a/Plugins/Marketplace/FSR3-550/FSR3/FSR3.uplugin +++ b/Plugins/Marketplace/FSR3-550/FSR3/FSR3.uplugin @@ -14,39 +14,33 @@ "CanContainContent": true, "Installed": true, "SupportedTargetPlatforms": [ - "Win64", - "Linux" + "Win64" ], "Modules": [ { "Name": "FFXShared", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXFSR3Api", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXOpticalFlowApi", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXFrameInterpolationApi", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXRHIBackend", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXD3D12", @@ -68,19 +62,16 @@ "Name": "FFXFSR3TemporalUpscaling", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXFrameInterpolation", "Type": "Runtime", "LoadingPhase": "PostConfigInit" - "PlatformAllowList": [ "Win64", "Linux" ] }, { "Name": "FFXFSR3Settings", "Type": "Runtime", "LoadingPhase": "EarliestPossible" - "PlatformAllowList": [ "Win64", "Linux" ] } ] } \ No newline at end of file diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.pdb b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.pdb new file mode 100644 index 00000000..33cae6f2 --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor-FSR3MovieRenderPipeline.pdb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99c81e762fe3f74c0e4a53d74d102d6a4fb3da6fb3f1eaf4cdafcb0f76fac84c +size 61411328 diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor.modules b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor.modules new file mode 100644 index 00000000..6119324f --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Binaries/Win64/UnrealEditor.modules @@ -0,0 +1,7 @@ +{ + "BuildId": "37670630", + "Modules": + { + "FSR3MovieRenderPipeline": "UnrealEditor-FSR3MovieRenderPipeline.dll" + } +} \ No newline at end of file diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/FSR3MovieRenderPipeline.uplugin b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/FSR3MovieRenderPipeline.uplugin new file mode 100644 index 00000000..46b168e2 --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/FSR3MovieRenderPipeline.uplugin @@ -0,0 +1,39 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "3.1.3", + "FriendlyName": "FidelityFX Super Resolution 3 Movie Render Pipeline Support", + "Description": "Plugin that enables FidelityFX Super Resolution 3 within the Movie Render Pipeline.", + "Category": "Rendering", + "CreatedBy": "AMD", + "CreatedByURL": "https://gpuopen.com/unreal-engine/", + "DocsURL": "", + "MarketplaceURL": "", + "SupportURL": "", + "EngineVersion": "5.5.0", + "CanContainContent": true, + "Installed": true, + "SupportedTargetPlatforms": [ + "Win64" + ], + "Modules": [ + { + "Name": "FSR3MovieRenderPipeline", + "Type": "Runtime", + "LoadingPhase": "PostEngineInit", + "PlatformAllowList": [ + "Win64" + ] + } + ], + "Plugins": [ + { + "Name": "MovieRenderPipeline", + "Enabled": true + }, + { + "Name": "FSR3", + "Enabled": true + } + ] +} \ No newline at end of file diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Resources/Icon128.png b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Resources/Icon128.png new file mode 100644 index 00000000..e31f0696 --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Resources/Icon128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8035011a8e32341a036cd534887f18a9ae242518c6a90d21ef1d568e499315d2 +size 4968 diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/FSR3MovieRenderPipeline.Build.cs b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/FSR3MovieRenderPipeline.Build.cs new file mode 100644 index 00000000..6dfd5c86 --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/FSR3MovieRenderPipeline.Build.cs @@ -0,0 +1,44 @@ +// This file is part of the FidelityFX Super Resolution 3.1 Unreal Engine Plugin. +// +// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using UnrealBuildTool; + +public class FSR3MovieRenderPipeline : ModuleRules +{ + public FSR3MovieRenderPipeline(ReadOnlyTargetRules Target) + : base(Target) + { + ShortName = "FSR3Mov"; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "MovieRenderPipelineCore", + "MovieRenderPipelineRenderPasses", + "RHI", + "FFXFSR3TemporalUpscaling", + } + ); + } +} diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MoviePipelineSettings.cpp b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MoviePipelineSettings.cpp new file mode 100644 index 00000000..3e0a3d6c --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MoviePipelineSettings.cpp @@ -0,0 +1,80 @@ +// This file is part of the FidelityFX Super Resolution 3.1 Unreal Engine Plugin. +// +// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "FSR3MoviePipelineSettings.h" + +#include "FFXFSR3TemporalUpscaling.h" + +#include "MovieRenderPipelineDataTypes.h" +#include "SceneView.h" +#include "Templates/SharedPointer.h" + +#define LOCTEXT_NAMESPACE "FSR3MoviePipelineSettings" + +UFSR3MoviePipelineSettings::UFSR3MoviePipelineSettings() +: FSR3Quality(EFSR3MoviePipelineQuality::Quality) +{ + +} + +void UFSR3MoviePipelineSettings::ValidateStateImpl() +{ + Super::ValidateStateImpl(); + + IFFXFSR3TemporalUpscalingModule& FSR3ModuleInterface = FModuleManager::GetModuleChecked(TEXT("FFXFSR3TemporalUpscaling")); + if (!FSR3ModuleInterface.IsPlatformSupported(GMaxRHIShaderPlatform)) + { + ValidationResults.Add(FText::FromString(TEXT("FidelityFX Super Resolution 3 is unsupported on this platform."))); + ValidationState = EMoviePipelineValidationState::Warnings; + } +} + +void UFSR3MoviePipelineSettings::GetFormatArguments(FMoviePipelineFormatArgs& InOutFormatArgs) const +{ + Super::GetFormatArguments(InOutFormatArgs); + + IFFXFSR3TemporalUpscalingModule& FSR3ModuleInterface = FModuleManager::GetModuleChecked(TEXT("FFXFSR3TemporalUpscaling")); + if (FSR3ModuleInterface.IsPlatformSupported(GMaxRHIShaderPlatform)) + { + InOutFormatArgs.FileMetadata.Add(TEXT("amd/fidelityFxFSR3QualityMode"), StaticEnum()->GetDisplayNameTextByIndex((int32)FSR3Quality).ToString()); + InOutFormatArgs.FilenameArguments.Add(TEXT("fidelityFxFSR3QualityMode"), StaticEnum()->GetDisplayNameTextByIndex((int32)FSR3Quality).ToString()); + } + else + { + InOutFormatArgs.FileMetadata.Add(TEXT("amd/fidelityFxFSR3QualityMode"), TEXT("Unsupported")); + InOutFormatArgs.FilenameArguments.Add(TEXT("fidelityFxFSR3QualityMode"), TEXT("Unsupported")); + } +} + +void UFSR3MoviePipelineSettings::SetupViewFamily(FSceneViewFamily& ViewFamily) +{ + static IConsoleVariable* CVarScreenPercentage = IConsoleManager::Get().FindConsoleVariable(TEXT("r.ScreenPercentage")); + static IConsoleVariable* CVarFSR3Enabled = IConsoleManager::Get().FindConsoleVariable(TEXT("r.FidelityFX.FSR3.Enabled")); + IFFXFSR3TemporalUpscalingModule& FSR3ModuleInterface = FModuleManager::GetModuleChecked(TEXT("FFXFSR3TemporalUpscaling")); + if (ViewFamily.ViewMode == EViewModeIndex::VMI_Lit && CVarFSR3Enabled->GetInt()) + { + float ScreenPercentage = FSR3Quality == EFSR3MoviePipelineQuality::Native ? 100.f : FSR3ModuleInterface.GetResolutionFraction((uint32)FSR3Quality) * 100.0f; + if (CVarScreenPercentage) + { + CVarScreenPercentage->Set(ScreenPercentage, ECVF_SetByCode); + } + } +} diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MovieRenderPipelineModule.cpp b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MovieRenderPipelineModule.cpp new file mode 100644 index 00000000..f87be4ed --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Private/FSR3MovieRenderPipelineModule.cpp @@ -0,0 +1,24 @@ +// This file is part of the FidelityFX Super Resolution 3.1 Unreal Engine Plugin. +// +// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#include "Modules/ModuleManager.h" + +IMPLEMENT_MODULE(FDefaultModuleImpl, FSR3MovieRenderPipeline); \ No newline at end of file diff --git a/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Public/FSR3MoviePipelineSettings.h b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Public/FSR3MoviePipelineSettings.h new file mode 100644 index 00000000..6593561e --- /dev/null +++ b/Plugins/Marketplace/FSR3-550/FSR3MovieRenderPipeline/Source/Public/FSR3MoviePipelineSettings.h @@ -0,0 +1,55 @@ +// This file is part of the FidelityFX Super Resolution 3.1 Unreal Engine Plugin. +// +// Copyright (c) 2023-2025 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#pragma once + +#include "MoviePipelineViewFamilySetting.h" +#include "FSR3MoviePipelineSettings.generated.h" + +class SceneViewFamily; + +UENUM(BlueprintType) +enum class EFSR3MoviePipelineQuality : uint8 +{ + Unused UMETA(Hidden), + Native UMETA(DisplayName = "Native AA"), + Quality UMETA(DisplayName = "Quality"), + Balanced UMETA(DisplayName = "Balanced"), + Performance UMETA(DisplayName = "Performance"), + UltraPerformance UMETA(DisplayName = "UltraPerformance") +}; + +UCLASS(BlueprintType, DisplayName="FidelityFX Super Resolution 3 Settings") +class FSR3MOVIERENDERPIPELINE_API UFSR3MoviePipelineSettings : public UMoviePipelineViewFamilySetting +{ + GENERATED_BODY() +public: + UFSR3MoviePipelineSettings(); + + virtual void ValidateStateImpl() override; + + virtual void GetFormatArguments(FMoviePipelineFormatArgs& InOutFormatArgs) const override; + + virtual void SetupViewFamily(FSceneViewFamily& ViewFamily) override; + + UPROPERTY(EditAnywhere, BlueprintReadWRite, Category = "Settings", DisplayName = "Quality Mode") + EFSR3MoviePipelineQuality FSR3Quality; +}; \ No newline at end of file