Add **Depth Offset to materials**
This commit is contained in:
@@ -27,10 +27,12 @@ MaterialGenerator::MaterialGraphBoxesMapping MaterialGenerator::MaterialGraphBox
|
||||
{ 12, TEXT("TessellationMultiplier"), MaterialTreeType::VertexShader, MaterialValue(VariantType::Float, TEXT("4.0f")) },
|
||||
{ 13, TEXT("WorldDisplacement"), MaterialTreeType::DomainShader, MaterialValue::InitForZero(VariantType::Float3) },
|
||||
{ 14, TEXT("SubsurfaceColor"), MaterialTreeType::PixelShader, MaterialValue::InitForZero(VariantType::Float3) },
|
||||
{ 15, TEXT("DepthOffset"), MaterialTreeType::PixelShader, MaterialValue::InitForZero(VariantType::Float) },
|
||||
};
|
||||
|
||||
const MaterialGenerator::MaterialGraphBoxesMapping& MaterialGenerator::GetMaterialRootNodeBox(MaterialGraphBoxes box)
|
||||
{
|
||||
static_assert(ARRAY_COUNT(MaterialGenerator::MaterialGraphBoxesMappings) == 16, "Invalid amount of boxes added for root node. Please update the code above");
|
||||
return MaterialGraphBoxesMappings[static_cast<int32>(box)];
|
||||
}
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
||||
EAT_BOX(AmbientOcclusion);
|
||||
EAT_BOX(Opacity);
|
||||
EAT_BOX(Refraction);
|
||||
EAT_BOX(DepthOffset);
|
||||
EAT_BOX(Mask);
|
||||
EAT_BOX(Emissive);
|
||||
EAT_BOX(SubsurfaceColor);
|
||||
@@ -204,6 +205,7 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
||||
EAT_BOX(AmbientOcclusion);
|
||||
EAT_BOX(Opacity);
|
||||
EAT_BOX(Refraction);
|
||||
EAT_BOX(DepthOffset);
|
||||
EAT_BOX(Mask);
|
||||
EAT_BOX(Emissive);
|
||||
EAT_BOX(SubsurfaceColor);
|
||||
@@ -246,12 +248,15 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
||||
EAT_BOX(AmbientOcclusion);
|
||||
EAT_BOX(Opacity);
|
||||
EAT_BOX(Refraction);
|
||||
EAT_BOX(DepthOffset);
|
||||
EAT_BOX(Mask);
|
||||
EAT_BOX(Emissive);
|
||||
|
||||
CHECK_MATERIAL_FEATURE(Emissive, UseEmissive);
|
||||
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
||||
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
||||
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
||||
CHECK_MATERIAL_FEATURE(DepthOffset, UseDepthOffset);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -331,6 +336,7 @@ void MaterialGenerator::ProcessGroupLayers(Box* box, Node* node, Value& value)
|
||||
CHECK_MATERIAL_FEATURE(Normal, UseNormal);
|
||||
CHECK_MATERIAL_FEATURE(Mask, UseMask);
|
||||
CHECK_MATERIAL_FEATURE(Refraction, UseRefraction);
|
||||
CHECK_MATERIAL_FEATURE(DepthOffset, UseDepthOffset);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -256,6 +256,7 @@ bool MaterialGenerator::Generate(WriteStream& source, MaterialInfo& materialInfo
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Roughness);
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Opacity);
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Refraction);
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::DepthOffset);
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::SubsurfaceColor);
|
||||
eatMaterialGraphBox(baseLayer, MaterialGraphBoxes::Mask);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
#include "Engine/Graphics/Materials/MaterialInfo.h"
|
||||
#include "Engine/Graphics/Materials/MaterialParams.h"
|
||||
#include "Engine/Content/AssetsContainer.h"
|
||||
#include "MaterialLayer.h"
|
||||
#include "Types.h"
|
||||
|
||||
@@ -90,6 +89,11 @@ enum class MaterialGraphBoxes
|
||||
/// </summary>
|
||||
SubsurfaceColor = 14,
|
||||
|
||||
/// <summary>
|
||||
/// The custom depth offset applied per-pixel.
|
||||
/// </summary>
|
||||
DepthOffset = 15,
|
||||
|
||||
/// <summary>
|
||||
/// The amount of input boxes.
|
||||
/// </summary>
|
||||
|
||||
@@ -129,6 +129,7 @@ void MaterialLayer::UpdateFeaturesFlags()
|
||||
CHECK_BOX_AS_FEATURE(PositionOffset, UsePositionOffset);
|
||||
CHECK_BOX_AS_FEATURE(WorldDisplacement, UseDisplacement);
|
||||
CHECK_BOX_AS_FEATURE(Refraction, UseRefraction);
|
||||
CHECK_BOX_AS_FEATURE(DepthOffset, UseDepthOffset);
|
||||
#undef CHECK_BOX_AS_FEATURE
|
||||
}
|
||||
|
||||
@@ -179,7 +180,8 @@ MaterialLayer* MaterialLayer::Load(const Guid& id, ReadStream* graphData, const
|
||||
ADD_BOX(TessellationMultiplier, Float);
|
||||
ADD_BOX(WorldDisplacement, Float3);
|
||||
ADD_BOX(SubsurfaceColor, Float3);
|
||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes added for root node. Please update the code above");
|
||||
ADD_BOX(DepthOffset, Float);
|
||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes added for root node. Please update the code above");
|
||||
ASSERT(layer->Root->Boxes.Count() == static_cast<int32>(MaterialGraphBoxes::MAX));
|
||||
#if BUILD_DEBUG
|
||||
// Test for valid pointers after node upgrade
|
||||
@@ -225,11 +227,12 @@ void MaterialLayer::createRootNode()
|
||||
INIT_BOX(Normal, Float3);
|
||||
INIT_BOX(Opacity, Float);
|
||||
INIT_BOX(Refraction, Float);
|
||||
INIT_BOX(DepthOffset, Float);
|
||||
INIT_BOX(PositionOffset, Float3);
|
||||
INIT_BOX(TessellationMultiplier, Float);
|
||||
INIT_BOX(WorldDisplacement, Float3);
|
||||
INIT_BOX(SubsurfaceColor, Float3);
|
||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes created for root node. Please update the code above");
|
||||
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes created for root node. Please update the code above");
|
||||
#undef INIT_BOX
|
||||
|
||||
// Mark as root
|
||||
|
||||
Reference in New Issue
Block a user