CPE 471 Final Project

Bryce Cheng-Campbell


The fish obj files are from http://tf3dm.com/3d-models/fish/1/obj.
Wavy textures: https://en.wikibooks.org/wiki/OpenGL_Programming/Post-Processing#A_first_effect
Fog tutorial: http://www.ozone3d.net/tutorials/glsl_fog/p04.php


I think water scenes in general are a very interesting graphics problem because they are so dynamic.

I wanted to create an explorable little underwater environment using different shader techniques.

Techniques used

Blender for making the downloaded obj files useable.

Wavy textures to give the surface textures an underwater feel. Works pretty well with the surface of the water because it is a wave function.

Fog for linear blending the world into a deep blue color. Uses a per fragment shader to blend with density factor.

Dynamic lighting to show a darker environment the deeper you go, and when you surface, the fog disappears.


WASD to move the camera

Mouse cursor to pitch/yaw the camera

Images - Medium depth looking down, depth to show darkness by fish, underwater looking up at surface, above surface looking down