shader-container.js (1554B)
1 var container; 2 var camera, scene, renderer; 3 var uniforms; 4 5 init(); 6 animate(); 7 8 function init() { 9 container = document.getElementById( 'container' ); 10 11 camera = new THREE.Camera(); 12 camera.position.z = 1; 13 14 scene = new THREE.Scene(); 15 16 var geometry = new THREE.PlaneBufferGeometry( 2, 2 ); 17 18 uniforms = { 19 u_time: { type: "f", value: 1.0 }, 20 u_resolution: { type: "v2", value: new THREE.Vector2() }, 21 u_mouse: { type: "v2", value: new THREE.Vector2() } 22 }; 23 24 var material = new THREE.ShaderMaterial( { 25 uniforms: uniforms, 26 vertexShader: document.getElementById( 'vertexShader' ).textContent, 27 fragmentShader: document.getElementById( 'fragmentShader' ).textContent 28 } ); 29 30 var mesh = new THREE.Mesh( geometry, material ); 31 scene.add( mesh ); 32 33 renderer = new THREE.WebGLRenderer(); 34 renderer.setPixelRatio( window.devicePixelRatio ); 35 36 container.appendChild( renderer.domElement ); 37 38 onWindowResize(); 39 window.addEventListener( 'resize', onWindowResize, false ); 40 41 document.onmousemove = function(e){ 42 uniforms.u_mouse.value.x = e.pageX 43 uniforms.u_mouse.value.y = e.pageY 44 } 45 } 46 47 function onWindowResize( event ) { 48 renderer.setSize(400, 400); 49 uniforms.u_resolution.value.x = renderer.domElement.width; 50 uniforms.u_resolution.value.y = renderer.domElement.height; 51 } 52 53 function animate() { 54 requestAnimationFrame( animate ); 55 render(); 56 } 57 58 function render() { 59 uniforms.u_time.value += 0.05; 60 renderer.render( scene, camera ); 61 }