Grid/Visual/MaterialVisual.cs
public sealed class MaterialVisual : Component
{
    [Sync, Change]
    public string MaterialPath { get; set; }

    protected override void OnStart()
    {
        Apply();
    }

    private void OnMaterialPathChanged()
    {
        Apply();
    }

    private void Apply()
    {
        if (string.IsNullOrEmpty(MaterialPath))
            return;

        var renderer = Components.Get<ModelRenderer>();
        if (renderer == null) return;

        renderer.SetMaterial(Material.Load(MaterialPath));
    }
}