CS 457/557 -- Winter Quarter 2023

Project #7A

Geometry Shaders: Quantizing in Cylindrical Coordinates

100 Points

Due: March 10

This page was last updated: January 17, 2023

I will be making up an alternative Project #7 for those who do not have access to a system capable of doing Geometry Shaders.


The word "quantize" means to take something that is continuous, and give it discrete (fixed) locations instead.

In this project, we are going to quantize an object in cyclindrical coordinates. You will add more detail to each triangle using the triangle interpolation (like in the sphere subdivision shader). You will then turn each x-y-z into a radius and height, quantize both quantities, then convert them back to x-y-z.


  1. Your input should be something with triangles, e.g., the teapot, the torus, an OBJ file, etc.

  2. Have a uLevel slider that controls the number of levels of triangle subdivision.

  3. Have a uQuantize variable that controls the quantization equation (see below).

  4. Do some sort of lighting. The quick-and-dirty-diffuse is fine. Per-fragment would be even better.

A Little Quantization A Lot of Quantization


The Turn-In Process:

Your turnin will be done at http://teach.engr.oregonstate.edu and will consist of:
  1. All source files (.cpp, .glib, .vert, .geom, .frag). You can zip this all together if you want.
  2. A PDF report with a title, your name, your email address, nice screen shots from your program, and the link to the Kaltura video demonstrating that your project does what the requirements ask for. Narrate your video so that you can tell us what it is doing.
  3. Be sure your video's protection is set to unlisted.
  4. Do not put your PDF into your zip file. Leave it out separately so my collect-all-the-PDFs script can find it.

Be sure that your PDF file is turned-in separately (not part of a .zip file).


uLevel correctly subdivides each triangle20
uQuantize correctly quantizes the x-z radius of each vertex30
uQuantize correctly quantizes the y of each vertex30
Whatever you do for lighting is able to distinquish between the different faces20
Potential Total100

Be sure that your video demonstrates all features that you want credit for.