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...