Is there any way to have 1 material with Texture2D property in its shader for many game objects with different sprite in the Sprite Renderer?

I have a shader (shader graph) which has a Texture2D (sprite) property and creates an outline around this 2D sprite. If I want to apply the outline shader to a gameobject, I need to create a material with the same Texture2D sprite as the SpriteRenderer’s sprite. And technically if I need to apply the same shader to 100 different sprites (objects), I have to create a different material for each of the sprites. Is there any way to have just 1 material but to apply a different Texture2D (sprite) to the shader based on the SpriteRenderer’s sprite in the current object?

Look into MaterialPropertyBlock and [PerRendererData], you can make it so that all renderers use the same material, but the material has a property (your texture) which is set as a [PerRendererData] which can be assigned using MaterialPropertyBlock, making every renderer have a different texture but use the same material.