JSFiddle - React, Tailwind, and code Playground

by blackInk

HTML

<script src="https://threejs.org/build/three.js"></script>
<script src="https://threejs.org/examples/js/shaders/CopyShader.js"></script>
<script src="https://threejs.org/examples/js/shaders/FXAAShader.js"></script>

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

CSS

body {
	  margin: 0;
}

JavaScript

var camera, scene, efxScene, foregroundScene, renderer, composer, efxComposer;

init();
animate();

function init() {

  renderer = new THREE.WebGLRenderer();
  renderer.setPixelRatio( window.devicePixelRatio );
  renderer.setSize( window.innerWidth, window.innerHeight );
  renderer.autoClear = false; 
  document.body.appendChild( renderer.domElement );
  
  //
  
  camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 );
  camera.position.z = 400;
  
  scene = new THREE.Scene();
  efxScene = new THREE.Scene();
  foregroundScene = new THREE.Scene();

  
  var geometry = new THREE.SphereBufferGeometry( 1, 4, 4 );
  var material = new THREE.MeshPhongMaterial( { color: 0xffffff, flatShading: true } );
  
  for ( var i = 0; i < 100; i ++ ) {
  
    var mesh = new THREE.Mesh( geometry, material );
    mesh.position.set( Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5 ).normalize();
    mesh.position.multiplyScalar( Math.random() * 400 );
    mesh.rotation.set( Math.random() * 2, Math.random() * 2, Math.random() * 2 );
    mesh.scale.x = mesh.scale.y = mesh.scale.z = Math.random() * 50;
    scene.add( mesh );
    
  }
  
  var mesh1 = new THREE.Mesh( new THREE.SphereBufferGeometry( 14, 4, 4 ), material );
  efxScene.add( mesh1 );
  mesh1.scale.x = mesh1.scale.y = mesh1.scale.z = 6;
  
  efxScene.add( new THREE.AmbientLight( 0x222222 ) );
  efxScene.add( new THREE.DirectionalLight( 0xffffff ) );
  
  
  var mesh2 = new THREE.Mesh( new THREE.SphereBufferGeometry( 14, 4, 4 ), material );
  foregroundScene.add( mesh2 );
  mesh2.scale.x = mesh2.scale.y = mesh2.scale.z = 3;
  
  foregroundScene.add( new THREE.AmbientLight( 0xffffff ) );
  foregroundScene.add( new THREE.DirectionalLight( 0x0000ff ) );  
  
  scene.add( new THREE.AmbientLight( 0x222222 ) );
  
  var light = new THREE.DirectionalLight( 0xffff00 );
  light.position.set( 1, 1, 1 );
  scene.add( light );
  
  // postprocessing
  var width = window.innerWidth;
  var...