The typical node pipeline for image textures, as I understand it, is: Texture Coordinate > Mapping > Image Texture > BSDF.
Is it possible to adjust the Mapping vector data after calling the Image Texture?
I would like to consolidate image textures, a la character + prop sprites on a single map file, by layering multiple copies of the image texture with different Mapping data.
It works fine, but I have to make a unique Image Texture node for each layer, because I can’t change the Mapping data after the file has been imported.
I can save myself a small bit of workload by tucking the Image Texture node into it’s own little Group, but it still seems like a lot of duplicated steps in the final node tree.
Ah yes (why did i typed in after…??? ) i meant for each…
Anyway: i really don’t get you settup: Even if you have multiple UV channels. How would you decide which part of the texture should be mapped according to which UV’s or layer as yo call it?? How would this kind of texture look like (simple example) ?
I know I can apply unique mapping for each unique Import Texture node.
My point is, I want to know if I can make mapping adjustments after the Import Texture node, rather than before, so that I only need to call the texture file a single time if I want to layer multiple parts of the image over each other.
Creating multiple Import Texture nodes just to call the same image file multiple times seems like a waste of resources.
I’m not at my desk and can’t work up a visual aid just now. To take a stab at it in text form:
Mapping A > Import Texture A
Mapping B > Import Texture A
Mapping C > Import Texture A
vs
_______________ > Mapping A
Import Texture A > Mapping B
_______________ > Mapping C
I’m referring to the Mapping node specifically, but only because I’m not a math genius and don’t know if some sort of arcane Vector Math would be useful here.
You can’t because the coordinates information are lost once the texture has been processed. However you can try putting your texture into a node group (Node > Make Group or Shortcut CTLR + G) and duplicate it. That way you still only need to change it once. You can even re-use it in other shader trees.
Edit : Socket colors are wonky because of GIF compression
I still wonder how you think your texture could be look like…
If you have for example a shield and want to have different emblems on it… then how do you want to organize the texture?
I only could imagine to use a different UV maps:
The use-case I have in mind is already functional. I was just curious about streamlining and render-time reduction.
Imagine a 2D character, with a body sprite and various prop sprites (not what I’m doing, but simpler as an illustration), all drawn on the same bitmap image file. If I want to have the character holding one sprite in particular, I manipulate the mapping node of the “props” layer accordingly.
Rather than having meshes stacked on top of each other in 3D space, I have sprites layered in 2D space on the faces of a single mesh, using a single Image Texture bitmap, inside a single Material. I was hoping I could skip calling said bitmap X number of times, and just call it once then split it into a variety of different Mapping vectors.
The crux of the matter, as reported by @Gorgious, is that vector data disappears when you plug it into the Image Texture node to call up the bitmap.
Consequently, as everyone has said, “Call up the bitmap repeatedly.” Or group it into itself, for that little bit of spared effort, which I was indeed already doing.
Have you noticed performance bottlenecks with displaying your image textures ? Unless you’re emulating a nintendo 64 or using very high res images, I dont think you should worry about about stacking a few bitmap images increasing the render times. Modern gpus can handle thousands of them without a sweat if instanced efficiently