Overview
This program showcases cel-shading technology as well as collision detection. The objects are all hierarchically modeled and the skybox and ground are textured. The camera is a basic fps camera based on program 3. Movement is bounded by the ground and the skybox.
Features
1. Cel-Shading
The cel-shader, like phong shading, combines ambient, diffuse and specular lighting. The diffuse lighting has a gradient based on the light intensity, rather than being smooth. Outlines are drawn based on the light intensity at the given point.

The picture below shows the same scene with the phong shader. (Switch shaders using the '2' button)

2. Textures
The ground and sky are both textured.

3. Collision Detection
Below shows the collision detection in action.

4. Hierarchical Modeling
All of the objects are modeled hierarchically.

How to Use
Movement
- WASD keys to move around.
- Click and drag to look.
- 'f' key toggles fly mode.
Object Control
- '1' to toggle movement.
- '-' to decrease speed.
- '+' to increase speed.
Shader Control
- '2' to toggle between phong and cel shading.