Extra per renderer data for the canvasRenderer

I’ve changed the UI Default shader and I wish to pass extra per renderer texture to it.
[PerRendererData] _CullMask ("Cull Mask", 2D) = "white" {}
Then I’ve created a new component -
CustomImage : Image
and
CustomMaskImageEditor : UnityEditor.UI.GraphicEditor
My goal is to create custom image UI component which looks like default image, but with extra functionality (as dissolved fx for example). I know that I can easily create a new material with a new custom shader, but I would love to achieve my goal via the interesting and complex way (u know - it’s useful for a skill training)

Any help?