Skip to content

Latest commit

 

History

History
53 lines (52 loc) · 4.16 KB

TODO.md

File metadata and controls

53 lines (52 loc) · 4.16 KB

TODO List

  • Re-add support for specular materials - Medium - Added in 20f4b81
  • Create a OpenGL renderer view - Easy/Medium
    • Start with just being able to switch between path tracing and OpenGL
    • Need to decide whether to use "modern" OpenGL, or fixed pipeline
      • Leaning towards modern, since custom shaders might be useful in the future
      • In addition, I am more familiar with the modern model, since it is more similar to DX11
  • Be able to debug parts of the render - Hard
    • I'm envisioning something like RenderDoc
    • So you press a button to "Record the next frame".
    • Then it records all the rays that are shot, etc.
      • This will be diffucult to cleanly implement
        • We will need to come up with a way to serialize different types of 'events'
          • Perhaps some kind of polymorphism
          • With base member values, like pixel pos, and path number, to help sort/bin the events
      • Since it will somehow require instrumenting a lot of the code base, and passing around a 'logger' object, (per thread)
      • If possible, I would prefer if the instrumentation could be compiled out with pre-processor type logic
        • So in full release builds, the logging code doesn't exist
      • Initial ideas:
        • Pass the logger in as a dependency for functions
        • Surround logger code with a macro or #ifdef guards
        • If logging is disabled, the logger dependency might be removed in dead code elimination
          • It wouldn't be the end of the world if it didn't, since the logger param will just be a pointer
    • After the record, it switches to OpenGL view, where you can view the results
      • The interface for this is going to be one of the hardest parts
      • I would like it to be something like RenderDoc, where you can 'pick' a pixel, and see all the paths drawn
      • It would be very nice to be able to visualize the sampling.
        • For example, to draw the disc and ray chosen for general area light shapes
  • Implement other BRDFs - Medium
  • Implement normal/UV interpolation - Easy - Added in 6735168, 2c92ec3, 25a16f2
  • Implement JSON scene loading - Medium Added in b021497, 1f03f32, c762815
  • Implement using textures for material properties - Medium
  • Create a nice test render scene - Medium/Hard
  • Implement transmissive materials - Medium
    • Implement ideal specular refraction and transmission - Added in 4feb070
    • Implement isotropic scattering media - Added in eff77d8
    • Implement non-isotripic scattering media (Henyey-Greenstein, Raleigh, etc.)
  • Have a framebuffer / visualization that shows how many bounces each pixel is averaging
    • Heatmap??
  • Update camera to full cartesian