diff --git a/Source/Editor/Content/Create/SettingsCreateEntry.cs b/Source/Editor/Content/Create/SettingsCreateEntry.cs index bf7f54d23..73b89ac8f 100644 --- a/Source/Editor/Content/Create/SettingsCreateEntry.cs +++ b/Source/Editor/Content/Create/SettingsCreateEntry.cs @@ -40,6 +40,8 @@ namespace FlaxEditor.Content.Create XboxScarlettPlatformSettings, AndroidPlatformSettings, SwitchPlatformSettings, + [EditorDisplay(null, "PS5 Platform Settings")] + PS5PlatformSettings, } private static readonly Type[] _types = @@ -63,6 +65,7 @@ namespace FlaxEditor.Content.Create TypeUtils.GetManagedType(GameSettings.XboxScarlettPlatformSettingsTypename), typeof(AndroidPlatformSettings), TypeUtils.GetManagedType(GameSettings.SwitchPlatformSettingsTypename), + TypeUtils.GetManagedType(GameSettings.PS5PlatformSettingsTypename), }; internal class Options @@ -228,6 +231,11 @@ namespace FlaxEditor.Content.Create return false; instance.SwitchPlatform = asset; break; + case SettingsTypes.PS5PlatformSettings: + if (instance.PS5Platform != null) + return false; + instance.PS5Platform = asset; + break; } return true; } diff --git a/Source/Editor/Cooker/CookingData.h b/Source/Editor/Cooker/CookingData.h index ce661f3e7..0d8236e83 100644 --- a/Source/Editor/Cooker/CookingData.h +++ b/Source/Editor/Cooker/CookingData.h @@ -93,6 +93,12 @@ API_ENUM() enum class BuildPlatform /// Switch. /// Switch = 10, + + /// + /// PlayStation 5 + /// + API_ENUM(Attributes="EditorDisplay(null, \"PlayStation 5\")") + PS5 = 11, }; extern FLAXENGINE_API const Char* ToString(const BuildPlatform platform); diff --git a/Source/Editor/Cooker/GameCooker.cpp b/Source/Editor/Cooker/GameCooker.cpp index 7c7baf943..9ff5445a7 100644 --- a/Source/Editor/Cooker/GameCooker.cpp +++ b/Source/Editor/Cooker/GameCooker.cpp @@ -42,6 +42,9 @@ #if PLATFORM_TOOLS_PS4 #include "Platforms/PS4/Editor/PlatformTools/PS4PlatformTools.h" #endif +#if PLATFORM_TOOLS_PS5 +#include "Platforms/PS5/Editor/PlatformTools/PS5PlatformTools.h" +#endif #if PLATFORM_TOOLS_XBOX_ONE #include "Platforms/XboxOne/Editor/PlatformTools/XboxOnePlatformTools.h" #endif @@ -123,6 +126,8 @@ const Char* ToString(const BuildPlatform platform) return TEXT("Android ARM64"); case BuildPlatform::Switch: return TEXT("Switch"); + case BuildPlatform::PS5: + return TEXT("PlayStation 5"); default: return TEXT("?"); } @@ -314,6 +319,11 @@ PlatformTools* GameCooker::GetTools(BuildPlatform platform) case BuildPlatform::Switch: result = New(); break; +#endif +#if PLATFORM_TOOLS_PS5 + case BuildPlatform::PS5: + result = New(); + break; #endif } Tools.Add(platform, result); diff --git a/Source/Editor/Cooker/GameCooker.cs b/Source/Editor/Cooker/GameCooker.cs index 64b84a9ac..0d83dff24 100644 --- a/Source/Editor/Cooker/GameCooker.cs +++ b/Source/Editor/Cooker/GameCooker.cs @@ -99,6 +99,7 @@ namespace FlaxEditor case BuildPlatform.XboxOne: return PlatformType.XboxOne; case BuildPlatform.LinuxX64: return PlatformType.Linux; case BuildPlatform.PS4: return PlatformType.PS4; + case BuildPlatform.PS5: return PlatformType.PS5; case BuildPlatform.AndroidARM64: return PlatformType.Android; case BuildPlatform.XboxScarlett: return PlatformType.XboxScarlett; case BuildPlatform.Switch: return PlatformType.Switch; diff --git a/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp b/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp index b65aa4d6f..ee7f87bd6 100644 --- a/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp +++ b/Source/Editor/Cooker/Steps/CompileScriptsStep.cpp @@ -182,6 +182,10 @@ bool CompileScriptsStep::Perform(CookingData& data) platform = TEXT("Switch"); architecture = TEXT("ARM64"); break; + case BuildPlatform::PS5: + platform = TEXT("PS5"); + architecture = TEXT("x64"); + break; default: LOG(Error, "Unknown or unsupported build platform."); return true; diff --git a/Source/Editor/Cooker/Steps/CookAssetsStep.cpp b/Source/Editor/Cooker/Steps/CookAssetsStep.cpp index 7e7a2ca81..29e45b05f 100644 --- a/Source/Editor/Cooker/Steps/CookAssetsStep.cpp +++ b/Source/Editor/Cooker/Steps/CookAssetsStep.cpp @@ -514,6 +514,14 @@ bool ProcessShaderBase(CookAssetsStep::AssetCookData& data, ShaderAssetBase* ass COMPILE_PROFILE(Vulkan_SM5, SHADER_FILE_CHUNK_INTERNAL_VULKAN_SM5_CACHE); break; } +#endif +#if PLATFORM_TOOLS_PS5 + case BuildPlatform::PS5: + { + const char* platformDefineName = "PLATFORM_PS5"; + COMPILE_PROFILE(PS5, SHADER_FILE_CHUNK_INTERNAL_GENERIC_CACHE); + break; + } #endif default: { diff --git a/Source/Editor/Editor.Build.cs b/Source/Editor/Editor.Build.cs index f595d6449..2eeffe0ef 100644 --- a/Source/Editor/Editor.Build.cs +++ b/Source/Editor/Editor.Build.cs @@ -57,6 +57,7 @@ public class Editor : EditorModule AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "UWP", "PLATFORM_TOOLS_UWP"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "XboxOne", "PLATFORM_TOOLS_XBOX_ONE", "PLATFORM_TOOLS_GDK"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "PS4", "PLATFORM_TOOLS_PS4"); + AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "PS5", "PLATFORM_TOOLS_PS5"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "XboxScarlett", "PLATFORM_TOOLS_XBOX_SCARLETT", "PLATFORM_TOOLS_GDK"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "Android", "PLATFORM_TOOLS_ANDROID"); AddPlatformTools(options, platformToolsRoot, platformToolsRootExternal, "Switch", "PLATFORM_TOOLS_SWITCH"); diff --git a/Source/Editor/GUI/PlatformSelector.cs b/Source/Editor/GUI/PlatformSelector.cs index 3b9802873..c5f4cb449 100644 --- a/Source/Editor/GUI/PlatformSelector.cs +++ b/Source/Editor/GUI/PlatformSelector.cs @@ -90,6 +90,7 @@ namespace FlaxEditor.GUI new PlatformData(PlatformType.XboxScarlett, icons.XBoxScarletIcon128, "Xbox Scarlett"), new PlatformData(PlatformType.Android, icons.AndroidIcon128, "Android"), new PlatformData(PlatformType.Switch, icons.SwitchIcon128, "Switch"), + new PlatformData(PlatformType.PS5, icons.PS4Icon128, "PlayStation 5"), }; const float IconSize = 64.0f; diff --git a/Source/Editor/Modules/ContentDatabaseModule.cs b/Source/Editor/Modules/ContentDatabaseModule.cs index e569f1ad5..a4fb00876 100644 --- a/Source/Editor/Modules/ContentDatabaseModule.cs +++ b/Source/Editor/Modules/ContentDatabaseModule.cs @@ -962,6 +962,10 @@ namespace FlaxEditor.Modules if (typeSwitchPlatformSettings != null) Proxy.Add(new SettingsProxy(typeSwitchPlatformSettings, Editor.Instance.Icons.SwitchSettings128)); + var typePS5PlatformSettings = TypeUtils.GetManagedType(GameSettings.PS5PlatformSettingsTypename); + if (typePS5PlatformSettings != null) + Proxy.Add(new SettingsProxy(typePS5PlatformSettings, Editor.Instance.Icons.PlaystationSettings128)); + // Last add generic json (won't override other json proxies) Proxy.Add(new GenericJsonAssetProxy()); diff --git a/Source/Editor/Surface/Archetypes/Tools.cs b/Source/Editor/Surface/Archetypes/Tools.cs index 5c729a41c..143a0557d 100644 --- a/Source/Editor/Surface/Archetypes/Tools.cs +++ b/Source/Editor/Surface/Archetypes/Tools.cs @@ -1346,9 +1346,9 @@ namespace FlaxEditor.Surface.Archetypes Title = "Platform Switch", Description = "Gets the input value based on the runtime-platform type", Flags = NodeFlags.AllGraphs, - Size = new Vector2(220, 180), + Size = new Vector2(220, 200), ConnectionsHints = ConnectionsHint.Value, - IndependentBoxes = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, + IndependentBoxes = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, DependentBoxes = new[] { 0 }, Elements = new[] { @@ -1362,6 +1362,7 @@ namespace FlaxEditor.Surface.Archetypes NodeElementArchetype.Factory.Input(6, "Xbox Scarlett", true, null, 7), NodeElementArchetype.Factory.Input(7, "Android", true, null, 8), NodeElementArchetype.Factory.Input(8, "Switch", true, null, 9), + NodeElementArchetype.Factory.Input(9, "PlayStation 5", true, null, 10), } }, new NodeArchetype diff --git a/Source/Editor/Windows/GameCookerWindow.cs b/Source/Editor/Windows/GameCookerWindow.cs index 0a3573e5d..4d9f6b3e3 100644 --- a/Source/Editor/Windows/GameCookerWindow.cs +++ b/Source/Editor/Windows/GameCookerWindow.cs @@ -44,6 +44,7 @@ namespace FlaxEditor.Windows { PlatformType.XboxScarlett, new XboxScarlett() }, { PlatformType.Android, new Android() }, { PlatformType.Switch, new Switch() }, + { PlatformType.PS5, new PS5() }, }; public BuildTabProxy(GameCookerWindow win, PlatformSelector platformSelector) @@ -59,6 +60,7 @@ namespace FlaxEditor.Windows PerPlatformOptions[PlatformType.XboxScarlett].Init("Output/XboxScarlett", "XboxScarlett"); PerPlatformOptions[PlatformType.Android].Init("Output/Android", "Android"); PerPlatformOptions[PlatformType.Switch].Init("Output/Switch", "Switch"); + PerPlatformOptions[PlatformType.PS5].Init("Output/PS5", "PS5"); } abstract class Platform @@ -195,6 +197,11 @@ namespace FlaxEditor.Windows protected override BuildPlatform BuildPlatform => BuildPlatform.Switch; } + class PS5 : Platform + { + protected override BuildPlatform BuildPlatform => BuildPlatform.PS5; + } + class Editor : CustomEditor { private PlatformType _platform; @@ -239,6 +246,9 @@ namespace FlaxEditor.Windows case PlatformType.Switch: name = "Switch"; break; + case PlatformType.PS5: + name = "PlayStation 5"; + break; default: name = CustomEditorsUtil.GetPropertyNameUI(_platform.ToString()); break; diff --git a/Source/Engine/Audio/Audio.Build.cs b/Source/Engine/Audio/Audio.Build.cs index ff0ea552e..694adb742 100644 --- a/Source/Engine/Audio/Audio.Build.cs +++ b/Source/Engine/Audio/Audio.Build.cs @@ -50,6 +50,10 @@ public class Audio : EngineModule options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Audio")); options.CompileEnv.PreprocessorDefinitions.Add("AUDIO_API_SWITCH"); break; + case TargetPlatform.PS5: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS5", "Engine", "Audio")); + options.CompileEnv.PreprocessorDefinitions.Add("AUDIO_API_PS5"); + break; default: throw new InvalidPlatformException(options.Platform.Target); } diff --git a/Source/Engine/Audio/Audio.cpp b/Source/Engine/Audio/Audio.cpp index 615e1e986..c01ed14c6 100644 --- a/Source/Engine/Audio/Audio.cpp +++ b/Source/Engine/Audio/Audio.cpp @@ -18,6 +18,9 @@ #if AUDIO_API_PS4 #include "Platforms/PS4/Engine/Audio/AudioBackendPS4.h" #endif +#if AUDIO_API_PS5 +#include "Platforms/PS5/Engine/Audio/AudioBackendPS5.h" +#endif #if AUDIO_API_SWITCH #include "Platforms/Switch/Engine/Audio/AudioBackendSwitch.h" #endif @@ -182,44 +185,34 @@ bool AudioService::Init() AudioBackend* backend = nullptr; #if AUDIO_API_NONE if (mute) - { backend = New(); - } #endif #if AUDIO_API_PS4 if (!backend) - { backend = New(); - } +#endif +#if AUDIO_API_PS5 + if (!backend) + backend = New(); #endif #if AUDIO_API_SWITCH if (!backend) - { backend = New(); - } #endif #if AUDIO_API_OPENAL if (!backend) - { backend = New(); - } #endif #if AUDIO_API_XAUDIO2 if (!backend) - { backend = New(); - } #endif #if AUDIO_API_NONE if (!backend) - { backend = New(); - } #else if (mute) - { LOG(Warning, "Cannot use mute audio. Null Audio Backend not available on this platform."); - } #endif if (backend == nullptr) { diff --git a/Source/Engine/Core/Config/GameSettings.cpp b/Source/Engine/Core/Config/GameSettings.cpp index da8e00216..6f21b9b73 100644 --- a/Source/Engine/Core/Config/GameSettings.cpp +++ b/Source/Engine/Core/Config/GameSettings.cpp @@ -55,6 +55,8 @@ IMPLEMENT_SETTINGS_GETTER(UWPPlatformSettings, UWPPlatform); IMPLEMENT_SETTINGS_GETTER(LinuxPlatformSettings, LinuxPlatform); #elif PLATFORM_PS4 IMPLEMENT_SETTINGS_GETTER(PS4PlatformSettings, PS4Platform); +#elif PLATFORM_PS5 +IMPLEMENT_SETTINGS_GETTER(PS5PlatformSettings, PS5Platform); #elif PLATFORM_XBOX_ONE IMPLEMENT_SETTINGS_GETTER(XboxOnePlatformSettings, XboxOnePlatform); #elif PLATFORM_XBOX_SCARLETT @@ -223,6 +225,7 @@ void GameSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* mo DESERIALIZE(XboxScarlettPlatform); DESERIALIZE(AndroidPlatform); DESERIALIZE(SwitchPlatform); + DESERIALIZE(PS5Platform); } void LayersAndTagsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) diff --git a/Source/Engine/Core/Config/GameSettings.cs b/Source/Engine/Core/Config/GameSettings.cs index 36d93ff3b..4c365e4b0 100644 --- a/Source/Engine/Core/Config/GameSettings.cs +++ b/Source/Engine/Core/Config/GameSettings.cs @@ -10,6 +10,7 @@ namespace FlaxEditor.Content.Settings partial class GameSettings { internal const string PS4PlatformSettingsTypename = "FlaxEditor.Content.Settings.PS4PlatformSettings"; + internal const string PS5PlatformSettingsTypename = "FlaxEditor.Content.Settings.PS5PlatformSettings"; internal const string XboxOnePlatformSettingsTypename = "FlaxEditor.Content.Settings.XboxOnePlatformSettings"; internal const string XboxScarlettPlatformSettingsTypename = "FlaxEditor.Content.Settings.XboxScarlettPlatformSettings"; internal const string SwitchPlatformSettingsTypename = "FlaxEditor.Content.Settings.SwitchPlatformSettings"; @@ -168,6 +169,14 @@ namespace FlaxEditor.Content.Settings public JsonAsset SwitchPlatform; #endif +#if FLAX_EDITOR || PLATFORM_PS5 + /// + /// Reference to PS5 Platform Settings asset. Used to apply configuration on PS5 platform. + /// + [EditorOrder(2080), EditorDisplay("Platform Settings", "PlayStation 5"), AssetReference(PS5PlatformSettingsTypename, true), Tooltip("Reference to PS5 Platform Settings asset")] + public JsonAsset PS5Platform; +#endif + /// /// Gets the absolute path to the game settings asset file. /// @@ -282,6 +291,10 @@ namespace FlaxEditor.Content.Settings if (type.FullName == SwitchPlatformSettingsTypename) return LoadAsset(gameSettings.SwitchPlatform, SwitchPlatformSettingsTypename) as T; #endif +#if FLAX_EDITOR || PLATFORM_PS5 + if (type.FullName == PS5PlatformSettingsTypename) + return LoadAsset(gameSettings.PS5Platform, PS5PlatformSettingsTypename) as T; +#endif if (gameSettings.CustomSettings != null) { @@ -374,6 +387,8 @@ namespace FlaxEditor.Content.Settings return SaveAsset(gameSettings, ref gameSettings.AndroidPlatform, obj); if (type.FullName == SwitchPlatformSettingsTypename) return SaveAsset(gameSettings, ref gameSettings.SwitchPlatform, obj); + if (type.FullName == PS5PlatformSettingsTypename) + return SaveAsset(gameSettings, ref gameSettings.PS5Platform, obj); if (type == typeof(AudioSettings)) return SaveAsset(gameSettings, ref gameSettings.Audio, obj); diff --git a/Source/Engine/Core/Config/GameSettings.h b/Source/Engine/Core/Config/GameSettings.h index 31e530b88..a9f324127 100644 --- a/Source/Engine/Core/Config/GameSettings.h +++ b/Source/Engine/Core/Config/GameSettings.h @@ -81,6 +81,7 @@ public: Guid XboxScarlettPlatform; Guid AndroidPlatform; Guid SwitchPlatform; + Guid PS5Platform; public: diff --git a/Source/Engine/Core/Config/PlatformSettings.h b/Source/Engine/Core/Config/PlatformSettings.h index c05280d30..df5dceedd 100644 --- a/Source/Engine/Core/Config/PlatformSettings.h +++ b/Source/Engine/Core/Config/PlatformSettings.h @@ -29,3 +29,6 @@ #if PLATFORM_SWITCH #include "Platforms/Switch/Engine/Platform/SwitchPlatformSettings.h" #endif +#if PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5PlatformSettings.h" +#endif diff --git a/Source/Engine/Engine/Engine.Build.cs b/Source/Engine/Engine/Engine.Build.cs index 242637613..133a0d8be 100644 --- a/Source/Engine/Engine/Engine.Build.cs +++ b/Source/Engine/Engine/Engine.Build.cs @@ -44,6 +44,9 @@ public class Engine : EngineModule case TargetPlatform.PS4: options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Engine")); break; + case TargetPlatform.PS5: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS5", "Engine", "Engine")); + break; case TargetPlatform.Switch: options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Engine")); break; diff --git a/Source/Engine/Engine/Game.h b/Source/Engine/Engine/Game.h index 044dfccea..55e1f0869 100644 --- a/Source/Engine/Engine/Game.h +++ b/Source/Engine/Engine/Game.h @@ -12,6 +12,8 @@ #include "Linux/LinuxGame.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Engine/PS4Game.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Engine/PS5Game.h" #elif PLATFORM_XBOX_ONE #include "Platforms/XboxOne/Engine/Engine/XboxOneGame.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Graphics/Enums.h b/Source/Engine/Graphics/Enums.h index 2c1ce286d..0bd22067c 100644 --- a/Source/Engine/Graphics/Enums.h +++ b/Source/Engine/Graphics/Enums.h @@ -70,6 +70,11 @@ API_ENUM() enum class RendererType /// PS4 = 11, + /// + /// PlayStation 5 + /// + PS5 = 12, + API_ENUM(Attributes="HideInEditor") MAX }; @@ -121,6 +126,11 @@ API_ENUM() enum class ShaderProfile /// DirectX_SM6 = 7, + /// + /// PlayStation 5 + /// + PS5 = 8, + API_ENUM(Attributes="HideInEditor") MAX }; diff --git a/Source/Engine/Graphics/Graphics.Build.cs b/Source/Engine/Graphics/Graphics.Build.cs index 6d8004c32..bcc1d2c98 100644 --- a/Source/Engine/Graphics/Graphics.Build.cs +++ b/Source/Engine/Graphics/Graphics.Build.cs @@ -72,6 +72,9 @@ public class Graphics : EngineModule case TargetPlatform.PS4: options.PrivateDependencies.Add("GraphicsDevicePS4"); break; + case TargetPlatform.PS5: + options.PrivateDependencies.Add("GraphicsDevicePS5"); + break; case TargetPlatform.Android: options.PrivateDependencies.Add("GraphicsDeviceVulkan"); break; diff --git a/Source/Engine/Graphics/Graphics.cpp b/Source/Engine/Graphics/Graphics.cpp index dd7b03074..961ebde41 100644 --- a/Source/Engine/Graphics/Graphics.cpp +++ b/Source/Engine/Graphics/Graphics.cpp @@ -30,6 +30,9 @@ extern GPUDevice* CreateGPUDeviceDX12(); #if GRAPHICS_API_PS4 extern GPUDevice* CreateGPUDevicePS4(); #endif +#if GRAPHICS_API_PS5 +extern GPUDevice* CreateGPUDevicePS5(); +#endif class GraphicsService : public EngineService { @@ -132,6 +135,10 @@ bool GraphicsService::Init() #if GRAPHICS_API_PS4 if (!device) device = CreateGPUDevicePS4(); +#endif +#if GRAPHICS_API_PS5 + if (!device) + device = CreateGPUDevicePS5(); #endif } diff --git a/Source/Engine/Graphics/RenderTools.cpp b/Source/Engine/Graphics/RenderTools.cpp index 12b3b872d..b33fed2ce 100644 --- a/Source/Engine/Graphics/RenderTools.cpp +++ b/Source/Engine/Graphics/RenderTools.cpp @@ -52,6 +52,9 @@ const Char* ToString(RendererType value) case RendererType::PS4: result = TEXT("PS4"); break; + case RendererType::PS5: + result = TEXT("PS5"); + break; default: result = TEXT("?"); } @@ -87,6 +90,9 @@ const Char* ToString(ShaderProfile value) case ShaderProfile::PS4: result = TEXT("PS4"); break; + case ShaderProfile::PS5: + result = TEXT("PS5"); + break; default: result = TEXT("?"); } @@ -289,6 +295,7 @@ FeatureLevel RenderTools::GetFeatureLevel(ShaderProfile profile) switch (profile) { case ShaderProfile::DirectX_SM6: + case ShaderProfile::PS5: return FeatureLevel::SM6; case ShaderProfile::DirectX_SM5: case ShaderProfile::Vulkan_SM5: @@ -313,6 +320,7 @@ bool RenderTools::CanSupportTessellation(ShaderProfile profile) case ShaderProfile::DirectX_SM6: case ShaderProfile::DirectX_SM5: case ShaderProfile::PS4: + case ShaderProfile::PS5: return true; default: return false; diff --git a/Source/Engine/Graphics/Shaders/Cache/ShaderCacheManager.cpp b/Source/Engine/Graphics/Shaders/Cache/ShaderCacheManager.cpp index 37c905375..c5326a448 100644 --- a/Source/Engine/Graphics/Shaders/Cache/ShaderCacheManager.cpp +++ b/Source/Engine/Graphics/Shaders/Cache/ShaderCacheManager.cpp @@ -11,7 +11,7 @@ #include "Engine/Graphics/Materials/MaterialShader.h" #include "Engine/Particles/Graph/GPU/ParticleEmitterGraph.GPU.h" -const Char* ShaderProfileCacheDirNames[8] = +const Char* ShaderProfileCacheDirNames[] = { // @formatter:off TEXT("EARTH_IS_NOT_FLAT_XD"), // Unknown @@ -22,6 +22,7 @@ const Char* ShaderProfileCacheDirNames[8] = TEXT("VK_SM5"), // Vulkan_SM5 TEXT("PS4"), // PS4 TEXT("DX_SM6"), // DirectX_SM6 + TEXT("PS5"), // PS5 // @formatter:on }; diff --git a/Source/Engine/Main/Main.Build.cs b/Source/Engine/Main/Main.Build.cs index 6939ee97d..a40151b44 100644 --- a/Source/Engine/Main/Main.Build.cs +++ b/Source/Engine/Main/Main.Build.cs @@ -57,6 +57,9 @@ public class Main : EngineModule case TargetPlatform.PS4: options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Main")); break; + case TargetPlatform.PS5: + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS5", "Engine", "Main")); + break; case TargetPlatform.XboxOne: options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "XboxOne", "Engine", "Main")); break; diff --git a/Source/Engine/Platform/Base/PlatformBase.cpp b/Source/Engine/Platform/Base/PlatformBase.cpp index e1383c152..f641334a4 100644 --- a/Source/Engine/Platform/Base/PlatformBase.cpp +++ b/Source/Engine/Platform/Base/PlatformBase.cpp @@ -587,6 +587,8 @@ const Char* ToString(PlatformType type) return TEXT("Android"); case PlatformType::Switch: return TEXT("Switch"); + case PlatformType::PS5: + return TEXT("PlayStation 5"); default: return TEXT(""); } diff --git a/Source/Engine/Platform/Clipboard.h b/Source/Engine/Platform/Clipboard.h index 53861affe..2937df586 100644 --- a/Source/Engine/Platform/Clipboard.h +++ b/Source/Engine/Platform/Clipboard.h @@ -4,22 +4,10 @@ #if PLATFORM_WINDOWS #include "Windows/WindowsClipboard.h" -#elif PLATFORM_UWP -#include "Base/ClipboardBase.h" #elif PLATFORM_LINUX #include "Linux/LinuxClipboard.h" -#elif PLATFORM_PS4 -#include "Base/ClipboardBase.h" -#elif PLATFORM_XBOX_ONE -#include "Base/ClipboardBase.h" -#elif PLATFORM_XBOX_SCARLETT -#include "Base/ClipboardBase.h" -#elif PLATFORM_ANDROID -#include "Base/ClipboardBase.h" -#elif PLATFORM_SWITCH -#include "Base/ClipboardBase.h" #else -#error Missing Clipboard implementation! +#include "Base/ClipboardBase.h" #endif #include "Types.h" diff --git a/Source/Engine/Platform/CriticalSection.h b/Source/Engine/Platform/CriticalSection.h index c9e3be58e..6dae6588f 100644 --- a/Source/Engine/Platform/CriticalSection.h +++ b/Source/Engine/Platform/CriticalSection.h @@ -10,6 +10,8 @@ #include "Unix/UnixCriticalSection.h" #elif PLATFORM_PS4 #include "Unix/UnixCriticalSection.h" +#elif PLATFORM_PS5 +#include "Unix/UnixCriticalSection.h" #elif PLATFORM_XBOX_ONE #include "Win32/Win32CriticalSection.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/Defines.h b/Source/Engine/Platform/Defines.h index 8a0be63ba..7ca4f3b9d 100644 --- a/Source/Engine/Platform/Defines.h +++ b/Source/Engine/Platform/Defines.h @@ -48,6 +48,11 @@ API_ENUM() enum class PlatformType /// Running on Switch. /// Switch = 8, + + /// + /// Running on PlayStation 5. + /// + PS5 = 9, }; /// @@ -103,6 +108,9 @@ API_ENUM() enum class ArchitectureType #if !defined(PLATFORM_PS4) #define PLATFORM_PS4 0 #endif +#if !defined(PLATFORM_PS5) +#define PLATFORM_PS5 0 +#endif #if !defined(PLATFORM_XBOX_SCARLETT) #define PLATFORM_XBOX_SCARLETT 0 #endif @@ -130,6 +138,8 @@ API_ENUM() enum class ArchitectureType #include "Linux/LinuxDefines.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Platform/PS4Defines.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5Defines.h" #elif PLATFORM_XBOX_ONE #include "Platforms/XboxOne/Engine/Platform/XboxOneDefines.h" #elif PLATFORM_XBOX_SCARLETT @@ -178,7 +188,7 @@ API_ENUM() enum class ArchitectureType // Platform family defines #define PLATFORM_WINDOWS_FAMILY (PLATFORM_WINDOWS || PLATFORM_UWP || PLATFORM_XBOX_ONE || PLATFORM_XBOX_SCARLETT) #define PLATFORM_MICROSOFT_FAMILY (PLATFORM_WINDOWS_FAMILY) -#define PLATFORM_UNIX_FAMILY (PLATFORM_LINUX || PLATFORM_ANDROID || PLATFORM_PS4) +#define PLATFORM_UNIX_FAMILY (PLATFORM_LINUX || PLATFORM_ANDROID || PLATFORM_PS4 || PLATFORM_PS5) #define PLATFORM_APPLE_FAMILY (PLATFORM_IOS || PLATFORM_OSX) // SIMD defines diff --git a/Source/Engine/Platform/File.h b/Source/Engine/Platform/File.h index 3c3eaba51..98696040b 100644 --- a/Source/Engine/Platform/File.h +++ b/Source/Engine/Platform/File.h @@ -10,6 +10,8 @@ #include "Unix/UnixFile.h" #elif PLATFORM_PS4 #include "Unix/UnixFile.h" +#elif PLATFORM_PS5 +#include "Unix/UnixFile.h" #elif PLATFORM_XBOX_ONE #include "Win32/Win32File.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/FileSystem.h b/Source/Engine/Platform/FileSystem.h index b77d642d0..c64be0cf7 100644 --- a/Source/Engine/Platform/FileSystem.h +++ b/Source/Engine/Platform/FileSystem.h @@ -10,6 +10,8 @@ #include "Linux/LinuxFileSystem.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Platform/PS4FileSystem.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5FileSystem.h" #elif PLATFORM_XBOX_ONE #include "Platforms/XboxOne/Engine/Platform/XboxOneFileSystem.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/FileSystemWatcher.h b/Source/Engine/Platform/FileSystemWatcher.h index 035775b6c..c90fcc31d 100644 --- a/Source/Engine/Platform/FileSystemWatcher.h +++ b/Source/Engine/Platform/FileSystemWatcher.h @@ -4,20 +4,10 @@ #if PLATFORM_WINDOWS #include "Windows/WindowsFileSystemWatcher.h" -#elif PLATFORM_UWP -#include "Base/FileSystemWatcherBase.h" #elif PLATFORM_LINUX #include "Linux/LinuxFileSystemWatcher.h" -#elif PLATFORM_PS4 -#include "Base/FileSystemWatcherBase.h" -#elif PLATFORM_XBOX_SCARLETT -#include "Base/FileSystemWatcherBase.h" -#elif PLATFORM_ANDROID -#include "Base/FileSystemWatcherBase.h" -#elif PLATFORM_SWITCH -#include "Base/FileSystemWatcherBase.h" #else -#error Missing File System Watcher implementation! +#include "Base/FileSystemWatcherBase.h" #endif #include "Types.h" diff --git a/Source/Engine/Platform/Network.h b/Source/Engine/Platform/Network.h index 7b7ae2355..1e04b185d 100644 --- a/Source/Engine/Platform/Network.h +++ b/Source/Engine/Platform/Network.h @@ -10,6 +10,8 @@ #include "Unix/UnixNetwork.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Platform/PS4Network.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5Network.h" #elif PLATFORM_XBOX_ONE #include "Win32/Win32Network.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/Platform.Build.cs b/Source/Engine/Platform/Platform.Build.cs index b97af0817..b8f006a25 100644 --- a/Source/Engine/Platform/Platform.Build.cs +++ b/Source/Engine/Platform/Platform.Build.cs @@ -56,6 +56,10 @@ public class Platform : EngineModule options.SourcePaths.Add(Path.Combine(FolderPath, "Unix")); options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Platform")); break; + case TargetPlatform.PS5: + options.SourcePaths.Add(Path.Combine(FolderPath, "Unix")); + options.SourcePaths.Add(Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS5", "Engine", "Platform")); + break; case TargetPlatform.XboxOne: options.SourcePaths.Add(Path.Combine(FolderPath, "Win32")); options.SourcePaths.Add(Path.Combine(FolderPath, "GDK")); @@ -86,6 +90,7 @@ public class Platform : EngineModule AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "XboxOne", "Engine", "Platform", "XboxOnePlatformSettings.h")); AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "XboxScarlett", "Engine", "Platform", "XboxScarlettPlatformSettings.h")); AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS4", "Engine", "Platform", "PS4PlatformSettings.h")); + AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "PS5", "Engine", "Platform", "PS5PlatformSettings.h")); AddSourceFileIfExists(options, Path.Combine(Globals.EngineRoot, "Source", "Platforms", "Switch", "Engine", "Platform", "SwitchPlatformSettings.h")); } } diff --git a/Source/Engine/Platform/Platform.h b/Source/Engine/Platform/Platform.h index 60251d7ae..0b61945e5 100644 --- a/Source/Engine/Platform/Platform.h +++ b/Source/Engine/Platform/Platform.h @@ -16,6 +16,8 @@ #include "Linux/LinuxPlatform.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Platform/PS4Platform.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5Platform.h" #elif PLATFORM_XBOX_ONE #include "Platforms/XboxOne/Engine/Platform/XboxOnePlatform.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/Thread.h b/Source/Engine/Platform/Thread.h index 39f85c429..feb242ebb 100644 --- a/Source/Engine/Platform/Thread.h +++ b/Source/Engine/Platform/Thread.h @@ -10,6 +10,8 @@ #include "Linux/LinuxThread.h" #elif PLATFORM_PS4 #include "Platforms/PS4/Engine/Platform/PS4Thread.h" +#elif PLATFORM_PS5 +#include "Platforms/PS5/Engine/Platform/PS5Thread.h" #elif PLATFORM_XBOX_ONE #include "Win32/Win32Thread.h" #elif PLATFORM_XBOX_SCARLETT diff --git a/Source/Engine/Platform/Types.h b/Source/Engine/Platform/Types.h index ae402bb1a..2120fb1d9 100644 --- a/Source/Engine/Platform/Types.h +++ b/Source/Engine/Platform/Types.h @@ -93,6 +93,30 @@ class PS4Window; typedef PS4Window Window; class PS4Network; typedef PS4Network Network; + +#elif PLATFORM_PS5 + +class ClipboardBase; +typedef ClipboardBase Clipboard; +class UnixCriticalSection; +typedef UnixCriticalSection CriticalSection; +class UnixConditionVariable; +typedef UnixConditionVariable ConditionVariable; +class PS5FileSystem; +typedef PS5FileSystem FileSystem; +class FileSystemWatcherBase; +typedef FileSystemWatcherBase FileSystemWatcher; +class UnixFile; +typedef UnixFile File; +class PS5Platform; +typedef PS5Platform Platform; +class PS5Thread; +typedef PS5Thread Thread; +class PS5Window; +typedef PS5Window Window; +class PS5Network; +typedef PS5Network Network; + #elif PLATFORM_XBOX_ONE class ClipboardBase; diff --git a/Source/Engine/Platform/Unix/UnixNetwork.cpp b/Source/Engine/Platform/Unix/UnixNetwork.cpp index cc4f63df9..f305d042e 100644 --- a/Source/Engine/Platform/Unix/UnixNetwork.cpp +++ b/Source/Engine/Platform/Unix/UnixNetwork.cpp @@ -1,6 +1,6 @@ // Copyright (c) 2012-2021 Wojciech Figat. All rights reserved. -#if PLATFORM_UNIX && !PLATFORM_PS4 +#if PLATFORM_UNIX && !PLATFORM_PS4 && !PLATFORM_PS5 #include "UnixNetwork.h" #include "Engine/Core/Log.h" diff --git a/Source/Engine/ShadersCompilation/ShadersCompilation.Build.cs b/Source/Engine/ShadersCompilation/ShadersCompilation.Build.cs index d924d5745..82b0fab7b 100644 --- a/Source/Engine/ShadersCompilation/ShadersCompilation.Build.cs +++ b/Source/Engine/ShadersCompilation/ShadersCompilation.Build.cs @@ -58,6 +58,8 @@ public class ShadersCompilation : EngineModule if (Sdk.HasValid("PS4Sdk")) options.PrivateDependencies.Add("ShaderCompilerPS4"); + if (Sdk.HasValid("PS5Sdk")) + options.PrivateDependencies.Add("ShaderCompilerPS5"); } /// diff --git a/Source/Engine/ShadersCompilation/ShadersCompilation.cpp b/Source/Engine/ShadersCompilation/ShadersCompilation.cpp index d39d2a2c5..ec390d6dd 100644 --- a/Source/Engine/ShadersCompilation/ShadersCompilation.cpp +++ b/Source/Engine/ShadersCompilation/ShadersCompilation.cpp @@ -37,6 +37,9 @@ #if COMPILE_WITH_PS4_SHADER_COMPILER #include "Platforms/PS4/Engine/ShaderCompilerPS4/ShaderCompilerPS4.h" #endif +#if COMPILE_WITH_PS5_SHADER_COMPILER +#include "Platforms/PS5/Engine/ShaderCompilerPS5/ShaderCompilerPS5.h" +#endif namespace ShadersCompilationImpl { @@ -151,7 +154,6 @@ ShaderCompiler* ShadersCompilation::CreateCompiler(ShaderProfile profile) switch (profile) { #if COMPILE_WITH_D3D_SHADER_COMPILER - // Direct 3D case ShaderProfile::DirectX_SM4: case ShaderProfile::DirectX_SM5: result = New(profile); @@ -163,16 +165,19 @@ ShaderCompiler* ShadersCompilation::CreateCompiler(ShaderProfile profile) break; #endif #if COMPILE_WITH_VK_SHADER_COMPILER - // Vulkan case ShaderProfile::Vulkan_SM5: result = New(profile); break; #endif #if COMPILE_WITH_PS4_SHADER_COMPILER - // PS4 case ShaderProfile::PS4: result = New(); break; +#endif +#if COMPILE_WITH_PS5_SHADER_COMPILER + case ShaderProfile::PS5: + result = New(); + break; #endif default: break; diff --git a/Source/Engine/Tools/TextureTool/TextureTool.Build.cs b/Source/Engine/Tools/TextureTool/TextureTool.Build.cs index 6d98a0651..61c1d9919 100644 --- a/Source/Engine/Tools/TextureTool/TextureTool.Build.cs +++ b/Source/Engine/Tools/TextureTool/TextureTool.Build.cs @@ -32,6 +32,7 @@ public class TextureTool : EngineModule break; case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.PS5: case TargetPlatform.Android: case TargetPlatform.Switch: useStb = true; diff --git a/Source/Engine/Visject/ShaderGraph.cpp b/Source/Engine/Visject/ShaderGraph.cpp index a15f87df1..e572f4db2 100644 --- a/Source/Engine/Visject/ShaderGraph.cpp +++ b/Source/Engine/Visject/ShaderGraph.cpp @@ -768,6 +768,7 @@ void ShaderGenerator::ProcessGroupTools(Box* box, Node* node, Value& value) PLATFORM_CASE(7, "PLATFORM_XBOX_SCARLETT"); PLATFORM_CASE(8, "PLATFORM_ANDROID"); PLATFORM_CASE(9, "PLATFORM_SWITCH"); + PLATFORM_CASE(10, "PLATFORM_PS5"); #undef PLATFORM_CASE break; } diff --git a/Source/Engine/Visject/VisjectGraph.cpp b/Source/Engine/Visject/VisjectGraph.cpp index 23d1359ba..d8c2abf3b 100644 --- a/Source/Engine/Visject/VisjectGraph.cpp +++ b/Source/Engine/Visject/VisjectGraph.cpp @@ -891,6 +891,9 @@ void VisjectExecutor::ProcessGroupTools(Box* box, Node* node, Value& value) case PlatformType::Switch: boxId = 9; break; + case PlatformType::PS5: + boxId = 10; + break; default: ; } value = tryGetValue(node->GetBox(node->GetBox(boxId)->HasConnection() ? boxId : 1), Value::Zero); diff --git a/Source/ThirdParty/freetype/freetype.Build.cs b/Source/ThirdParty/freetype/freetype.Build.cs index a5f697538..88420b7e1 100644 --- a/Source/ThirdParty/freetype/freetype.Build.cs +++ b/Source/ThirdParty/freetype/freetype.Build.cs @@ -39,6 +39,7 @@ public class freetype : DepsModule break; case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.PS5: case TargetPlatform.Android: case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(depsRoot, "libfreetype.a")); diff --git a/Source/ThirdParty/mono-2.0/mono.Build.cs b/Source/ThirdParty/mono-2.0/mono.Build.cs index 873f368f4..784657d8f 100644 --- a/Source/ThirdParty/mono-2.0/mono.Build.cs +++ b/Source/ThirdParty/mono-2.0/mono.Build.cs @@ -76,6 +76,7 @@ public class mono : DepsModule options.Libraries.Add(Path.Combine(depsRoot, "libmonosgen-2.0.so")); break; case TargetPlatform.PS4: + case TargetPlatform.PS5: options.OutputFiles.Add(Path.Combine(depsRoot, "libmono.a")); options.OutputFiles.Add(Path.Combine(depsRoot, "libmonoruntime.a")); options.OutputFiles.Add(Path.Combine(depsRoot, "libmonoutils.a")); diff --git a/Source/ThirdParty/ogg/ogg.Build.cs b/Source/ThirdParty/ogg/ogg.Build.cs index 168391012..7afd1a306 100644 --- a/Source/ThirdParty/ogg/ogg.Build.cs +++ b/Source/ThirdParty/ogg/ogg.Build.cs @@ -38,6 +38,7 @@ public class ogg : DepsModule break; case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.PS5: case TargetPlatform.Android: case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(depsRoot, "libogg.a")); diff --git a/Source/ThirdParty/vorbis/vorbis.Build.cs b/Source/ThirdParty/vorbis/vorbis.Build.cs index 33580959c..ffc48831a 100644 --- a/Source/ThirdParty/vorbis/vorbis.Build.cs +++ b/Source/ThirdParty/vorbis/vorbis.Build.cs @@ -46,6 +46,7 @@ public class vorbis : DepsModule options.OutputFiles.Add(Path.Combine(depsRoot, "libvorbisfile.a")); break; case TargetPlatform.PS4: + case TargetPlatform.PS5: options.OutputFiles.Add(Path.Combine(depsRoot, "libvorbis.a")); break; default: throw new InvalidPlatformException(options.Platform.Target); diff --git a/Source/Tools/Flax.Build/Build/DepsModule.cs b/Source/Tools/Flax.Build/Build/DepsModule.cs index 423485b1c..dfd9defce 100644 --- a/Source/Tools/Flax.Build/Build/DepsModule.cs +++ b/Source/Tools/Flax.Build/Build/DepsModule.cs @@ -30,6 +30,7 @@ namespace Flax.Build break; case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.PS5: case TargetPlatform.Android: case TargetPlatform.Switch: options.OutputFiles.Add(Path.Combine(path, string.Format("lib{0}.a", name))); diff --git a/Source/Tools/Flax.Build/Build/Module.cs b/Source/Tools/Flax.Build/Build/Module.cs index 61baba9ef..942cc8e2b 100644 --- a/Source/Tools/Flax.Build/Build/Module.cs +++ b/Source/Tools/Flax.Build/Build/Module.cs @@ -93,6 +93,7 @@ namespace Flax.Build case TargetPlatform.UWP: return "PLATFORM_UWP"; case TargetPlatform.Linux: return "PLATFORM_LINUX"; case TargetPlatform.PS4: return "PLATFORM_PS4"; + case TargetPlatform.PS5: return "PLATFORM_PS5"; case TargetPlatform.XboxScarlett: return "PLATFORM_XBOX_SCARLETT"; case TargetPlatform.Android: return "PLATFORM_ANDROID"; case TargetPlatform.Switch: return "PLATFORM_SWITCH"; diff --git a/Source/Tools/Flax.Build/Build/Platform.cs b/Source/Tools/Flax.Build/Build/Platform.cs index 5974206ba..ebc4e9023 100644 --- a/Source/Tools/Flax.Build/Build/Platform.cs +++ b/Source/Tools/Flax.Build/Build/Platform.cs @@ -239,6 +239,7 @@ namespace Flax.Build case TargetPlatform.UWP: return targetArchitecture == TargetArchitecture.x64; case TargetPlatform.Linux: return targetArchitecture == TargetArchitecture.x64; case TargetPlatform.PS4: return targetArchitecture == TargetArchitecture.x64; + case TargetPlatform.PS5: return targetArchitecture == TargetArchitecture.x64; case TargetPlatform.Android: return targetArchitecture == TargetArchitecture.ARM64; case TargetPlatform.Switch: return targetArchitecture == TargetArchitecture.ARM64; default: return false; diff --git a/Source/Tools/Flax.Build/Build/TargetPlatform.cs b/Source/Tools/Flax.Build/Build/TargetPlatform.cs index 8efb50cea..81b84b6e9 100644 --- a/Source/Tools/Flax.Build/Build/TargetPlatform.cs +++ b/Source/Tools/Flax.Build/Build/TargetPlatform.cs @@ -46,6 +46,11 @@ namespace Flax.Build /// Running on Switch. /// Switch = 8, + + /// + /// Running on PlayStation 5. + /// + PS5 = 9, } /// diff --git a/Source/Tools/Flax.Build/Deps/Dependency.cs b/Source/Tools/Flax.Build/Deps/Dependency.cs index 17d158d42..0a873334e 100644 --- a/Source/Tools/Flax.Build/Deps/Dependency.cs +++ b/Source/Tools/Flax.Build/Deps/Dependency.cs @@ -238,6 +238,7 @@ namespace Flax.Deps } case TargetPlatform.Linux: case TargetPlatform.PS4: + case TargetPlatform.PS5: { cmdLine = "CMakeLists.txt"; break; diff --git a/Source/Tools/Flax.Build/Flax.Build.csproj b/Source/Tools/Flax.Build/Flax.Build.csproj index bcb38799b..abf2bfd86 100644 --- a/Source/Tools/Flax.Build/Flax.Build.csproj +++ b/Source/Tools/Flax.Build/Flax.Build.csproj @@ -138,6 +138,7 @@ + diff --git a/Source/Tools/Flax.Build/Globals.cs b/Source/Tools/Flax.Build/Globals.cs index 27bb78ac3..a9a29af88 100644 --- a/Source/Tools/Flax.Build/Globals.cs +++ b/Source/Tools/Flax.Build/Globals.cs @@ -32,6 +32,7 @@ namespace Flax.Build TargetPlatform.XboxOne, TargetPlatform.Linux, TargetPlatform.PS4, + TargetPlatform.PS5, TargetPlatform.XboxScarlett, TargetPlatform.Android, TargetPlatform.Switch, diff --git a/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs b/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs index 0d74bb5e9..758e2dfb1 100644 --- a/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs +++ b/Source/Tools/Flax.Build/Platforms/Unix/UnixToolchain.cs @@ -182,6 +182,7 @@ namespace Flax.Build.Platforms default: throw new InvalidArchitectureException(architecture); } case TargetPlatform.PS4: return (string)Utilities.GetStaticValue("Flax.Build.Platforms.PS4Toolchain", "ToolchainName"); + case TargetPlatform.PS5: return (string)Utilities.GetStaticValue("Flax.Build.Platforms.PS5Toolchain", "ToolchainName"); case TargetPlatform.Android: switch (architecture) { diff --git a/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs b/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs index 286b29483..af5890075 100644 --- a/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs +++ b/Source/Tools/Flax.Build/Platforms/Windows/WindowsPlatform.cs @@ -58,6 +58,7 @@ namespace Flax.Build.Platforms case TargetPlatform.Windows: return GetSDKs().Count != 0; case TargetPlatform.UWP: return GetSDKs().FirstOrDefault(x => x.Key != WindowsPlatformSDK.v8_1).Value != null; case TargetPlatform.PS4: return Sdk.HasValid("PS4Sdk"); + case TargetPlatform.PS5: return Sdk.HasValid("PS5Sdk"); case TargetPlatform.XboxOne: case TargetPlatform.XboxScarlett: return GetSDKs().ContainsKey(WindowsPlatformSDK.v10_0_19041_0) && Sdk.HasValid("GDK"); case TargetPlatform.Android: return AndroidSdk.Instance.IsValid && AndroidNdk.Instance.IsValid;