John Brosz's 591 Web Site

Labs: T01 (MW 1300) in MS 239.
Lectures: L01 (TR 930) in ICT 116.
Contact: brosz at
Office: None, email me.

What's up . . .
  • April 16 - Presentations of projects in lab.
    Presentation Schedule:
    Wednesday (MS 239) 1:00-1:50pm
    1stLeon and Roberto
    2ndPeter and David
    3rdPeter, Thomas, and Beverley

    Thursday (ICT 116) 9:30-10:45am

  • April 14 - This will also be a project lab. For question 3c of assignment 4 please do not use the 'Bezier knot sequence'; it makes the calculation the same as 3b and you will not get full marks.
  • April 9 - This lab is going to be a project lab. Come to work on or get help with your project or assignment 4. Take some time to check out these sample questions. The final exam is likely to feature these (or modified version of these) questions. Please email me with any questions about them you may have. In other news your project presentations will be split between Wednesday's lab and Thursday's lecture next week. Email me ASAP to indicate your preferred day and order. I'll post a schedule here soon. Lastly your project report is going to be due on BSD (Friday, April 18).
  • April 7 - Not much happening in lab today, for lack of anything else I'll give a general overview of radiosity. Also here (1, 2) are my slides from my lecture on Non-Photorealistic Rendering.
  • March 31 - Assignment 3 marking is finished, I'll be handing them back in lab. I'll go through the answers for questions 3 and 5, and discuss the Radiosity hemicube technique.
  • March 24 - I'll be spending a bit of time demoing the web site This website shows correspondance between a signal and its Fourier transform. I'll also discuss a bit of theory behind the redbook trackball example (code is here). This won't take long so please bring any questions about your projects, if you have any.
  • March 17 - Pretty much all of Monday's lab is dedicated to an overview of B-Splines. I'll also talk about assignment 3 for a bit.
  • March 12 - I'll be going through some code for picking 3D points in OpenGL.
  • March 5 - Vertex arrays and assignment 2 marks.
  • March 3 - I'm going to discuss alpha blending in OpenGL.
  • February 25 - Here are instructions to create a webspace with your cpsc account. In lab I covered texture mapping.
  • February 21 - In the last lab before reading break I tried to give a bit of formulae that would assist in creating a shader that achieved a fisheye projection. Due to half GLSL strangeness and half typos this ended up being somewhat useless. Here's a better version that should work, but be very careful as this projection is very tempermental.
    p = eye coordinates of vertex (after multiplication by modelview but not multiplied by projection)
    d = length(p) / RADIUS -> radius is the radius of your fisheye hemisphere
    p = normalize(p)
    float u = atan2(p.y,p.x)
    float v = 2.0 * acos(-p.z) / PI -> this was my typo in lab, I put a + instead of a *
    gl_Position.x = cos(u) * v
    gl_Position.y = sin(u) * v
    gl_Position.z = d;
    gl_Position.w = 1.0;
    So, I hope that helps. I will likely go over what is going on in a fisheye projection in lab next Monday.
  • February 13 - I'm going to go through vertex and fragment shaders that implement the default OpenGL behaviors. The code for these shaders is here.
  • February 11 - More discussion on GLSL and using shaders in OpenGL. Also the assignment one marks are here.
  • February 5 - Here is the starter code for assignment 2 (Windows code - uses GLUT) (Linux code - does not use GLUT). If working in Windows I do recommend taking a look at the Linux code as I've gone through and added some comments to the code. It is likely that the Linux code will work in Windows however I have not tested this.
  • February 4 - I covered material related to homogeneous coordinates.
  • February 1 - The lab machines should now work. The problem was due an "upgrade" of video drivers. The drivers have now been downgraded and seem to work. If you have any further problems please email me (and bugzilla) ASAP.
  • January 31 - There is a problem in the lab as the Linux machines video card resets when running OpenGL code. I'll post an update here when the kind bugzilla technicians have found the problem.
  • January 30 - Assignment 1 stuff, then a review of QT and some OpenGL material (namely QT overview, then OpenGL lighting and display lists).
  • January 28 - Project proposal, example of using glDrawPixels for Assignment 2, assignment submission, lack of GLUT, and QT tutorial. Example code is here. To compile this use: g++ -lGL -lGLU -lXxf86vm filename.cpp.
  • January 23 - I reviewed some math starting with basic linear algebra material such as dot product, cross product, and projection. I also ran through calculation for 3D distance between a point and a line as well as distance between two lines. I also ran through the calculation necessary to change from one coordinate frame to another as well as the calculation for a rotation matrix that will rotate a given vector onto another given vector.
  • January 21 - The first lab. I discussed the likely format of assignments and quickly went through a wide variety of ideas for the project. If you want you can form a group for the project however be aware that more is expected from a group than an individual. It would also be a great idea to do your paper critique on a topic related to your project. I recommended that you use C++, OpenGL and QT or GLUT if you are going to work in LINUX. If you wish to do your coding in Windows that is fine as well, my recommendation is to use .Net and either OpenGL (check out TAO) or DirectX. I also quickly ran through the basic of using STL vectors, a useful data structure for anyone coding in C++. Lastly I did quick poll to see what math you would like reviwed in Wednesday's lab.
  • Assignment 4 - Sampling and Shadows - link
    • Due April 15
    • Hand into assignment boxes.
    • I will email out the marks once I am done marking.
    • For 3c please do not use the 'Bezier knot sequence', use something else, preferably the standard knot sequence (i.e., 0, 1, 2, ...).
  • Assignment 3 - Parametric Curves
    • Due March 20
    • Will be handed back in lab.
  • Assignment 2 - Shaders - link
    • Marks are here.
    • Due February 26.
    • Base code is here: (Linux, Windows)
    • Submit executable/binary, readme, and code. Also submit an image of each shader work as well as a description of what each shader does and how.
    • Marking Scheme: 1 mark for each shader. Only half a mark for the shader if it doesn't work right or the shader description doesn't match the shader.
  • Assignment 1 - Gouraud Shading - link
    • Marks are here.
    • Due Jan 31.
    • To hand in please email a zip or tar file of all code and executables to brosz at Be sure to include compilation instructions as well as any necessary dlls (for those developing in Windows).
    • Colour intensity: basically just pick good colours that make it possible to tell that you're doing the Gouraud shading properly. If you want a formula use either r+g+b = .8 or Max(r,g,b) = 0.8, your choice.
    • Colour variability: to show that you can change the colour all you have to do is make colour a global variable (i.e., no magic numbers!). If you want to be more fancy you can take colour as input via command lines, input file, or widgets on the interface.
    • Glut isn't working in the lab. I've posted code under the Jan 28 entry that directly uses XWindows. You also can use QT or GLUT on a Windows system. UPDATE: Apparently freeglut is somewhere on the lab machines . . . I haven't looked into this yet, once I've had time to check it out I'll make another post showing how to compile with freeglut.
Exam Project
  • Report:
    • Due Frday, April 18 (midnight)
    • No minimum/maximum length . . . cover what you did (and why). You don't get more marks per page so wordiness won't help. Screenshots and pictures are good things to have in a graphics report.
  • Presentation:
    • On Wednesday, April 16 in MS 239 and on Thursday April 17 in ICT 116. Email me ASAP to secure your preferred date and order. A schedule will be posted here soon.
    • Right now it looks like you will have about 10 minutes to present (this might change).
    • I assume you will want a Windows machine (with PowerPoint) and projector. If you need a Linux machine you need to book your presentation for Wednesday. If you need anything else, please email me as soon as possible.
    • Again, pictures are good.
  • Proposal:
    • Due February 4.
    • Single Page.
    • Describe project and cite some references.
    • If working in a group, list how project will be divided between group members.
    • Estimated timeline.
  • Links to past projects and ideas:
Paper Critique Other useful pages