CSCI 444/544 - Advanced Computer Graphics

Spring 2019 - Assignment 3 - Procedural Noise Textures



|   Home |  Syllabus |  Assignments |  Schedule |  Resources   |
This assignment is due by March 20, 2019 by 11:59pm.

You are free to choose which OpenGL implementation you would prefer to use: OpenGL, OpenGL ES, or WebGL.

HOWEVER - if you choose to use a version or framework that we are not covering in class, then you must ensure your submission builds out of the box on the machines in the Computer Commons. Be sure to note any special instructions in your README.

If the grader (i.e. instructor) cannot compile your code, you will be contacted once to solve the problem.


Part I - Create A Procedural Texture



There are two steps to this assignment and they all are actually performed in the Fragment Shader for the most part (you may need to pass some uniforms and other values).

Step I: Generate Perlin Noise.
This page has a good write up and technical explanation of how to implement Perlin Noise. While glm has a built in noise function ( glm::noise() ), we want to implement it ourselves. Another good resource is Ken Perlin's own website. We are going to use the vertex's position as our texture coordinate for the 3D Noise Map. Once you are able to generate 3D noise, your teapot should be white, gray, and cloudy looking.

Step II: Apply a Procedural Pattern.
At this point you now have a choice of what to do. You can choose to apply a wood grain texture (see book) or apply a marble texture (tutorial). For any of these techniques, you will need to apply some number of octaves to your noise. Examples of the wood grain and marble are shown below:

Wood Texture
Marble Texture
You should choose appropriate colors for the texture that you are applying. Additionally, you do not need to make your textures dynamic (i.e. user can change the number of octaves and persistence level). You may hard code these values into your shaders. However, choose appropriate values so your result "looks good".


Part II - Apply Time

Required for students in CSCI544

Extra Credit for students in CSCI444



Realistic or not, we now want our wood/marble pattern to vary with time. Add a second cube/sphere/teapot/whatever-you-are-drawing. Now apply the same wood/marble pattern to the second object but with time as the fourth dimension (reference). It's up to you to decide whether to use a subroutine or second shader program to accomplish this.


Part III - Create Your Website



In addition to creating this awesome looking teapot, modify your webpage from A2 to include several screenshots.


Documentation



With this and all future assignments, you are expeced to appropriately document your code. This includes writing comments in your source code - remember that your comments should explain what a piece of code is supposed to do and why; don't just re-write what the code says in plain English. Comments serve the dual purpose of explaining your code to someone unfamiliar with it and assisting in debugging. If you know what a piece of code is supposed to be doing, you can figure out where it's going awry more easily. (Interestingly enough, this code review of Doom 3's source code says the exact opposite - well written code should require no comments. Well, we don't work at id so we're going to comment.)

Proper documentation also means including a README.txt file with your submission. In your submission folder, always include a file called README.txt that lists:
  • Your Name / HeroName
  • Homework Number / Project Title
  • A brief, high level description of what the program is / does
  • A usage section, explaining how to run the program, which keys perform which actions, etc.
  • Instructions on compiling your code
  • Notes about bugs, implementation details, etc. if necessary
  • How long did this assignment take you?
  • How fun was this assignment? 1-10 (1 - discontinue this assignment, 10 - I wish I had more time to make it even better!)


Grading Rubric for CSCI444


Your submission will be graded according to the following rubric.

Percentage Requirement Description
50% 3D Perlin Noise implemented (no points awarded for using glm::noise()
+15% 4D Perlin Noise implemented (no points awarded for using glm::noise()
25% Wood Grain or Marble Texture Procedurally applied
25% Appropriate number of octaves, persistence level, wood/marble level, colors chosen


Grading Rubric for CSCI544


Your submission will be graded according to the following rubric.

Percentage Requirement Description
50% 4D Perlin Noise implemented (no points awarded for using glm::noise()
25% Wood Grain or Marble Texture Procedurally applied
25% Appropriate number of octaves, persistence level, wood/marble level, colors chosen


Submission


Please update your project so it produces an executable with the name userName_A3. When you are completed with the assignment, zip together your source code, README.txt, and www/ folder. Name the zip file, userName_A3.zip. Upload this file to Canvas under A3.

This assignment is due by March 20, 2019 by 11:59pm.

Last Updated: 03/01/19 12:12


Valid HTML 4.01 Strict Valid CSS! Level Triple-A conformance, W3C WAI Web Content Accessibility Guidelines 2.0