From 7c359755e7cffe4ef03668fb6e4c9784eafd72e4 Mon Sep 17 00:00:00 2001 From: Umesh Ramchandani Date: Sat, 3 Nov 2018 19:33:15 +0530 Subject: [PATCH 1/2] Upgrade to 4.20 Changed the location of shader folder due to compilation failure and updated the macro call and function parameter to make it run on 4.20 --- .gitignore | 74 ++++++++++ Config/DefaultEngine.ini | 67 +++++++++ .../Shaders/Private}/ComputeFishShader.usf | 2 +- .../Private/ShaderFishPlugin.cpp | 11 +- .../Public/ShaderFishPlugin.h | 33 +++-- SchoolOfFish.sln | 129 +++++++++--------- SchoolOfFish.uproject | 2 +- 7 files changed, 235 insertions(+), 83 deletions(-) create mode 100644 .gitignore create mode 100644 Config/DefaultEngine.ini rename {Shaders => Plugins/ShaderFishPlugin/Shaders/Private}/ComputeFishShader.usf (98%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3fba405 --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +# Visual Studio 2017 user specific files +.vs/ + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.xcworkspace +*.sln +*.suo +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* \ No newline at end of file diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini new file mode 100644 index 0000000..34e3c47 --- /dev/null +++ b/Config/DefaultEngine.ini @@ -0,0 +1,67 @@ +[/Script/EngineSettings.GameMapsSettings] +GlobalDefaultGameMode=/Game/Blueprints/BP_FlockingGameMode.BP_FlockingGameMode_C +EditorStartupMap=/Game/Maps/underwater.underwater +GameDefaultMap=/Game/Maps/underwater.underwater + +[/Script/Engine.PhysicsSettings] +DefaultGravityZ=-980.000000 +DefaultTerminalVelocity=4000.000000 +DefaultFluidFriction=0.300000 +SimulateScratchMemorySize=262144 +RagdollAggregateThreshold=4 +TriangleMeshTriangleMinAreaThreshold=5.000000 +bEnableAsyncScene=False +bEnableShapeSharing=False +bEnablePCM=True +bEnableStabilization=False +bWarnMissingLocks=True +bEnable2DPhysics=False +PhysicErrorCorrection=(PingExtrapolation=0.100000,ErrorPerLinearDifference=1.000000,ErrorPerAngularDifference=1.000000,MaxRestoredStateError=1.000000,PositionLerp=0.000000,AngleLerp=0.400000,LinearVelocityCoefficient=100.000000,AngularVelocityCoefficient=10.000000,ErrorAccumulationSeconds=0.500000,ErrorAccumulationDistanceSq=15.000000,ErrorAccumulationSimilarity=100.000000) +LockedAxis=Invalid +DefaultDegreesOfFreedom=Full3D +BounceThresholdVelocity=200.000000 +FrictionCombineMode=Average +RestitutionCombineMode=Average +MaxAngularVelocity=3600.000000 +MaxDepenetrationVelocity=0.000000 +ContactOffsetMultiplier=0.020000 +MinContactOffset=2.000000 +MaxContactOffset=8.000000 +bSimulateSkeletalMeshOnDedicatedServer=True +DefaultShapeComplexity=CTF_UseSimpleAndComplex +bDefaultHasComplexCollision=True +bSuppressFaceRemapTable=False +bSupportUVFromHitResults=False +bDisableActiveActors=False +bDisableKinematicStaticPairs=False +bDisableKinematicKinematicPairs=False +bDisableCCD=False +bEnableEnhancedDeterminism=False +MaxPhysicsDeltaTime=0.033333 +bSubstepping=False +bSubsteppingAsync=False +MaxSubstepDeltaTime=0.016667 +MaxSubsteps=6 +SyncSceneSmoothingFactor=0.000000 +AsyncSceneSmoothingFactor=0.990000 +InitialAverageFrameRate=0.016667 +PhysXTreeRebuildRate=10 +DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2) + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +Compiler=Default +-TargetedRHIs=PCD3D_SM5 +-TargetedRHIs=PCD3D_SM4 ++TargetedRHIs=PCD3D_SM5 +MinimumOSVersion=MSOS_Vista +AudioDevice= +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +ReverbPlugin= +OcclusionPlugin= + + diff --git a/Shaders/ComputeFishShader.usf b/Plugins/ShaderFishPlugin/Shaders/Private/ComputeFishShader.usf similarity index 98% rename from Shaders/ComputeFishShader.usf rename to Plugins/ShaderFishPlugin/Shaders/Private/ComputeFishShader.usf index ffa6cf3..84817da 100644 --- a/Shaders/ComputeFishShader.usf +++ b/Plugins/ShaderFishPlugin/Shaders/Private/ComputeFishShader.usf @@ -1,4 +1,4 @@ -#include "Common.usf" +#include "/Engine/Private/Common.ush" struct TInfo{ int instanceId; diff --git a/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Private/ShaderFishPlugin.cpp b/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Private/ShaderFishPlugin.cpp index b9bd07f..a7fbaf9 100644 --- a/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Private/ShaderFishPlugin.cpp +++ b/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Private/ShaderFishPlugin.cpp @@ -15,9 +15,9 @@ FShaderFishPluginModule::FShaderFishPluginModule(const ShaderMetaType::CompiledS m_shaderResource.Bind(Initializer.ParameterMap, TEXT("data")); } -void FShaderFishPluginModule::ModifyCompilationEnvironment(EShaderPlatform Platform, FShaderCompilerEnvironment& OutEnvironment) +void FShaderFishPluginModule::ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) { - FGlobalShader::ModifyCompilationEnvironment(Platform, OutEnvironment); + FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment); OutEnvironment.CompilerFlags.Add(CFLAG_StandardOptimization); } @@ -41,6 +41,11 @@ void FShaderFishPluginModule::cleanupShaderData(FRHICommandList& commandList) commandList.SetUAVParameter(GetComputeShader(), m_shaderResource.GetBaseIndex(), FUnorderedAccessViewRHIRef()); } -IMPLEMENT_SHADER_TYPE(, FShaderFishPluginModule, TEXT("ComputeFishShader"), TEXT("VS_test"), SF_Compute); +bool FShaderFishPluginModule::ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) +{ + return true; +} + +IMPLEMENT_SHADER_TYPE(, FShaderFishPluginModule, TEXT("/Plugin/ShaderFishPlugin/Private/ComputeFishShader.usf"), TEXT("VS_test"), SF_Compute); IMPLEMENT_MODULE(FDefaultModuleImpl, ShaderFishPlugin) \ No newline at end of file diff --git a/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Public/ShaderFishPlugin.h b/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Public/ShaderFishPlugin.h index 789eb1c..da7d2f5 100644 --- a/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Public/ShaderFishPlugin.h +++ b/Plugins/ShaderFishPlugin/Source/ShaderFishPlugin/Public/ShaderFishPlugin.h @@ -7,23 +7,23 @@ #include "RHICommandList.h" BEGIN_UNIFORM_BUFFER_STRUCT(FConstantParameters, ) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(int, fishCount) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, radiusCohesion) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, radiusSeparation) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, radiusAlignment) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, mapRangeX) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, mapRangeY) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, mapRangeZ) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, kCohesion) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, kSeparation) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, kAlignment) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, maxAcceleration) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, maxVelocity) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(int, calculationsPerThread) +UNIFORM_MEMBER(int, fishCount) +UNIFORM_MEMBER(float, radiusCohesion) +UNIFORM_MEMBER(float, radiusSeparation) +UNIFORM_MEMBER(float, radiusAlignment) +UNIFORM_MEMBER(float, mapRangeX) +UNIFORM_MEMBER(float, mapRangeY) +UNIFORM_MEMBER(float, mapRangeZ) +UNIFORM_MEMBER(float, kCohesion) +UNIFORM_MEMBER(float, kSeparation) +UNIFORM_MEMBER(float, kAlignment) +UNIFORM_MEMBER(float, maxAcceleration) +UNIFORM_MEMBER(float, maxVelocity) +UNIFORM_MEMBER(int, calculationsPerThread) END_UNIFORM_BUFFER_STRUCT(FConstantParameters) BEGIN_UNIFORM_BUFFER_STRUCT(FVariableParameters, ) -DECLARE_UNIFORM_BUFFER_STRUCT_MEMBER(float, DeltaTime) +UNIFORM_MEMBER(float, DeltaTime) END_UNIFORM_BUFFER_STRUCT(FVariableParameters) typedef TUniformBufferRef FConstantParametersRef; @@ -37,7 +37,7 @@ class FShaderFishPluginModule : public FGlobalShader explicit FShaderFishPluginModule(const ShaderMetaType::CompiledShaderInitializerType& Initializer); static bool ShouldCache(EShaderPlatform Platform) { return IsFeatureLevelSupported(Platform, ERHIFeatureLevel::SM5); } - static void ModifyCompilationEnvironment(EShaderPlatform Platform, FShaderCompilerEnvironment& OutEnvironment); + static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment); virtual bool Serialize(FArchive& Ar) override { bool bShaderHasOutdatedParams = FGlobalShader::Serialize(Ar); Ar << m_shaderResource; return bShaderHasOutdatedParams; } @@ -45,6 +45,9 @@ class FShaderFishPluginModule : public FGlobalShader void setUniformBuffers(FRHICommandList& commandList, FConstantParameters& constants, FVariableParameters& variables); void cleanupShaderData(FRHICommandList& commandList); + //Required Function in UE4.20 + static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters); + private: FShaderResourceParameter m_shaderResource; }; \ No newline at end of file diff --git a/SchoolOfFish.sln b/SchoolOfFish.sln index e6d1986..ad8e4ee 100644 --- a/SchoolOfFish.sln +++ b/SchoolOfFish.sln @@ -1,15 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26430.13 +VisualStudioVersion = 15.0.25807.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{E6804BAE-67BC-4AAA-98AB-E476384C577A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{5B025A1E-C29A-4836-9EA1-2225BD77BF00}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{89FE5282-399E-4D2B-8B59-96196BDEFB2A}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{B8B514BC-1792-437F-9E79-6EB9EC58DA9A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UE4", "Intermediate\ProjectFiles\UE4.vcxproj", "{8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UE4", "Intermediate\ProjectFiles\UE4.vcxproj", "{DE45DC1B-B485-4833-997E-7F0619126F8E}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SchoolOfFish", "Intermediate\ProjectFiles\SchoolOfFish.vcxproj", "{D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SchoolOfFish", "Intermediate\ProjectFiles\SchoolOfFish.vcxproj", "{5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -30,68 +30,71 @@ Global Shipping|Win64 = Shipping|Win64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.DebugGame|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Development|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F}.Shipping|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame Editor|HTML5.ActiveCfg = HTML5_DebugGame_Editor|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame Editor|Win32.ActiveCfg = DebugGame_Editor|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame Editor|Win64.ActiveCfg = DebugGame_Editor|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame Editor|Win64.Build.0 = DebugGame_Editor|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|HTML5.ActiveCfg = HTML5_DebugGame_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|HTML5.Build.0 = HTML5_DebugGame_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|Win32.ActiveCfg = DebugGame_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|Win32.Build.0 = DebugGame_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|Win64.ActiveCfg = DebugGame_Game|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.DebugGame|Win64.Build.0 = DebugGame_Game|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development Editor|HTML5.ActiveCfg = HTML5_Development_Editor|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development Editor|Win32.ActiveCfg = Development_Editor|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development Editor|Win64.ActiveCfg = Development_Editor|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development Editor|Win64.Build.0 = Development_Editor|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|HTML5.ActiveCfg = HTML5_Development_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|HTML5.Build.0 = HTML5_Development_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|Win32.ActiveCfg = Development_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|Win32.Build.0 = Development_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|Win64.ActiveCfg = Development_Game|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Development|Win64.Build.0 = Development_Game|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|HTML5.ActiveCfg = HTML5_Shipping_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|HTML5.Build.0 = HTML5_Shipping_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|Win32.ActiveCfg = Shipping_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|Win32.Build.0 = Shipping_Game|Win32 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|Win64.ActiveCfg = Shipping_Game|x64 - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403}.Shipping|Win64.Build.0 = Shipping_Game|x64 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.DebugGame|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Development|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|HTML5.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|HTML5.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32 + {DE45DC1B-B485-4833-997E-7F0619126F8E}.Shipping|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame Editor|HTML5.ActiveCfg = HTML5_DebugGame_Editor|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame Editor|Win32.ActiveCfg = DebugGame_Editor|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame Editor|Win64.ActiveCfg = DebugGame_Editor|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame Editor|Win64.Build.0 = DebugGame_Editor|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|HTML5.ActiveCfg = HTML5_DebugGame_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|HTML5.Build.0 = HTML5_DebugGame_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|Win32.ActiveCfg = DebugGame_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|Win32.Build.0 = DebugGame_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|Win64.ActiveCfg = DebugGame_Game|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.DebugGame|Win64.Build.0 = DebugGame_Game|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development Editor|HTML5.ActiveCfg = HTML5_Development_Editor|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development Editor|Win32.ActiveCfg = Development_Editor|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development Editor|Win64.ActiveCfg = Development_Editor|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development Editor|Win64.Build.0 = Development_Editor|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|HTML5.ActiveCfg = HTML5_Development_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|HTML5.Build.0 = HTML5_Development_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|Win32.ActiveCfg = Development_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|Win32.Build.0 = Development_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|Win64.ActiveCfg = Development_Game|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Development|Win64.Build.0 = Development_Game|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|HTML5.ActiveCfg = HTML5_Shipping_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|HTML5.Build.0 = HTML5_Shipping_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|Win32.ActiveCfg = Shipping_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|Win32.Build.0 = Shipping_Game|Win32 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|Win64.ActiveCfg = Shipping_Game|x64 + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1}.Shipping|Win64.Build.0 = Shipping_Game|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {8BF431AC-E4EB-40CC-A032-A48A75E1BE6F} = {E6804BAE-67BC-4AAA-98AB-E476384C577A} - {D53EBB09-BEA6-4F66-BEDF-A2D4FB213403} = {89FE5282-399E-4D2B-8B59-96196BDEFB2A} + {DE45DC1B-B485-4833-997E-7F0619126F8E} = {5B025A1E-C29A-4836-9EA1-2225BD77BF00} + {5D96B0C2-B8DA-4D99-95A6-4060ED1BFBE1} = {B8B514BC-1792-437F-9E79-6EB9EC58DA9A} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {9C9916FC-5C9F-4476-B109-50EBF8C0C49D} EndGlobalSection EndGlobal diff --git a/SchoolOfFish.uproject b/SchoolOfFish.uproject index 81efcb2..7adcfc2 100644 --- a/SchoolOfFish.uproject +++ b/SchoolOfFish.uproject @@ -1,6 +1,6 @@ { "FileVersion": 3, - "EngineAssociation": "4.16", + "EngineAssociation": "4.20", "Category": "", "Description": "", "Modules": [ From e4d73150be9748a1204c7b3c2b0d52ddf0900d77 Mon Sep 17 00:00:00 2001 From: Umesh Ramchandani Date: Sat, 3 Nov 2018 19:43:05 +0530 Subject: [PATCH 2/2] Upgrade to 4.20 ISM converted to HISM as the editor was crashing when ISM was used due to MarkRenderStateDirty() but the fishes flicker alot --- Source/SchoolOfFish/FishAgent.cpp | 2 +- Source/SchoolOfFish/FishAgent.h | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Source/SchoolOfFish/FishAgent.cpp b/Source/SchoolOfFish/FishAgent.cpp index fdc5efe..c297792 100644 --- a/Source/SchoolOfFish/FishAgent.cpp +++ b/Source/SchoolOfFish/FishAgent.cpp @@ -105,7 +105,7 @@ AFishAgent::AFishAgent() void AFishAgent::OnConstruction(const FTransform& Transform) { - m_instancedStaticMeshComponent = NewObject(this); + m_instancedStaticMeshComponent = NewObject(this); m_instancedStaticMeshComponent->RegisterComponent(); m_instancedStaticMeshComponent->SetStaticMesh(m_staticMesh); m_instancedStaticMeshComponent->SetFlags(RF_Transactional); diff --git a/Source/SchoolOfFish/FishAgent.h b/Source/SchoolOfFish/FishAgent.h index 860b38b..0ab6614 100644 --- a/Source/SchoolOfFish/FishAgent.h +++ b/Source/SchoolOfFish/FishAgent.h @@ -4,10 +4,12 @@ #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Components/SphereComponent.h" -#include "Components/InstancedStaticMeshComponent.h" +//#include "Components/InstancedStaticMeshComponent.h" +#include "Components/HierarchicalInstancedStaticMeshComponent.h" #include "FishProcessing.h" #include "FishAgent.generated.h" + struct FishState { int32 instanceId; FVector position; @@ -76,7 +78,9 @@ class SCHOOLOFFISH_API AFishAgent : public AActor UStaticMesh *m_staticMesh; // Fish instanced static mesh component. This component contains all of the fish instances on the scene - UInstancedStaticMeshComponent *m_instancedStaticMeshComponent; + //UInstancedStaticMeshComponent *m_instancedStaticMeshComponent; + //Changed to HISM due to editor crashing when ISM is used + UHierarchicalInstancedStaticMeshComponent *m_instancedStaticMeshComponent; // Pointer to the class FishProcessing which uses compute shader plugin to calculate flocking behaviour on GPU FishProcessing *m_gpuProcessing;