# Custom uv settings for each instance

**URL:** <https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456>\
**Category:** Questions\
**Created:** [January 13, 2021, 4:27pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456 "2021-01-13T16:27:08Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![samevision](https://avatars.discourse-cdn.com/v4/letter/s/73ab20/32.png) [@samevision](https://forum.babylonjs.com/u/samevision)\
**Post date:** [January 13, 2021, 4:27pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/1 "2021-01-13T16:27:08Z")

</div>

Hello guys,

I am creating a model out of multiple wooden beams. The beams are just instances of my main beam wherefore they share the same material. To make them look more natural I would like to give them some randomness due to different uv scales and offsets. Am I able to do that?

[https://playground.babylonjs.com/#57P43S](https://playground.babylonjs.com/#57P43S)

Best

---

<div class="post-metadata">

**Author:** ![labris](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/labris/32/12576_2.png) [@labris](https://forum.babylonjs.com/u/labris)\
**Post date:** [January 13, 2021, 5:12pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/2 "2021-01-13T17:12:33Z")

</div>

It seems that the answer to your question could be found here: [Different texture per mesh instance using instance buffers?](https://forum.babylonjs.com/t/different-texture-per-mesh-instance-using-instance-buffers/9844)

---

<div class="post-metadata">

**Author:** ![samevision](https://avatars.discourse-cdn.com/v4/letter/s/73ab20/32.png) [@samevision](https://forum.babylonjs.com/u/samevision)\
**Post date:** [January 13, 2021, 5:30pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/3 "2021-01-13T17:30:30Z")

</div>

Thank you labris!

That is definitely I was looking for. I am not sure why I didn’t find this post on my own.

Any idea why PBRCustomMaterial leads to errors?

[https://playground.babylonjs.com/#57P43S#2](https://playground.babylonjs.com/#57P43S#2)

---

<div class="post-metadata">

**Author:** ![slin](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/slin/32/36084_2.png) [@slin](https://forum.babylonjs.com/u/slin)\
**Post date:** [January 13, 2021, 6:07pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/4 "2021-01-13T18:07:35Z")

</div>

The customization are added into the shader code. PBR shader code has different variable namings. uvUpdated is not declared in PBR shader. You can check pbr shader code here:

[pbr vertex shader](https://github.com/BabylonJS/Babylon.js/blob/master/src/Shaders/pbr.vertext.fx)

[pbr fragment shader](https://github.com/BabylonJS/Babylon.js/blob/master/src/Shaders/pbr.fragment.fx)

I am not expert on pbr and pbr shader code. But a quick test that shows different texture:

[https://playground.babylonjs.com/#57P43S#5](https://playground.babylonjs.com/#57P43S#5)

But for albedoTexture, I don’t find appropriate customization hook point where you can change uvOffset before albedoTexture:

[https://playground.babylonjs.com/#57P43S#6](https://playground.babylonjs.com/#57P43S#6)

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [January 13, 2021, 7:37pm UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/5 "2021-01-13T19:37:48Z")

</div>

There’s no hook point before reading from the albedo texture that would let you change the uvOffset used for the lookup in the texture.

What you can do is creating a node material and using a bit of code to inject a custom attribute in it:

> [@Vertex color material editor](https://forum.babylonjs.com/t/vertex-color-material-editor/17255/2):
>
> The vertex color is accessible through the Mesh.Color block. You can use custom attributes in a node material by doing a bit of code:

---

<div class="post-metadata">

**Author:** ![samevision](https://avatars.discourse-cdn.com/v4/letter/s/73ab20/32.png) [@samevision](https://forum.babylonjs.com/u/samevision)\
**Post date:** [January 14, 2021, 8:30am UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/6 "2021-01-14T08:30:29Z")

</div>

I was able to use custom uv coordinates due to the node material, but unfortunately I cannot make it pbr.

[https://playground.babylonjs.com/#57P43S#8](https://playground.babylonjs.com/#57P43S#8)

---

<div class="post-metadata">

**Author:** ![Evgeni\_Popov](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/evgeni_popov/32/4432_2.png) [@Evgeni\_Popov](https://forum.babylonjs.com/u/Evgeni_Popov)\
**Post date:** [January 14, 2021, 10:44am UTC](https://forum.babylonjs.com/t/custom-uv-settings-for-each-instance/17456/7 "2021-01-14T10:44:56Z")

</div>

You missed to connect a reflection block to the PBR block. Also, you should use the lighting output instead of the diffuse one, as you only use an environment light:

[https://playground.babylonjs.com/#57P43S#13](https://playground.babylonjs.com/#57P43S#13)
