Texture UV's - Add vs Multiply TextureCoordinate

Just wondering if someone can explain to me why when using the Add node on an output from a TextureCoordinate object it seems to modify the position of the pixel in the texture I sample from but when I use a multiply it seems to scale the UV tiling? I’m trying to think of this as if it was written in C++, i’m imagining the TextureCoordinate node to be a struct/class with member variables U, V, and UTile, VTile. Why is it that addition appears to apply to U and V member variables while multiply appears to apply to the UTile and VTile? Do material nodes have some kind of operator overloading coded behind the scenes?

I’m sure there is probably something very simple/fundamental that i’m missing here or i’m thinking about it in totally the wrong way but I just haven’t been able to find the answer.

[EDIT] wait, does the TextureCoordinate node output a matrix of some kind?


After looking through the engine code for the material expression nodes I realise i’ve been thinking about this totally wrong. Well the problem is i wasn’t actually thinking at all when it comes to the TextureCoordinate node and what it represented. Can someone confirm that the TextureCoordinate node returns the current UV position of the mesh that the shader is processing? Yeh i’m a bit new to this whole material/shader thing…

Yup. All coordinate nodes return current value of this vertex or pixel.