I really love using render tops as a global place to pass in uniforms that all MAT’s in a system need access to. This is especially critical when it comes to systems where many MAT’s are present, and node count becomes of concern (replicated objects) but most of all, this is critical from a performance aspect when passing in animated uniforms.
If I have a chop full of 1024 samples, some of which are moving, passing that into each MAT individually incurs cooking on those mats as well which ripples down stream and adds up.
Another example is say a camera matrix uniform. Every time the camera moves, those MAT’s have to cook. I know I have access to cameras already in a shader, just an example.
I can get around this by converting my chops to tops, and pass them in through the already present top samplers but as discussed previously this approach is not as fast (I have tested with even some very small chop textures).