JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://threejs.org/build/three.min.js"></script>

<script src="https://threejs.org/examples/js/shaders/GammaCorrectionShader.js"></script>
<script src="https://threejs.org/examples/js/postprocessing/EffectComposer.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>

<script src="https://threejs.org/examples/js/postprocessing/SSAARenderPass.js"></script>
<script src="https://threejs.org/examples/js/postprocessing/RenderPass.js"></script>
<script src="https://threejs.org/examples/js/postprocessing/ShaderPass.js"></script>
<script src="https://threejs.org/examples/js/shaders/CopyShader.js"></script>

<script src="https://threejs.org/examples/js/loaders/GLTFLoader.js"></script>

<script src="https://threejs.org/examples/js/libs/dat.gui.min.js"></script>

JavaScript

let renderer, camera, scene, orbit;
let composer, renderPass, gammaCorrection, SSAA;
let mesh, ground, hemi, light;
let loader;

let init = () => {

	const w = window.innerWidth;
	const h = window.innerHeight;

	renderer = new THREE.WebGLRenderer({ antialias: true });
  renderer.setSize(w, h);
  renderer.setClearColor(0xDDDDDD);
  
  document.body.appendChild(renderer.domElement);
    
  scene = new THREE.Scene()
  scene.background = new THREE.Color(0xFFFFFF)
  
  camera = new THREE.PerspectiveCamera(40, w / h, 1, 1000);
  camera.position.set(-3.79069, 3, -2.149);
  camera.lookAt(new THREE.Vector3(0.86917, .5, 0.33268))

  orbit = new THREE.OrbitControls(camera, renderer.domElement);
	
  orbit.target = new THREE.Vector3(0.86917, 2, 0.33268)
  orbit.update()
  // POST PROCESSING
	
	const parameters = {
		minFilter: THREE.LinearFilter,
		magFilter: THREE.LinearFilter,
		format: THREE.RGBAFormat,
		type: THREE.FloatType
	};

	const renderTarget = new THREE.WebGLRenderTarget( w, h, parameters );
	renderTarget.texture.name = 'EffectComposer.rt1';
  
  composer = new THREE.EffectComposer(renderer, renderTarget);
  composer.setSize(w, h);
  
  renderPass = new THREE.RenderPass(scene, camera);
  renderPass.setSize(w, h);
  renderPass.enabled = false
  
  SSAA = new THREE.SSAARenderPass(scene, camera, 0x000000, 0);
  SSAA.setSize(w, h);
  SSAA.unbiased = true;
  SSAA.sampleLevel = 4;
	
	const sampleRenderTarget = new THREE.WebGLRenderTarget( w, h, parameters );
	SSAA.sampleRenderTarget = sampleRenderTarget;

  gammaCorrection = new THREE.ShaderPass(THREE.GammaCorrectionShader);
  
  composer.addPass(renderPass);
  composer.addPass(SSAA);
  composer.addPass(gammaCorrection);
   
  
    
	// LIGHTS
  hemi = new THREE.HemisphereLight(0xFFFFFF, 0xFFFFFF, .5);
  scene.add(hemi);
  
  light = new THREE.SpotLight(0xFFFFFF, .3);
  light.position.set(10, 10, 10);
  light.castShadows = true
  scene.add(light);
  
  
  ground = new THREE.Mesh(new THREE.PlaneGeometry(1000, 1000), new...