<!DOCTYPE html> <html lang="en"> <head> <title>three.js webgl - postprocessing - digital glitch</title> <meta charset="utf-8"> <style> body { margin: 0px; background-color: #000000; overflow: hidden; } div { position: absolute; z-index: 10; color: #fff; font-family: monospace; text-align: center; margin: 10px; width: 100%; } label, input { cursor: pointer; } </style> </head> <body> <script src="../build/three.min.js"></script> <script src="js/shaders/CopyShader.js"></script> <script src="js/shaders/DigitalGlitch.js"></script> <script src="js/postprocessing/EffectComposer.js"></script> <script src="js/postprocessing/RenderPass.js"></script> <script src="js/postprocessing/MaskPass.js"></script> <script src="js/postprocessing/ShaderPass.js"></script> <script src="js/postprocessing/GlitchPass.js"></script> <div> <label for="dotScreen">Glitch me wild:</label><input id="wildGlitch" type="checkbox" onchange="updateOptions()"/><br /> </div> <script> var camera, scene, renderer, composer; var object, light; var glitchPass; init(); animate(); function updateOptions() { var wildGlitch = document.getElementById('wildGlitch'); glitchPass.goWild=wildGlitch.checked; } function init() { renderer = new THREE.WebGLRenderer(); renderer.setPixelRatio( window.devicePixelRatio ); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); // camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000 ); camera.position.z = 400; scene = new THREE.Scene(); scene.fog = new THREE.Fog( 0x000000, 1, 1000 ); object = new THREE.Object3D(); scene.add( object ); var geometry = new THREE.SphereGeometry( 1, 4, 4 ); var material = new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.FlatShading } ); for ( var i = 0; i < 100; i ++ ) { material = new THREE.MeshPhongMaterial( { color: 0xffffff * Math.random(), shading: THREE.FlatShading } ); 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; object.add( mesh ); } scene.add( new THREE.AmbientLight( 0x222222 ) ); light = new THREE.DirectionalLight( 0xffffff ); light.position.set( 1, 1, 1 ); scene.add( light ); // postprocessing composer = new THREE.EffectComposer( renderer ); composer.addPass( new THREE.RenderPass( scene, camera ) ); glitchPass = new THREE.GlitchPass(); glitchPass.renderToScreen = true; composer.addPass( glitchPass ); // window.addEventListener( 'resize', onWindowResize, false ); updateOptions(); } function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize( window.innerWidth, window.innerHeight ); } function animate() { requestAnimationFrame( animate ); var time = Date.now(); object.rotation.x += 0.005; object.rotation.y += 0.01; composer.render(); //renderer.render(scene, camera); } </script> </body> </html>