Add default Deformable material for splines

This commit is contained in:
Wojtek Figat
2021-02-10 11:37:34 +01:00
parent 81e41d51c8
commit 5cb2322270
7 changed files with 23 additions and 4 deletions

Binary file not shown.

BIN
Content/Engine/DefaultDeformableMaterial.flax (Stored with Git LFS) Normal file

Binary file not shown.

View File

@@ -74,6 +74,7 @@ bool DeployDataStep::Perform(CookingData& data)
data.AddRootEngineAsset(TEXT("Shaders/SSR")); data.AddRootEngineAsset(TEXT("Shaders/SSR"));
data.AddRootEngineAsset(TEXT("Shaders/VolumetricFog")); data.AddRootEngineAsset(TEXT("Shaders/VolumetricFog"));
data.AddRootEngineAsset(TEXT("Engine/DefaultMaterial")); data.AddRootEngineAsset(TEXT("Engine/DefaultMaterial"));
data.AddRootEngineAsset(TEXT("Engine/DefaultDeformableMaterial"));
data.AddRootEngineAsset(TEXT("Engine/DefaultTerrainMaterial")); data.AddRootEngineAsset(TEXT("Engine/DefaultTerrainMaterial"));
if (!gameSettings->NoSplashScreen && !gameSettings->SplashScreen.IsValid()) if (!gameSettings->NoSplashScreen && !gameSettings->SplashScreen.IsValid())
data.AddRootEngineAsset(TEXT("Engine/Textures/Logo")); data.AddRootEngineAsset(TEXT("Engine/Textures/Logo"));

View File

@@ -18,6 +18,7 @@
#include "Engine/Profiler/Profiler.h" #include "Engine/Profiler/Profiler.h"
#include "Engine/Renderer/RenderList.h" #include "Engine/Renderer/RenderList.h"
#include "Engine/Core/Utilities.h" #include "Engine/Core/Utilities.h"
#include "Engine/Scripting/SoftObjectReference.h"
GPUPipelineState* GPUPipelineState::Spawn(const SpawnParams& params) GPUPipelineState* GPUPipelineState::Spawn(const SpawnParams& params)
{ {
@@ -127,6 +128,7 @@ struct GPUDevice::PrivateData
GPUPipelineState* PS_Clear = nullptr; GPUPipelineState* PS_Clear = nullptr;
GPUBuffer* FullscreenTriangleVB = nullptr; GPUBuffer* FullscreenTriangleVB = nullptr;
AssetReference<Material> DefaultMaterial; AssetReference<Material> DefaultMaterial;
SoftObjectReference<Material> DefaultDeformableMaterial;
AssetReference<Texture> DefaultNormalMap; AssetReference<Texture> DefaultNormalMap;
AssetReference<Texture> DefaultWhiteTexture; AssetReference<Texture> DefaultWhiteTexture;
AssetReference<Texture> DefaultBlackTexture; AssetReference<Texture> DefaultBlackTexture;
@@ -206,6 +208,7 @@ bool GPUDevice::LoadContent()
_res->DefaultMaterial = Content::LoadAsyncInternal<Material>(TEXT("Engine/DefaultMaterial")); _res->DefaultMaterial = Content::LoadAsyncInternal<Material>(TEXT("Engine/DefaultMaterial"));
if (_res->DefaultMaterial == nullptr) if (_res->DefaultMaterial == nullptr)
return true; return true;
_res->DefaultDeformableMaterial = Guid(0x639e12c0, 0x42d34bae, 0x89dd8b81, 0x7e1efc2d);
// Load default normal map // Load default normal map
_res->DefaultNormalMap = Content::LoadAsyncInternal<Texture>(TEXT("Engine/Textures/NormalTexture")); _res->DefaultNormalMap = Content::LoadAsyncInternal<Texture>(TEXT("Engine/Textures/NormalTexture"));
@@ -231,6 +234,7 @@ void GPUDevice::preDispose()
// Release resources // Release resources
_res->DefaultMaterial = nullptr; _res->DefaultMaterial = nullptr;
_res->DefaultDeformableMaterial = nullptr;
_res->DefaultNormalMap = nullptr; _res->DefaultNormalMap = nullptr;
_res->DefaultWhiteTexture = nullptr; _res->DefaultWhiteTexture = nullptr;
_res->DefaultBlackTexture = nullptr; _res->DefaultBlackTexture = nullptr;
@@ -380,6 +384,11 @@ MaterialBase* GPUDevice::GetDefaultMaterial() const
return _res->DefaultMaterial; return _res->DefaultMaterial;
} }
MaterialBase* GPUDevice::GetDefaultDeformableMaterial() const
{
return _res->DefaultDeformableMaterial.Get();
}
GPUTexture* GPUDevice::GetDefaultNormalMap() const GPUTexture* GPUDevice::GetDefaultNormalMap() const
{ {
return _res->DefaultNormalMap ? _res->DefaultNormalMap->GetTexture() : nullptr; return _res->DefaultNormalMap ? _res->DefaultNormalMap->GetTexture() : nullptr;

View File

@@ -234,6 +234,11 @@ public:
/// </summary> /// </summary>
MaterialBase* GetDefaultMaterial() const; MaterialBase* GetDefaultMaterial() const;
/// <summary>
/// Gets the default material (Deformable domain).
/// </summary>
MaterialBase* GetDefaultDeformableMaterial() const;
/// <summary> /// <summary>
/// Gets the default normal map texture. /// Gets the default normal map texture.
/// </summary> /// </summary>

View File

@@ -408,7 +408,7 @@ void SplineModel::Draw(RenderContext& renderContext)
else if (slot.Material && slot.Material->IsLoaded()) else if (slot.Material && slot.Material->IsLoaded())
material = slot.Material; material = slot.Material;
else else
material = nullptr; material = GPUDevice::Instance->GetDefaultDeformableMaterial();
if (!material || !material->IsDeformable()) if (!material || !material->IsDeformable())
continue; continue;

View File

@@ -311,9 +311,10 @@ public:
/// Sets the object. /// Sets the object.
/// </summary> /// </summary>
/// <param name="id">The object ID. Uses Scripting to find the registered object of the given ID.</param> /// <param name="id">The object ID. Uses Scripting to find the registered object of the given ID.</param>
FORCE_INLINE void Set(const Guid& id) void Set(const Guid& id)
{ {
Set(static_cast<T*>(FindObject(id, T::GetStaticClass()))); _id = id;
_object = nullptr;
} }
/// <summary> /// <summary>