Laboratory Assignment 1 -

Due: Feb 12, 2015

Total Points: 100 (+bonus)

Objectives:

This project will expose the team to the following.

  1. The use of WebGL to create simple user interfaces
  2. The use of WebGL to communicate with GLSL
  3. The use of GL primitives. 
  4. The entire team will generate 2D objects and textures using procedural means.
Tasks & Grades:
    1. (0) To be Impressed: http://hirnsohle.de/test/fractalLab/
    2. (0) A template is provided here. It is almost empty sans some ability to set up the user interface. You need to organize the code in a certain way. Please peruse use the directory organization (sans model for now) at http://web.cse.ohio-state.edu/~weit/WebGL/LAB1/. Create folders Common and populate it with JavaScript files from the author of class text namely initShaders.js  and webgl-utils.js. You can populate the folders js and web in the same fashion that Wei did.
    3. (20) User InterfaceIt is the team's task to make sure it compiles on the platform-of-choice. The drawing pane will occupy  the entire “viewport”. The menus will be of the pop-up type and  will include the list “Maze”, “Tree”, “Curve”, "Object"(see below), "Clear" and "Quit".  Currently, you need a "2-button" mouse to pull this off.  You need add callback functions to render each of the objects/textures listed below. By default, any of the three/four objects below can be drawn. The fractaLab page can serve to provide inspiration.
    4. (70) The following objects have to be constructed. A n-member team will any construct n objects; n=3 or n=4.
      1. A 2D maze. Please see the code here - http://en.wikipedia.org/wiki/Maze_generation_algorithm
      2. A 2D fractal tree. Please see example code here -  http://rosettacode.org/wiki/Fractal_tree
      3. A 2D Hilbert curve. Please see example - http://en.wikipedia.org/wiki/Hilbert_curve
      4. A 2D Mandelbrot or Julia set. Please see example - http://hirnsohle.de/test/fractalLab/
      5. Or any of the objects in the fractalLab web page.
    5. (10) User Documentation:  Create a web page that describes the efforts of the team and individual team. Include images that show off your work.
    6. (20 max) Creative Sandbox: If any galleries and content  can be included that show off the graphics and programming prowess, that will be swell. Even a better menu system is welcome :). We will consider according additional bonus points.
Team Logistics:

Since there are mostly three (or four) to a team, each person will implement code to create one of the 2D objects.
The whole team will then build a user menu worth 20 points.

Submission:

We will use Carmen to submit the code. We need all the code and compiling apparatus. Essentially, the grader needs to be able to compile easily. Please do include a README file that describes the platform-of-choice.
Call your submissions CSE5552_LabN_Your-Name. Please use an archiving technique to bundle all files (zip, rar, etc.). Every student in all groups will submit the files. Do designate one person as poin-of-contact and name that person
in the README file.

Milestones:
Since deadlines come and go real fast, we would like to ensure that the  class is in sync with us.
On Tuesdays, each group will be prepared with upto 6 slides that describes how they plan to generate each of the three/for objects.
The slides should describe the software engineering aspects (data structures, function layout, etc.), actual algorithms of choice, and primitives used (TRIANGLES, LINES, TRIANGLE_STRIP, etc.).
Not all groups will be called. However, it is best to be prepared. The instructor will used randomized algorithms to select a subset  of the seven groups to describe their apporach to draw one of the objects.
The lab is due on Feb 12 midnight.