diff --git a/Source/Editor/Windows/Assets/MaterialWindow.cs b/Source/Editor/Windows/Assets/MaterialWindow.cs index b051542a1..934cd6594 100644 --- a/Source/Editor/Windows/Assets/MaterialWindow.cs +++ b/Source/Editor/Windows/Assets/MaterialWindow.cs @@ -57,7 +57,7 @@ namespace FlaxEditor.Windows.Assets [EditorOrder(20), VisibleIf(nameof(IsStandard)), EditorDisplay("General"), Tooltip("Defines how material inputs and properties are combined to result the final surface color.")] public MaterialShadingModel ShadingModel; - [EditorOrder(30), VisibleIf(nameof(ShowBlendMode)), EditorDisplay("General"), Tooltip("Determinates how materials' color should be blended with the background colors.")] + [EditorOrder(30), VisibleIf(nameof(IsStandard)), EditorDisplay("General"), Tooltip("Determinates how materials' color should be blended with the background colors.")] public MaterialBlendMode BlendMode; // Rendering @@ -145,7 +145,6 @@ namespace FlaxEditor.Windows.Assets // Visibility conditionals - private bool ShowBlendMode => Domain != MaterialDomain.Terrain; private bool IsPostProcess => Domain == MaterialDomain.PostProcess; private bool IsDecal => Domain == MaterialDomain.Decal; private bool IsGUI => Domain == MaterialDomain.GUI; @@ -188,14 +187,6 @@ namespace FlaxEditor.Windows.Assets // Link Window = window; - - // [Deprecated in 1.12] - // Fix old terrain materials to go back into opaque - if (Domain == MaterialDomain.Terrain && BlendMode != MaterialBlendMode.Opaque) - { - BlendMode = MaterialBlendMode.Opaque; - FlaxEngine.Scripting.InvokeOnUpdate(Window.MarkAsEdited); - } } /// diff --git a/Source/Engine/Graphics/Materials/TerrainMaterialShader.cpp b/Source/Engine/Graphics/Materials/TerrainMaterialShader.cpp index 4db4acda1..bb0796234 100644 --- a/Source/Engine/Graphics/Materials/TerrainMaterialShader.cpp +++ b/Source/Engine/Graphics/Materials/TerrainMaterialShader.cpp @@ -150,6 +150,21 @@ bool TerrainMaterialShader::Load() } #endif + // Support blending but then use only emissive channel + switch (_info.BlendMode) + { + case MaterialBlendMode::Transparent: + psDesc.BlendMode = BlendingMode::AlphaBlend; + break; + case MaterialBlendMode::Additive: + psDesc.BlendMode = BlendingMode::Additive; + break; + case MaterialBlendMode::Multiply: + psDesc.BlendMode = BlendingMode::Multiply; + break; + default: ; + } + // GBuffer Pass psDesc.VS = _shader->GetVS("VS"); psDesc.PS = _shader->GetPS("PS_GBuffer"); @@ -170,6 +185,7 @@ bool TerrainMaterialShader::Load() // Depth Pass psDesc.CullMode = CullMode::TwoSided; + psDesc.BlendMode = BlendingMode::Opaque; psDesc.DepthClipEnable = false; psDesc.DepthWriteEnable = true; psDesc.DepthEnable = true;