You are to develop a program using C++ and OpenGL that renders a tropical island.
The exact contents of the island are up to you, but the end result should be a consistent looking graphical scene.
Common to such scenes are trees and vegetation, sandy beaches, and clear blue skies and seas.
You should consider how scene management and rendering of transparent objects could help with the correct and efficient rendering of the scene, and how vertex shaders and skeletal animation can help with creating realistic looking moving foliage.
Think about ways in which the concepts you have learned during this module could be applied to create a dynamic day / night cycle.
The coursework is divided into two parts.
The first part is to use the knowledge gained from the tutorial series to develop a program that can display an animated environment containing combination of graphical elements, with the program automatically moving the camera.
The second part is to develop a number of advanced features that demonstrate your full understanding of the graphical techniques outlined during the module, and combine them into a single program to enhance the graphical scene created in part one.
You may use the material provided to you in graphical tutorial series, and are recommended to use this as your starting point.
Marks can be gained by showing a good working knowledge of the tutorial material, as well as by moving beyond it by researching and implementing more advanced graphical techniques, and novel ways in which the techniques discussed in the module could be combined for enhanced graphical fidelity.
You will not lose marks for using textures and models from external sources, but remember to reference and attribute them as appropriate.
The scene must include a landscape of some form, rendered such that at least one texture is used in the fragment shader.
Part of the scene must be lit using at least one light source, including calculations for ambient, diffuse and specular components.
Part of the scene must show use of environment mapping.
The camera should initially move automatically through the scene.
The scene should be controlled via an overall scene graph for efficient rendering.
Appropriate usage of simple meshes and textures to combine into additional scene elements.
Post processing effects: Blurring, colour correction, lens flare, HDR bloom effects etc. These may be applied to specific parts of the camera track, or optionally via keypresses.
Advanced Lighting: Inclusion of new light calculations such as spot lights, projective lighting, or alternate methods of calculating the contribution of a large number of lights.
Shadowing: Part of the scene must demonstrate the use of real time shadowing techniques. Use of multiple shadow maps, cascaded shadow maps, or omnidirectional shadow maps via cube mapping are considered more technically advanced.
Multiple viewpoints simultaneously using a split screen effect.
Animated objects (skeletal animation, a progressively evolving tree mesh, grass waving in the wind).
Environmental effects such as rain, splashing puddles, lightning strikes, or fire.