I'm not sure if I understand the problem right: Your code assigns mat_model to the decal, but your other functions are doing something with a material named road_shader. So when does your decal become black - when your road gets assigned the other material?