Como garantir que um objeto não compartilhe o mesmo shader com outras instancias na mesma cena.Fazendo com que um objeto tenha o seu próprio material exclusivo.
1- Posso fazer via código usando esse comando na função ready para um exemplo de shader em um TextureRect.
func _ready():
$TextureRect.material = $TextureRect.material.duplicate()
Na Godot, materiais (e outros Resources) são compartilhados por padrão.
Ou seja, se você altera um parâmetro (shader_parameter, por exemplo) em um ShaderMaterial que está sendo usado por vários nós, todos os nós são afetados.
Com esse código, você “quebra” esse compartilhamento: cada instância do TextureRect passa a ter seu próprio material, permitindo alterar parâmetros só nele, sem mexer nos outros.
2- Uma forma mais simples sem precisar digitar essa linha de código é no inspector do objeto onde esta o shader seleciona a opção :Make Unique