<script id="fragShader" type="shader-code">
 uniform vec2 resolution;
uniform sampler2D texture;
void main() {
	vec2 pos = gl_FragCoord.xy / resolution.xy;
    gl_FragColor = texture2D(texture,pos);
}
</script>
/* We want our scene to span the entire window */
body { margin: 0; }
//@author Omar Shehata. 2015.
		//We are loading the Three.js library from the cdn here: https://cdnjs.com/libraries/three.js/

		var scene;
		var camera;
		var renderer;

		function scene_setup(){
			//This is all code needed to set up a basic ThreeJS scene

			//First we initialize the scene and our camera
			scene = new THREE.Scene();
			camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );

			//We create the WebGL renderer and add it to the document
			renderer = new THREE.WebGLRenderer();
			renderer.setSize( window.innerWidth, window.innerHeight );
			document.body.appendChild( renderer.domElement );
		}

		scene_setup();

		//Add your code here!
		var geometry = new THREE.BoxGeometry( 1, 1, 1 );
		var material = new THREE.MeshBasicMaterial( { color: 0x00ff00} );//We make it green
		var cube = new THREE.Mesh( geometry, material );
		//Add it to the screen
		scene.add( cube );
		cube.position.z = -3;//Shift the cube back so we can see it
		
    //Load the GLSL code from the HTML as a string
    var shaderCode = document.getElementById("fragShader").innerHTML; 

    //Load an image
    THREE.ImageUtils.crossOrigin = '';//Allows us to load an external image
var tex = THREE.ImageUtils.loadTexture( "https://tutsplus.github.io/Beginners-Guide-to-Shaders/Part2/SIPI_Jelly_Beans.jpg" );

    //Our data to be sent to the shader
    var uniforms = {};
    uniforms.resolution = {type:'v2',value:new THREE.Vector2(window.innerWidth,window.innerHeight)};
    uniforms.texture = {type:'t',value:tex};

    

    //Create an object to apply the shaders to
    var material = new THREE.ShaderMaterial({uniforms:uniforms,fragmentShader:shaderCode})
    var geometry = new THREE.PlaneGeometry( 10, 10 );
    var sprite = new THREE.Mesh( geometry,material );
    scene.add( sprite );
    sprite.position.z = -1;//Move it back so we can see it

		//Render everything!
		function render() {
	  cube.rotation.y += 0.02;
    uniforms.resolution.value.x = window.innerWidth;
    uniforms.resolution.value.y = window.innerHeight;

	requestAnimationFrame( render );
	renderer.render( scene, camera );
}
		render();

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/three.js/r71/three.min.js