Photon-v2
Photon-v2 copied to clipboard
Full spectral rendering
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 generalSpectralSampleProps
- [ ]
constexpr
compatibleSpectralSampleProps
- [ ] 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