Photon-v2 icon indicating copy to clipboard operation
Photon-v2 copied to clipboard

Full spectral rendering

Open TzuChieh opened this issue 6 months ago • 0 comments

To support PLT, one of the first steps is to move to full spectral rendering. Some primary goals include:

  • Able to simulate dispersion of light
  • Use hero wavelength spectral sampling to reduce color noise
  • Spectral sampling as a first-class citizen, but retain the ability to perform tristimulus color rendering with a compile time switch

Following design decisions must be made:

  • [ ] What to store in math::Spectrum?
    • Spectral sample values, wavelengths and PDFs?
    • Should we rename it to indicate it is sampled?
  • [ ] What type to store in SDL resources?
    • User may input scalar, tristimulus color, full/partial spectrum
  • [ ] How to generate spectral samples (including wavelengths)?
    • Need to identify places where generating spectral samples/wavelengths is possible
    • We may need to extend TMIS to be able to handle N PDFs
  • [ ] Do we need non-piecewise spectral curves?
    • Do we need Gaussian-based method for spectral resampling?

Things to do:

  • [ ] We may not need CSpectralSampleProps, just use a struct for general SpectralSampleProps
  • [ ] constexpr compatible SpectralSampleProps
  • [ ] Compile time switch for spectral/tristimulus color mode; when in tristimulus color mode, able to choose a white point & color space for rendering
  • [ ] Add constexpr color constants for convenience (math::constants::purple, math::constants::black, etc.)
  • [ ] Handle #101

TzuChieh avatar Jul 28 '24 11:07 TzuChieh