


186.140 VU Echtzeitgrafik
WS2013/14
Abgabe 2

Felix KREUZER, 0827433, 066 932
Attila SZABO, 0925269, 066 932




1 Instructions
==============

To start the program, please execute

bin/SuperEngine6000.exe

Controls:

F4 = toggle free camera (default off)
WASD = move
Esc = exit

F1 = toggle wireframe (default off)
F2 = toggle lightscattering (default on)
F3 = toggle environmentmap updates (default on)
F5 = toggle lensflares (default on)
F6 = toggle Shadowvolumes (default on)
F7 = toggle SV zfail versus zpass (default zfail)





2 Description
=============

This is our submission 2 for VU Echtzeitgrafik. We used the framework we had established in the previous submission to implement our announced effects. Advanced effects include a skybox, normal mapping, dynamic environment mapping (for reflections), light scattering, shadow volumes (including "zpass" and "zfail" methods) and lens flares. Furthermore, our framework was extended by custom-coded functionality wrappers, such as off-screen rendering, an extensive animation mechanism and interfaces for Autodesk Maya. 

Our last submission consisted of basic mesh importing and rendering with color textures and a phong shading model. The visual fidelity of surfaces is now greatly enhanced with normal mapping (which is being handled correctly through calculations in tangent-space). Reflective objects are (plausibly) approximated by the application of environment mapping. Some experimentation has been done regarding performance, and we ended up only updating the environment map every second frame, and leaving advanced shading algorithms out of the environment map rendering pass. Both the construction of the skybox and rendering of fullscreen quads is done entirely using the geometry shader. The light scattering effect gives a very volumetric feel to the scene, and any shape or color texture can be used as a volumetric light source. The light source position is indicated using the lens flare effect, which adds physically correct artifacts emulating a camera lens. The light source casts shadows using the shadow volumes technique, which can apply both "zpass" and "zfail". "zfail" causes some z-fighting issues, which has been remedied by small depthbuffer offsets. 

Our FBX SDK interface has been greatly extended to allow for great portability and easy content creation. We use the designated functionalities of Maya to define and set custom object and vertex attributes, and utilize Maya's animation mechanisms, importing them into our own animation system. We also pack all objects and embedded media into a single .fbx file to keep things tidy. Finally, we created a little scene to showcase all our technologies (the camera can be moved freely after pressing F4). Enjoy!





3 Libraries used
================

OpenGL, GLEW, GLFW, FreeImage, FBX SDK