Can texture coordinate parameters be applied to material instances?

multiply your texture coordinate by a scalar parameter. then you can edit the scalar parameter in the MIC.

Hi.

I’m setting up a master material for instancing and am having trouble figuring out how to add texture coordinate functionality to the master material so that I can scale the material instances without having to create a new material and add a new texture coordinate each time. Is this possible?

In short - how do I add texture scaling functionality to my material instances?

Thanks!

Thanking you sire :wink:

So what I tried to do is get my TexCoord and multiply it with a Scalar Param but it messes with my textures

Before

After

Am i ding something wrong also whats MIC

MIC is a material instance constant which you can read up on here:

Basically you create one by right clicking on your material in the content browser and selecting create material instance. The material instance will be a child of your parent material and when you add scalar parameters and so on in your material, you add functionality to the material INSTANCE which can be edited more quickly.

This is what the material EDITOR window looks like and how the scalar multiply should be setup. (don’t worry about the texture looking weird in the material editor, it happened for me too)

And this is the material INSTANCE window, which looks different to the material editor. You can see I have parameters for the roughness, metallic and SCALAR. (which I should have probably named uv scaling)

If I change the 1.0 value to 2.0 or 4.0 or whatever it will scale the material UV’s, in essence replacing the texture coordinate as the UV scaling option.

Remember to check the tickbox in the parameter value to edit the values in the MIC.

Hope this helps :wink:

vreviews, it looks like you’re multiplying by 0 as your default, just do some other value and you will be fine. A good default is 1, higher than 1 will tile more, less than 1 will tile less.

It seems a bit odd to me that you can’t convert a TexCoord node into a parameter.

Anyway, this post almost answers my question. What I need to be able to do, however, is tile each dimension separately in each material instance. How would I go about doing that?

Edit: I tried multiplying the TexCoord node by a Constant2Vector, which works in an ordinary material. However, when I convert the C2V node to a parameter it turns it into a four channel colour input which causes an error in the multiply node.

It seems a bit odd to me that you can’t convert a TexCoord node into a parameter.

Anyway, this post almost answers my question. What I need to be able to do, however, is tile each dimension separately. How would I go about doing that?

Yes, they can be applied. They have to first be exported as parameters from the original material.
This was a bit difficult for me to find also, not sure why you cannot directly exporte the TextureCoordinate object.

This is how you can export UV coordinates from the original material:

  • add two ScalarParameter nodes and name them UTiling and Vtiling
  • add Append node and connect the two previews nodes to it
  • add a Multiply node and a TextureCoordinate node and connect the outputs of the Append and TextureCoordionate node to the Multiply node
  • connect the output of the Multiply node to the UVs input of your TextureSample node

Now, the two UV coordinates will appear in your material parameters. Go ahead and make a material instance by right clicking the material in the content browser, double click the material instance and modify the UV tiling in the upper left corner in the Parameters window.

Video tutorial here:

Look at my answer below, I have found a solution.

Thank you for this. I make into Material Function so I can easily share between other materials! :slight_smile: