<p dir="auto">We're using a custom ShaderMaterial that we clone for each mesh so they can have unique uniforms.</p>
<p dir="auto">But it turns out that internally UniformsUtils.clone() is called which clones the texture parameter. This means each one counts as unique and gets uploaded to the GPU separately. Not good!</p>
<p dir="auto">So unless we're going about this the wrong way, it would seem better if texture parameters were copied by reference rather than cloned as hard to see anyone wanting to duplicate the textures like this.</p>
<p dir="auto">The description of the .normals attribute in the <a href="https://threejs.org/docs/#api/core/BufferGeometry" rel="nofollow">buffergeometry docs</a> says:</p>
<blockquote>
<p dir="auto">Stores the x, y, and z components of the face or vertex normal vector of each vertex in this geometry.</p>
</blockquote>
<p dir="auto">But as far as I am aware only vertex normals are supported in WebGL.</p>