Project Requirements: "sufficient" complexity Features list Ideas will probably be overly complicated No gross inefficiency Example: Copying all the vertices over the pci express bus every frame Grading: Fraction complete Feature list revision is ok Provided the new feature list would have been ok Due dates: Project description: Soon With features and midpoint Midpoint: In maybe 3 weeks or so Final version including final feature list: In about 5 weeks Suggested Project 1 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 Midpoint: Features 1 through 4 Suggested Project 2 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 availiable 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. Midpoint: Shells launch, explode into token effect without particles Suggested Project 3 (for people who took CS492 last Fall) Title: FPS with OpenGL 4.0 Description: An FPS similar in complexity to CS492 Game Engine Design from last Fall, updated to OpenGL 4.0. Features: 1. All OpenGL calls will be checked to make certain they are available in OpenGL 4.0+. This will require vertex and fragment shaders. 2. All objects will be stored in vertex bufferes on the GPU, and only one copy of large objects will be stored. 3. The engine will be multithreaded so that rendering, physics/movement, and collision detection will be handled separately 4. Lighting will be calculated in the manner of the modern tutorials wikibook 5. Level of detail will change depending on the distance objects are viewed from Midpoint: Playable, but no lighting or level of detail Class Demo Project 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 Midpoint: 1, 2, 5, 6, and 7. Fruit falls straight down without GPU physics. Note: This isn't done yet, but will be. The first two are covered, and sort of #6, and #7. We'll do a reprise of vertex attributes at some point and add in the level associated with each branch. The fruit detail will be related to the tesselation shader demo, probably next week. Physics will be a continuation of feedback, but might be replaced with a compute shader in a couple weeks. Today's topic (longer): Rendering a .slo object Simplest format ever, but I don't really recommend it! Vertex list, could be triangles or lines How long is the file? We can figure it out! stat / fstat Are they triangles or lines? .slo format doesn't say Today's topic (shorter): Setting up vertices and CPU part of the project Let's make a stack of crates! Everybody loves crates! Crates can be made to bulge Practice Problems: Besides rotating the cube, have it stretch taller and shorter Change the square cube into a regular pentagonal prism Upcoming: Tesselation Compute shaders Particle Physics Textures Lighting