author | Eugen Sawin <sawine@me73.com> |
Wed, 27 Apr 2011 14:45:41 +0200 | |
changeset 32 | 1b4c3fcff1b0 |
parent 30 | 95688249c40c |
child 33 | 2af408534f28 |
permissions | -rwxr-xr-x |
sawine@2 | 1 |
<html> |
sawine@2 | 2 |
<head> |
sawine@2 | 3 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
sawine@2 | 4 |
<title>Machine Alpha</title> |
sawine@26 | 5 |
<style type="text/css"> |
sawine@26 | 6 |
body {margin: 0px;} |
sawine@26 | 7 |
</style> |
sawine@23 | 8 |
<script language="javascript" src="scripts/boot.js"></script> |
sawine@2 | 9 |
<script id="fragment-shader" type="x-shader/x-fragment"> |
sawine@2 | 10 |
#ifdef GL_ES |
sawine@2 | 11 |
precision highp float; |
sawine@2 | 12 |
#endif |
sawine@4 | 13 |
|
sawine@4 | 14 |
varying vec4 vColour; |
sawine@31 | 15 |
varying vec3 vTransformedNormal; |
sawine@31 | 16 |
varying vec4 vPosition; |
sawine@31 | 17 |
|
sawine@31 | 18 |
uniform bool uUseLighting; |
sawine@31 | 19 |
|
sawine@31 | 20 |
uniform vec3 uAmbientColour; |
sawine@31 | 21 |
uniform vec3 uPointLightingLocation; |
sawine@31 | 22 |
uniform vec3 uPointLightingColour; |
sawine@2 | 23 |
|
sawine@31 | 24 |
void main(void) |
sawine@4 | 25 |
{ |
sawine@31 | 26 |
vec3 lightWeighting; |
sawine@31 | 27 |
if (!uUseLighting) |
sawine@31 | 28 |
{ |
sawine@31 | 29 |
lightWeighting = vec3(1.0, 1.0, 1.0); |
sawine@31 | 30 |
} |
sawine@31 | 31 |
else |
sawine@31 | 32 |
{ |
sawine@31 | 33 |
vec3 lightDirection = normalize(uPointLightingLocation - vPosition.xyz); |
sawine@31 | 34 |
float directionalLightWeighting = max(dot(normalize(vTransformedNormal), lightDirection), 0.0); |
sawine@31 | 35 |
lightWeighting = uAmbientColour + uPointLightingColour * directionalLightWeighting; |
sawine@31 | 36 |
} |
sawine@31 | 37 |
gl_FragColor = vec4(vColour.rgb * lightWeighting, vColour.a); |
sawine@2 | 38 |
} |
sawine@2 | 39 |
</script> |
sawine@2 | 40 |
|
sawine@2 | 41 |
<script id="vertex-shader" type="x-shader/x-vertex"> |
sawine@2 | 42 |
attribute vec3 aVertexPosition; |
sawine@24 | 43 |
attribute vec3 aVertexNormal; |
sawine@25 | 44 |
attribute vec4 aVertexColour; |
sawine@4 | 45 |
|
sawine@2 | 46 |
uniform mat4 uMVMatrix; |
sawine@2 | 47 |
uniform mat4 uPMatrix; |
sawine@24 | 48 |
uniform mat3 uNMatrix; |
sawine@24 | 49 |
|
sawine@4 | 50 |
varying vec4 vColour; |
sawine@31 | 51 |
varying vec3 vTransformedNormal; |
sawine@31 | 52 |
varying vec4 vPosition; |
sawine@2 | 53 |
|
sawine@4 | 54 |
void main(void) |
sawine@4 | 55 |
{ |
sawine@31 | 56 |
vPosition = uMVMatrix * vec4(aVertexPosition, 1.0); |
sawine@31 | 57 |
gl_Position = uPMatrix * vPosition; |
sawine@4 | 58 |
vColour = aVertexColour; |
sawine@31 | 59 |
vTransformedNormal = uNMatrix * aVertexNormal; |
sawine@2 | 60 |
} |
sawine@2 | 61 |
</script> |
sawine@2 | 62 |
</head> |
sawine@2 | 63 |
|
sawine@23 | 64 |
<body onload="boot();"> |
sawine@2 | 65 |
<canvas id="machine"> |
sawine@2 | 66 |
Download a browser with WebGL support, like Chrome or Firefox. |
sawine@2 | 67 |
</canvas> |
sawine@2 | 68 |
</body> |
sawine@2 | 69 |
|
sawine@2 | 70 |
</html> |