Summarize, in about one paragraph, your approach to the materials assignment. How did you structure your code? What's cool about it? Are there parts you weren't able to complete?
Describe the model and texture you created and include a screen recording showing it running in real-time:
Describe your creation process for the model and texture.
For each of the following sections, describe the overall structure of your code, and reference the specific files/functions/data structures that you used. For any parts that are incomplete, discuss what you were able to do and what you tried but couldn't get working.
The purpose of this section is to get you to think critically about your code by explaining it to course staff; these thoughts may help you improve the code as you work on it in A3 and beyond. This section also forms a road map to your code that we can use while grading.
Cover, at least:
your changes for the new "ENVIRONMENT"
type;
your choice of coordinate systems for the environment map;
your handling of the high dynamic range.
Include a screenshot (or, ideally, recording) of your viewer drawing a scene with both the `environment` and `mirror` materials.
Cover, at least: your choice of tone mapping operator, your viewer's output color space and format.
Include a screenshot of your viewer drawing an example scene before and after implementing tone mapping.
Include a graph of your tone mapping operator's curve. Consider including histograms of the output values to help illustrate how the curve is working.
Cover, at least: your implementation of texture map handling; your implementation of the cube utility.
Include the output image your viewer produces from drawing the utility cube with the "lambertian"
materials.
Include an example of a lighting environment and it's precomputed lambertian lookup table. (TODO for course staff: ShowCube.js to make this easy.)
Cover, at least: your choice of coordinate systems for the normal map.
Include a screen recording or a sequence of screenshots showing normal maps working. (E.g., demonstrate how moving the light changes the shading; show the same object with and without its normal map to show that detail is, indeed, being added.)
Include screen shots demonstrating that normal mapping is working with all material types.
(Except "simple"
, which is not required to support normal maps.)
Cover, at least: your implementation of a specular look-up mipmap; your implementation of the cube utility; how you dealt with texture-or-constant parameters in the material model.
Include the stack of look-up cubemaps your utility produces when run on an example lighting environment.
Show screenshots or screen recordings of a variety of interesting material appearances demonstrating the parameter range of the "pbr"
material.
Cover, at least: your choice of coordinate systems for the displacement map.
Include a screen recording or sequence of screenshots demonstrating the parallax effect as the camera moves over a displace-mapped object.
Include screen shots demonstrating that the displacement mapping is working properly with all material variations.
(Except "simple"
, which is not required to support displacement maps.)
This section demonstrates that you have tested your code, including finding its limits.
Before getting into the tests, describe here the relevant information about your testing system(s). (CPU, GPU, Memory, driver versions, OS version, ... -- anything you think might be relevant!)
Compare the relative performance of the various material types in this assignment. Illustrate the costs of adding normal (/displacement) maps.
Compare the relative performance of a high-resolution mesh with a lambertian material to a low resolution mesh with a normal map and a lambertain material. (When) is texture detail really cheaper than vertex detail?
This is the end of the structured report. Feel free to add feedback about A2 to this section.