JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://hofk.de/main/discourse.threejs/2020/js/three.min.112.js"></script>

<script src="https://hofk.de/main/discourse.threejs/2020/js/OrbitControls.js"></script>

<script src="https://hofk.de/main/discourse.threejs/2020/js/Tween.min.16.11.0.js"></script>

JavaScript

// @author prisoner849
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, 1, 1, 1000);
camera.position.set(0, 0, 4);
var renderer = new THREE.WebGLRenderer({
  antialias: true
});
var canvas = renderer.domElement;
document.body.appendChild(canvas);

var controls = new THREE.OrbitControls(camera, canvas);

var tex = new THREE.TextureLoader().load('https://threejs.org/examples/textures/colors.png'

);
var texBack = new THREE.TextureLoader().load('https://threejs.org/examples/textures/uv_grid_opengl.jpg'
);

var planeMat = new THREE.MeshBasicMaterial({
  map: tex,
  side: THREE.DoubleSide,
  wireframe: true
});
var planeUniforms = {
  backTexture: { value: texBack }
};
planeMat.onBeforeCompile = shader => {
  shader.uniforms.backTexture = planeUniforms.backTexture;
  //console.log(shader.vertexShader);
  shader.vertexShader =
    `
  attribute vec2 backUV;
  varying vec2 vBackUV;
` + shader.vertexShader;
  shader.vertexShader = shader.vertexShader.replace(
    `#include <fog_vertex>`,
    `#include <fog_vertex>
  vBackUV = backUV;
`
  );
  shader.fragmentShader =
    `
  uniform sampler2D backTexture;
  varying vec2 vBackUV;
` + shader.fragmentShader;
  //console.log(shader.fragmentShader);
  shader.fragmentShader = shader.fragmentShader.replace(
    `#include <map_fragment>`,
    `
#ifdef USE_MAP

  vec4 texelColor = gl_FrontFacing ? texture2D( map, vUv ) : texture2D( backTexture, vBackUV );
  texelColor = mapTexelToLinear( texelColor );
  diffuseColor *= texelColor;

#endif
`
  );
};

var planes = [];

for (let y = 0; y < 4; y++) {
  for (let x = 0; x < 4; x++) {
    let planeGeom = new THREE.PlaneBufferGeometry();
    // re-calc uvs
    let uv = planeGeom.attributes.uv;
    uv.setXY(0, x * 0.25, y * 0.25 + 0.25);
    uv.setXY(1, x * 0.25 + 0.25, y * 0.25 + 0.25);
    uv.setXY(2, x * 0.25, y * 0.25);
    uv.setXY(3, x * 0.25 + 0.25, y * 0.25);

    planeGeom.setAttribute(
      "backUV",
      new THREE.Float32BufferAttribute([1, 1, 0, 1,...