W: move forward
A: move left
S: move back
D: move right
shift: up
left controll: down
Q and E: camera rotation
Space: locks and unlocks mouse for camera rotation
Mouse: camera roation
1 and 2: cycle between scenes
Y: used to cycle between normal rendering and the 5 g buffers
the scene you start in when launching the game used to show of all techniques excepet the oct tree for frustrum culling
Deferred rendering: use Y to cycle between normal rendering and the g buffers normal rendering positionGBuffer normalGBuffer diffuseGBuffer ambientGBuffer specularGBuffer back to normal rendering ....
Shadow mapping: there are a total of 4 lights in the scene, all use shadowmapping. Three of them are spotlights and are denoted by flashlights that point in the direction of the spotlights(the colored ones). The white one is a directional light wich is pointing straight at the big white wall.
Level of detail using tessellation: This has been implemented with phong tesselation wich is visable if you look at any of the spheres (icoSpheres) in the scene as you move closer you can se the edges get smothed out. for the tesselation itself it is best to look at the icosphere rendered in wireframe, move closer to it and the amount of triangles will increase
Dynamic cube environment mapping: the sphere in the middle of the scene uses this, the shadow on the big house will be weird bacuse its shadow is rendered in wireframe in the reflection aswell
Frustum culling using a quadtree/octree:(oct tree) to show this of a frustrum with a slightly smaller fov is used to for the interscetion tests with the tree so it is visable when the objects disapear, this is where the second scene is used to show of the structure of the tree, each leaf node that holds a ref to a gameobject has its bounding box visualized aswell as the boundingboxes for the gameobjects. to se the tree well I recomed moving back until you can see the entire thing
GPU-based billboarded particle system: the particle sytem can be found to the right of the big wireframe renderd house in scene 1
OBJ-parser: fast obj https://github.com/thisistherk/fast_obj.git picked for its amazing speed compared to other options like obj_loader
note: the large white wall is a box wich is flatshaded, when getting relly close you can see some weird stuf with the phong tesselation becasue of that, this is not a problem with the phong but with the box itself being shaded in the wrong mode
