I'm trying to figure out the best practice for dealing with custom UI shaders/materials. I have a set of Graphics (RawImages) and they are all supposed to use a custom material/shader that I wrote. I copied the Default UI shader and made my changes, and the shader and material seem to work fine, but I'd rather not have to create unique materials for each Graphic that uses this shader (since they will all use unique material properties, such as for Brightness and Contrast). I see in the shader the use of [PerRendererData] before the main texture property, which I assume is because the texture is set by the CanvasRenderer during rendering (presumably using MaterialPropertyBlocks). This seems optimal, since then all the Graphics can share the same material (and probably also the same draw call, if the textures are sprites on the same sheet). I would like to also utilize this optimal workflow. Is there some way that I can set the MaterialPropertyBlock in a custom RawImage class? Or is there a better way for me to have access to the custom material properties for each unique Graphic?