From 0709288eaccb28ef648f4aac200ff576c2a7e885 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 31 Jan 2023 14:22:37 +0100 Subject: [PATCH] Revert Depth Offset (wrong impl, can be done later) --- .../MaterialTemplates/Features/DeferredShading.hlsl | 8 -------- .../MaterialTemplates/Features/ForwardShading.hlsl | 8 -------- Content/Editor/MaterialTemplates/Surface.shader | 13 ++----------- Source/Editor/Surface/Archetypes/Material.cs | 10 +--------- Source/Engine/Content/Assets/Material.cpp | 4 ---- Source/Engine/Graphics/Materials/MaterialInfo.h | 5 ----- .../MaterialGenerator/MaterialGenerator.Layer.cpp | 3 +-- .../MaterialGenerator/MaterialGenerator.Layers.cpp | 5 ----- .../Tools/MaterialGenerator/MaterialGenerator.cpp | 1 - .../Tools/MaterialGenerator/MaterialGenerator.h | 5 ----- .../Tools/MaterialGenerator/MaterialLayer.cpp | 13 +++++-------- Source/Shaders/MaterialCommon.hlsl | 1 - 12 files changed, 9 insertions(+), 67 deletions(-) diff --git a/Content/Editor/MaterialTemplates/Features/DeferredShading.hlsl b/Content/Editor/MaterialTemplates/Features/DeferredShading.hlsl index 64cecd4f8..fd0023a91 100644 --- a/Content/Editor/MaterialTemplates/Features/DeferredShading.hlsl +++ b/Content/Editor/MaterialTemplates/Features/DeferredShading.hlsl @@ -22,9 +22,6 @@ void PS_GBuffer( #if USE_GBUFFER_CUSTOM_DATA ,out float4 RT3 : SV_Target4 #endif -#endif -#if USE_DEPTH_OFFSET - ,out float Depth : SV_Depth #endif ) { @@ -39,11 +36,6 @@ void PS_GBuffer( MaterialInput materialInput = GetMaterialInput(input); Material material = GetMaterialPS(materialInput); - // Depth offset -#if USE_DEPTH_OFFSET - Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset); -#endif - // Masking #if MATERIAL_MASKED clip(material.Mask - MATERIAL_MASK_THRESHOLD); diff --git a/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl b/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl index 68278f949..cf596bb30 100644 --- a/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl +++ b/Content/Editor/MaterialTemplates/Features/ForwardShading.hlsl @@ -36,9 +36,6 @@ META_PS(USE_FORWARD, FEATURE_LEVEL_ES2) void PS_Forward( in PixelInput input ,out float4 output : SV_Target0 -#if USE_DEPTH_OFFSET - ,out float Depth : SV_Depth -#endif ) { output = 0; @@ -51,11 +48,6 @@ void PS_Forward( // Get material parameters MaterialInput materialInput = GetMaterialInput(input); Material material = GetMaterialPS(materialInput); - - // Depth offset -#if USE_DEPTH_OFFSET - Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset); -#endif // Masking #if MATERIAL_MASKED diff --git a/Content/Editor/MaterialTemplates/Surface.shader b/Content/Editor/MaterialTemplates/Surface.shader index 3e93ddbb6..1e8589ff2 100644 --- a/Content/Editor/MaterialTemplates/Surface.shader +++ b/Content/Editor/MaterialTemplates/Surface.shader @@ -587,18 +587,14 @@ void ClipLODTransition(PixelInput input) // Pixel Shader function for Depth Pass META_PS(true, FEATURE_LEVEL_ES2) -void PS_Depth(PixelInput input -#if USE_DEPTH_OFFSET - ,out float Depth : SV_Depth -#endif - ) +void PS_Depth(PixelInput input) { #if USE_DITHERED_LOD_TRANSITION // LOD masking ClipLODTransition(input); #endif -#if MATERIAL_MASKED || MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE || USE_DEPTH_OFFSET +#if MATERIAL_MASKED || MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE // Get material parameters MaterialInput materialInput = GetMaterialInput(input); Material material = GetMaterialPS(materialInput); @@ -610,11 +606,6 @@ void PS_Depth(PixelInput input #if MATERIAL_BLEND != MATERIAL_BLEND_OPAQUE clip(material.Opacity - MATERIAL_OPACITY_THRESHOLD); #endif - - // Depth offset -#if USE_DEPTH_OFFSET - Depth = (materialInput.SvPosition.z * materialInput.SvPosition.w) / (materialInput.SvPosition.w + material.DepthOffset); -#endif #endif } diff --git a/Source/Editor/Surface/Archetypes/Material.cs b/Source/Editor/Surface/Archetypes/Material.cs index 5182dba50..1a797c67d 100644 --- a/Source/Editor/Surface/Archetypes/Material.cs +++ b/Source/Editor/Surface/Archetypes/Material.cs @@ -40,7 +40,6 @@ namespace FlaxEditor.Surface.Archetypes TessellationMultiplier = 12, WorldDisplacement = 13, SubsurfaceColor = 14, - DepthOffset = 15, }; /// @@ -86,7 +85,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false; return; } @@ -118,7 +116,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = withTess; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = withTess; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = info.ShadingModel == MaterialShadingModel.Subsurface || info.ShadingModel == MaterialShadingModel.Foliage; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = true; break; } case MaterialDomain.PostProcess: @@ -137,7 +134,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false; break; } case MaterialDomain.Decal: @@ -158,7 +154,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false; break; } case MaterialDomain.GUI: @@ -177,7 +172,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false; break; } case MaterialDomain.VolumeParticle: @@ -196,7 +190,6 @@ namespace FlaxEditor.Surface.Archetypes GetBox(MaterialNodeBoxes.TessellationMultiplier).Enabled = false; GetBox(MaterialNodeBoxes.WorldDisplacement).Enabled = false; GetBox(MaterialNodeBoxes.SubsurfaceColor).Enabled = false; - GetBox(MaterialNodeBoxes.DepthOffset).Enabled = false; break; } default: throw new ArgumentOutOfRangeException(); @@ -288,7 +281,7 @@ namespace FlaxEditor.Surface.Archetypes Title = "Material", Description = "Main material node", Flags = NodeFlags.MaterialGraph | NodeFlags.NoRemove | NodeFlags.NoSpawnViaGUI | NodeFlags.NoSpawnViaPaste | NodeFlags.NoCloseButton, - Size = new Float2(150, 320), + Size = new Float2(150, 300), Elements = new[] { NodeElementArchetype.Factory.Input(0, "", true, typeof(void), 0), @@ -306,7 +299,6 @@ namespace FlaxEditor.Surface.Archetypes NodeElementArchetype.Factory.Input(12, "Tessellation Multiplier", true, typeof(float), 12), NodeElementArchetype.Factory.Input(13, "World Displacement", true, typeof(Float3), 13), NodeElementArchetype.Factory.Input(14, "Subsurface Color", true, typeof(Float3), 14), - NodeElementArchetype.Factory.Input(15, "Depth Offset", true, typeof(float), 15), } }, new NodeArchetype diff --git a/Source/Engine/Content/Assets/Material.cpp b/Source/Engine/Content/Assets/Material.cpp index fb2313ff7..76ed34b80 100644 --- a/Source/Engine/Content/Assets/Material.cpp +++ b/Source/Engine/Content/Assets/Material.cpp @@ -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 } diff --git a/Source/Engine/Graphics/Materials/MaterialInfo.h b/Source/Engine/Graphics/Materials/MaterialInfo.h index 11eb8c14f..86fab4548 100644 --- a/Source/Engine/Graphics/Materials/MaterialInfo.h +++ b/Source/Engine/Graphics/Materials/MaterialInfo.h @@ -330,11 +330,6 @@ API_ENUM(Attributes="Flags") enum class MaterialUsageFlags : uint32 /// The flag used to indicate that material uses refraction feature. /// UseRefraction = 1 << 6, - - /// - /// The flag used to indicate that material uses per-pixel depth offset feature. - /// - UseDepthOffset = 1 << 7, }; DECLARE_ENUM_OPERATORS(MaterialUsageFlags); diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp index 993a61469..61a487074 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layer.cpp @@ -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(box)]; } diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layers.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layers.cpp index 7007bf7d9..8db8a0d0d 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layers.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.Layers.cpp @@ -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; } diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.cpp index 20722e494..b1aab0049 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.cpp @@ -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); } diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.h b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.h index d0823d359..f93a2204d 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.h +++ b/Source/Engine/Tools/MaterialGenerator/MaterialGenerator.h @@ -89,11 +89,6 @@ enum class MaterialGraphBoxes /// SubsurfaceColor = 14, - /// - /// The custom depth offset applied per-pixel. - /// - DepthOffset = 15, - /// /// The amount of input boxes. /// diff --git a/Source/Engine/Tools/MaterialGenerator/MaterialLayer.cpp b/Source/Engine/Tools/MaterialGenerator/MaterialLayer.cpp index 8de2d6edb..c09a24e35 100644 --- a/Source/Engine/Tools/MaterialGenerator/MaterialLayer.cpp +++ b/Source/Engine/Tools/MaterialGenerator/MaterialLayer.cpp @@ -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(MaterialGraphBoxes::MAX)) + // Ensure to have valid root node + else if (layer->Root->Boxes.Count() < static_cast(MaterialGraphBoxes::MAX)) { #define ADD_BOX(type, valueType) \ - if(layer->Root->Boxes.Count() <= static_cast(MaterialGraphBoxes::type)) \ + if (layer->Root->Boxes.Count() <= static_cast(MaterialGraphBoxes::type)) \ layer->Root->Boxes.Add(MaterialGraphBox(layer->Root, static_cast(MaterialGraphBoxes::type), VariantType::valueType)) ADD_BOX(TessellationMultiplier, Float); ADD_BOX(WorldDisplacement, Float3); ADD_BOX(SubsurfaceColor, Float3); - ADD_BOX(DepthOffset, Float); - static_assert(static_cast(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes added for root node. Please update the code above"); + static_assert(static_cast(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes added for root node. Please update the code above"); ASSERT(layer->Root->Boxes.Count() == static_cast(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(MaterialGraphBoxes::MAX) == 16, "Invalid amount of boxes created for root node. Please update the code above"); + static_assert(static_cast(MaterialGraphBoxes::MAX) == 15, "Invalid amount of boxes created for root node. Please update the code above"); #undef INIT_BOX // Mark as root diff --git a/Source/Shaders/MaterialCommon.hlsl b/Source/Shaders/MaterialCommon.hlsl index 01ba12e8c..4bf44674c 100644 --- a/Source/Shaders/MaterialCommon.hlsl +++ b/Source/Shaders/MaterialCommon.hlsl @@ -86,7 +86,6 @@ struct Material float3 WorldDisplacement; float Mask; float TessellationMultiplier; - float DepthOffset; #if USE_CUSTOM_VERTEX_INTERPOLATORS float4 CustomVSToPS[CUSTOM_VERTEX_INTERPOLATORS_COUNT]; #endif