diff --git a/Source/Engine/Content/Assets/MaterialBase.cpp b/Source/Engine/Content/Assets/MaterialBase.cpp
index 6ef5f9429..1613ef59a 100644
--- a/Source/Engine/Content/Assets/MaterialBase.cpp
+++ b/Source/Engine/Content/Assets/MaterialBase.cpp
@@ -19,10 +19,10 @@ Variant MaterialBase::GetParameterValue(const StringView& name)
if (!IsLoaded() && WaitForLoaded())
return Variant::Null;
const auto param = Params.Get(name);
+ if (IsMaterialInstance() && param && !param->IsOverride() && ((MaterialInstance*)this)->GetBaseMaterial())
+ return ((MaterialInstance*)this)->GetBaseMaterial()->GetParameterValue(name);
if (param)
- {
return param->GetValue();
- }
LOG(Warning, "Missing material parameter '{0}' in material {1}", String(name), ToString());
return Variant::Null;
}
diff --git a/Source/Engine/Content/Assets/MaterialBase.h b/Source/Engine/Content/Assets/MaterialBase.h
index f0c32d66a..78f244cb7 100644
--- a/Source/Engine/Content/Assets/MaterialBase.h
+++ b/Source/Engine/Content/Assets/MaterialBase.h
@@ -57,6 +57,8 @@ public:
///
/// Gets the material parameter value.
///
+ /// For material instances that inherit a base material, returned value might come from base material if the current one doesn't override it.
+ /// The parameter name.
/// The parameter value.
API_FUNCTION() Variant GetParameterValue(const StringView& name);