3D Transformation Matrices
Slides from class
Reading: gfx.js
Reading: Matrix Tutorial
Reading: LearnOpenGL: Hello Triangle
Reading: LearnOpenGL: Transformations
Reading: LearnOpenGL: Coordinate Systems
Coding Assignment : One, Two, Three, Mesh!
Use the 200c course code gfx.js
(you may also use a different framework if you prefer), create
a 3D object composed of 3D vector coordinates and 2D uv coordinates.
Here is what you will be filling out:
<html>
<script src = "http://rawgit.com/wolftype/200c/gh-pages/js/gfx.js" ></script>
var app = new GFX.App();
app.onInit() = function(){
//initialize GL objects and buffers
}
app.onRender() = function(){
//drawing routines
}
<script id= "gfxvert" type= "text/glsl" >
//vertex shader code
</script>
<script id= "gfxfrag" type= "text/glsl" >
//fragment shader code
</script>
<body onload= "app.start()" >
<canvas id= "gfxcanvas" width= "640" height= "480" ></canvas>
</body>
</html>
You can use this example as a starting point.
Your vertex shader will look something like this:
attribute vec3 position ;
attribute vec2 uv ;
uniform mat4 model ;
uniform mat4 view ;
uniform mat4 projection ;
varying vec2 vuv ;
void main (){
vuv = uv ;
gl_Position = projection * view * model * vec4 ( position , 1 .);
}
And your fragment shader will use the varying vec2 vuv
instead of gl_FragCoord.