GPU Programming Project 1

Graphics Program with Modern OpenGL

Project 1 in this class is to create a graphical program of your choosing, of sufficient complexity to require you to learn how to program a GPU using modern OpenGL.

Due Dates and Grade Weights

(20 points) October 10: Project Specification
(50 points) October 24: Project Due
(30 points) Week of October 24: Presentation of your Project

Project Presentation

For the presentation, show the class what your project looks like, and explain in a general sense how it works. We don't need line-by-line coverage, just a general description of what each shader program does. Be prepared for questions. Plan for a 10 minute presentation with time for questions.

Alternative Projects

Since CS392 is a special topics course, if you would like, you can design your own project 1 and project 2. So if you have a project that you would really like to do that doesn't fit into this mold, feel free to discuss it with me.

Project Examples

Here is a list of examples that was explained in class on September 19:
Title:  Grass Field with Lawnmower
Description:  There will be a field of green grass, with occasional weeds, in a gentle breeze.  Then, a lawnmower will mow the field, one row at a time.  Post-mowing, the grass (and weeds) will be short and not affected by the gentle breeze.
Features:
        1.  The grass will be varied in color, primarily with green and light brown.
        2.  The wind will move the grass in a pattern
        3.  There will be at least 100K blades of grass, possibly more depending on performance
        4.  The weeds will be taller than the grass, and there will be at least 100 of them
        5.  The lawnmower will be a textured box with wheels
        6.  The lawnmower wheels will turn at the correct speed so it looks like they are rolling on the ground
        7.  The camera will be movable using typical FPS controls

Title:  Firework Show
Description:  Fireworks will be launched from a fixed point at the bottom of the screen.  These will be shells only, like a professional show.  Shells will explode into a variety of effects.
Features:
        1.  Shell launch angle, speed, and delay before bursting will vary from one shell to the next
        2.  Shells will burst into a number of particles, in a variety of ways to produce different effects
        3.  There will be at least 5 different effects
        4.  There will be at least 5 different color patterns, which are available for each effect, yielding 25 distinct types of shell.
        5.  Shells and particles will be subject to gravity.
        6.  The GPU will be used for physics calculations for each particle.
        7.  The camera will primarily remain at a safe viewing distance, but every 10 seconds will fly through the show and assume a different viewing position.


Suggestion for people who took CS392 Game Engine Design:
Title:  FPS with Variable LOD
Description:  An FPS building on the game engine from CS492 last Fall
Features:
		  1.  The game will take place in a forest of generated trees
		  2.  The trees will grow with time, increasing in detail and complexity
		  3.  The growing trees will block projectiles
		  4.  Once the trees grow large enough, they will begin to shoot at the player
		  5.  Trees can be destroyed even when small
		  6.  More trees will continue to grow until the player is killed
		  7.  Score is determined by how long the player survives


Class Demo Project from Last Time I Taught This

Title:  Fruit Tree
Description:  A fruit tree is generated in a procedural way.  Fruit is added at the end of each branch.  Suddenly, the tree is rocked by an explosion which throws fruit in all directions.  Fruit is subject to gravity, and lands on the ground.
Features:
        1.  Tree contains at least 2,000 vertices
        2.  At least 500 fruits are generated
        3.  Fruit leaves the tree with a trajectory away from the center
        4.  Fruit physics are handled on the GPU
        5.  Fruit level of detail improves upon close viewing
        6.  The tree branch color varies depending on position within the tree
        7.  The tree rotates so that each side can be seen and is affected by a gentle breeze
This is the "seedfruit" demo I keep referring to