Skip to content

Commit 5d8d0cd

Browse files
committed
9.3.1 Shader with external file
1 parent 22e9ff0 commit 5d8d0cd

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

Chapter9/9.3.1.html

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2+
<html>
3+
<head>
4+
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
5+
<script type="text/javascript" src="../lib/three.js"></script>
6+
7+
<script type="text/javascript">
8+
var scene = null;
9+
var camera = null;
10+
var renderer = null;
11+
12+
var material = null;
13+
var cube = null;
14+
15+
function init() {
16+
renderer = new THREE.WebGLRenderer({
17+
canvas: document.getElementById('mainCanvas')
18+
});
19+
scene = new THREE.Scene();
20+
21+
camera = new THREE.OrthographicCamera(-5, 5, 3.75, -3.75, 0.1, 100);
22+
camera.position.set(5, 15, 25);
23+
camera.lookAt(new THREE.Vector3(0, 0, 0));
24+
scene.add(camera);
25+
26+
var light = new THREE.DirectionalLight();
27+
light.position.set(3, 2, 5);
28+
scene.add(light);
29+
30+
// load shader
31+
$.get('shader/my.vs', function(vShader){
32+
$.get('shader/my.fs', function(fShader){
33+
material = new THREE.ShaderMaterial({
34+
vertexShader: vShader,
35+
fragmentShader: fShader
36+
});
37+
38+
cube = new THREE.Mesh(new THREE.CubeGeometry(2, 2, 2), material);
39+
scene.add(cube);
40+
41+
draw();
42+
});
43+
});
44+
}
45+
46+
function draw() {
47+
cube.rotation.y += 0.01;
48+
if (cube.rotation.y > Math.PI * 2) {
49+
cube.rotation.y -= Math.PI * 2;
50+
}
51+
52+
renderer.render(scene, camera);
53+
54+
requestAnimationFrame(draw);
55+
}
56+
</script>
57+
</head>
58+
59+
<body onload="init()">
60+
<canvas id="mainCanvas" width="400px" height="300px" ></canvas>
61+
</body>
62+
</html>

Chapter9/shader/my.fs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
varying vec2 vUv;
2+
void main() {
3+
gl_FragColor = vec4(vUv.x, vUv.y, 0.0, 1.0);
4+
}

Chapter9/shader/my.vs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
varying vec2 vUv;
2+
void main()
3+
{
4+
// passing texture to fragment shader
5+
vUv = uv;
6+
7+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
8+
}

0 commit comments

Comments
 (0)