<p dir="auto">Currently, the only ways to adjust the offset and repeat are to either change it on the texture object or to change the UV coordinates of the geometry. However, there are cases where it would be useful and performant to adjust on the Material.</p>
<p dir="auto">For example, imagine creating a room where the walls would share a repeating texture - perhaps tiles, drywall, marble, etc. Ideally, you'd be able to use a single texture for all the walls and a single geometry, with each wall as its own <code class="notranslate">Mesh</code> object with different scales, positions and rotations. But if the walls had different dimensions, the tiling pattern would be stretched differently on each wall. To solve this now, you'd either have to make many instances of the texture, each with its own repeat/offset values or you'd have to give each wall its own geometry. It would be easier, faster and more flexible to allow each Mesh to have its own values.</p>
<p dir="auto">Yes, you could merge the whole room into a single geometry and tweak the UV values. But that's much harder to do procedurally and it doesn't suit cases that require flexibility such as a scene editor. And it's slower to adjust in real time.</p>
<p dir="auto">(This issue replaces <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="198278578" data-permission-text="Title is private" data-url="https://github.com/mrdoob/three.js/issues/10490" data-hovercard-type="issue" data-hovercard-url="/mrdoob/three.js/issues/10490/hovercard" href="https://github.com/mrdoob/three.js/issues/10490">#10490</a>)</p>
<p dir="auto">I use the Texture.clone() function a lot in my code, because I need to set the UV coordinates differently on every model, and this slows down the initiation of the page considerably. If I don't clone the texture, then the scene renders instantly. So something is not optimal in the rendering pipeline.</p>
<p dir="auto">It seems that the Texture.clone() function indeed creates a shallow clone that reuses the image, but then when data is sent to the graphics card these two textures are seen as having two separate images, sending the same image twice. Is this correct? Perhaps this is where the bottleneck is.</p>
<p dir="auto">Coming from XNA and DirectX, where textures are not much more than containers for bitmap data, I wonder why Three.js also includes UV data in them, instead of specifying UV once the texture is applied to a mesh?</p>