Shader.SetGlobalColor works but Material.SetColor doesn't when working with custom shaders

We have a custom shader we’ve been using for a while with a number of custom values that are set through Shader.SetGlobalFloat, Shader.SetGlobalVectorArray, Shader.SetGlobalInt, etc. Recently, I tried simplifying this by creating a compute buffer that combines a number of these into a single list. That part works, however we’re also using multiple Cesium 3D tilesets and that’s where I’m running into issues.

My solution was to use Material.SetBuffer instead of Shader.SetGlobalBuffer so that each tileset could have different parameters but it seemed to not update the values. I tried simplifying things, just setting a color on each material using Material.SetColor and even that doesn’t work.

Here’s an example where I set a section of the tileset to green using Shader.SetGlobalColor (which works). I then tried setting it to red with Material.SetColor, but the color didn’t update:

The code works when I apply the material to other GameObjects, it only doesn’t work for Cesium. Any idea why that would be?