As I began working on my Procedural Arcade Environment, I came across a problem. In order to output the level of texture variation I wanted in my scene, I would have to spend an inordinate amount of time creating and assigning material instances. The solution to this problem was the Object Position node. I set up a function that takes the object position of the mesh that the material is assigned to, and used that value to randomly select one of nine squares inside my 1:1 UV. With the function made, I was able to add variance to my assets with a single texture. Below you can see the object variance function at work as I move around an object. On the left you can see the screen texture and emissive color of my arcade machine generate randomly. The static image in the middle is the tile sheet texture I used to randomly generate the screen texture variance in the arcade machine. On the right you can see the poster texture and edge wear and change as it moves around in space. With these two materials I was able to populate my entire environment with just a handful of textures.