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;