Revert Depth Offset (wrong impl, can be done later)

This commit is contained in:
Wojtek Figat
2023-01-31 14:22:37 +01:00
parent c46ea56af2
commit 0709288eac
12 changed files with 9 additions and 67 deletions

View File

@@ -426,9 +426,6 @@ void Material::InitCompilationOptions(ShaderCompilationOptions& options)
info.BlendMode != MaterialBlendMode::Opaque &&
EnumHasAnyFlags(info.UsageFlags, MaterialUsageFlags::UseRefraction) &&
(info.FeaturesFlags & MaterialFeaturesFlags::DisableDistortion) == MaterialFeaturesFlags::None;
const bool useDepthOffset =
(info.Domain == MaterialDomain::Surface) &&
EnumHasAnyFlags(info.UsageFlags, MaterialUsageFlags::UseDepthOffset);
// @formatter:off
static const char* Numbers[] =
@@ -499,7 +496,6 @@ void Material::InitCompilationOptions(ShaderCompilationOptions& options)
options.Macros.Add({ "USE_FORWARD", Numbers[useForward ? 1 : 0] });
options.Macros.Add({ "USE_DEFERRED", Numbers[isSurfaceOrTerrainOrDeformable && info.BlendMode == MaterialBlendMode::Opaque ? 1 : 0] });
options.Macros.Add({ "USE_DISTORTION", Numbers[useDistortion ? 1 : 0] });
options.Macros.Add({ "USE_DEPTH_OFFSET", Numbers[useDepthOffset ? 1 : 0] });
#endif
}

View File

@@ -330,11 +330,6 @@ API_ENUM(Attributes="Flags") enum class MaterialUsageFlags : uint32
/// The flag used to indicate that material uses refraction feature.
/// </summary>
UseRefraction = 1 << 6,
/// <summary>
/// The flag used to indicate that material uses per-pixel depth offset feature.
/// </summary>
UseDepthOffset = 1 << 7,
};
DECLARE_ENUM_OPERATORS(MaterialUsageFlags);

View File

@@ -27,12 +27,11 @@ 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");
static_assert(ARRAY_COUNT(MaterialGenerator::MaterialGraphBoxesMappings) == 15, "Invalid amount of boxes added for root node. Please update the code above");
return MaterialGraphBoxesMappings[static_cast<int32>(box)];
}

View File

@@ -103,7 +103,6 @@ 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);
@@ -205,7 +204,6 @@ 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);
@@ -248,7 +246,6 @@ 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);
@@ -256,7 +253,6 @@ 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;
}
@@ -336,7 +332,6 @@ 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;
}

View File

@@ -256,7 +256,6 @@ 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);
}

View File

@@ -89,11 +89,6 @@ enum class MaterialGraphBoxes
/// </summary>
SubsurfaceColor = 14,
/// <summary>
/// The custom depth offset applied per-pixel.
/// </summary>
DepthOffset = 15,
/// <summary>
/// The amount of input boxes.
/// </summary>

View File

@@ -129,7 +129,6 @@ 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
}
@@ -171,17 +170,16 @@ MaterialLayer* MaterialLayer::Load(const Guid& id, ReadStream* graphData, const
LOG(Warning, "Missing root node in '{0}'.", caller);
layer->createRootNode();
}
// Ensure to have valid root node
else if (layer->Root->Boxes.Count() != static_cast<int32>(MaterialGraphBoxes::MAX))
// Ensure to have valid root node
else if (layer->Root->Boxes.Count() < static_cast<int32>(MaterialGraphBoxes::MAX))
{
#define ADD_BOX(type, valueType) \
if(layer->Root->Boxes.Count() <= static_cast<int32>(MaterialGraphBoxes::type)) \
if (layer->Root->Boxes.Count() <= static_cast<int32>(MaterialGraphBoxes::type)) \
layer->Root->Boxes.Add(MaterialGraphBox(layer->Root, static_cast<int32>(MaterialGraphBoxes::type), VariantType::valueType))
ADD_BOX(TessellationMultiplier, Float);
ADD_BOX(WorldDisplacement, Float3);
ADD_BOX(SubsurfaceColor, Float3);
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");
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "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
@@ -227,12 +225,11 @@ 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) == 16, "Invalid amount of boxes created for root node. Please update the code above");
static_assert(static_cast<int32>(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes created for root node. Please update the code above");
#undef INIT_BOX
// Mark as root