Summarize, in about one paragraph, your approach to the lights assignment. How did you structure your code? What's cool about it? Are there parts you weren't able to complete?
Remember to remove the placeholder class from your text; since (of course) your report information isn't a placeholder and shouldn't be styled as such!
Describe the scene you lit, the light count and placement approach, and include a screen recording showing it running in real-time:
Credit + cite your sources for textures and models, if you did not create them yourself.
Document the command-line arguments that can be used to control your viewer. This will probably be a copy of the section from your A2 report with a few new flags relating to lights (if you added any).
The purpose of this section is to get you to think critically about your code by providing evidence sufficient to demonstrate to course staff that it works. These thoughts may also help you improve the code as you work on it in the Final project and beyond.
Cover, at least:
how data moves from "LIGHT"s stored in an s72 file to the in-memory representation used by your renderer;
did you decide to premultiply the power and tint attributes or leave them separate?
Cover, at least: the structures used to pass light lists to materials.
Include screenshots or recordings of your viewer showing proper behavior of lambertian and pbr materials under sphere, spot, and sun lights.
Include a graph showing the performance impact of adding additional lights to a test scene. Document how you made the scene and what kind of lights and camera positioning you used. (Disable shadows for this test.) We would theoretically expect a linear increase in computing time; is this borne out in practice? How many lights can your viewer handle at a reasonable frame rate?
Cover, at least: how (and when) your viewer renders shadow maps; how your viewer works to avoid shadow map artifacts (e.g., rendering backfaces; using bias/offset; ...); how cube map textures are provided to materials; how many PCF samples your code takes and how it weights them.
Include output images showing that spot light shadows are working correctly for both lambertian and pbr materials.
Include output images showing that "shadow" light parameter does actually change the shadow map resolution.
Include a graph showing the performance impact of adding shadowing to lights to a scene. Attempt to separate the performance impact of shadow map rendering and shadow map sampling (e.g., by testing the same scenes with per-frame rendered shadow maps and pre-rendered shadow maps). Which is larger?
Cover, at least: your chosen method for sorting lights to meshes.
Build a scene in which your light sorting technique provides a performance improvement over rendering all meshes with all lights. Include a screen shot (and the scene itself).
Include data demonstrating the performance improvement in rendering this scene. E.g., a graph of the frame times for an animated fly-through of the scene with and without your sorting code enabled.
Cover, at least: your implementation of PCSS (sampling pattern, counts)
Include images showing the same shadows rendered with and without PCSS, showing the spreading behavior as the shadow stretches further from the light.
Cover, at least: your choice of shadow map cascade levels and layout; how your cascade is packed into a texture; how [if at all] your cascade avoids "boiling" as the camera moves
Include images showing a scene rendered with a shadow-casting distant directional light. Include images with a modified shader color-coding pixels by what cascade level they are sampling. Include images from a debug camera, showing how the shadow map cascade fits the camera frustum.
Cover, at least: how you chose to set up cameras for cube map rendering
Include images or video showing a scene rendered with a shadow-casting sphere light. Show that there are no artifacts at the edges or corners of the shadow map cube.
If you have received instructor permission to pursue another extra credit activity, include information about that activity here.
Include images or video showing a scene rendered with a shadow-casting sphere light. Show that there are no artifacts at the edges or corners of the shadow map cube.
This is the end of the structured report. Feel free to add feedback about A1 to this section.