I'm going to jump into the ring here since I just spent an extremely long time on a similar endeavor, see:
You should go and download the additional scenes for pbrt if you haven't already:
Once you have that locally, navigate to
pbrt-v3-scenes/spds
which holds the Spectral Power Distributions (S P D-s)
As an example, look to metals/Au.eta.spd which holds the spectral information for Gold
It looks like this:
298.757050 1.795000
302.400421 1.812000
306.133759 1.822625
309.960449 1.830000
313.884003 1.837125
317.908142 1.840000
322.036835 1.834250
326.274139 1.824000
330.624481 1.812000
335.092377 1.798000
339.682678 1.782000
344.400482 1.766000
349.251221 1.752500
...
In all of the .spd files in the scene folder the syntax is pretty simple:
- the left column is a wavelength (in nm)
- the right is a power value.
This defines the spectral information for a single "color" (note the quotation marks).
This spd file can be used anywhere that a color would typically be used in a .pbrt file
e.g. to create a point light at the origin with a yellow-ish white color, you could do:
LightSource "point" "Color I" [10 10 8]
OR, taking advantage of excess spectral information:
LightSource "point" "Spectrum L" "Fluorescent-Light.spd"
NOTE: I've only told you how to define a single color as a spectral density. And, they are relatively easy to manufacture, again, left side wavelength, right side power.
However, to the best of my research there does not exist a standardized means of producing a texture using spectral information. By which I mean that jpg has RGB channels, png has RGBA channels, but I was unable to find a photo format that had (e.g.) 100-200-300-400-500-600-700nm wavelength channels.
Ideally you'd be able to define what the wavelengths for all texels would be at the top of the file.
You could probably have some fun hacking one together.
But--and this is a problem for both film and games--the majority of asset tools are RGB (and many still use 8 bit RGB), so I don't know of any asset creation tools that will let you spit out spectral info. So, ultimately, most dense spectral information you have will be from YOUR choice of using a .spd in your scene.
Typically, a scene will only use a .spd for the scene lighting, and, often, that can be reduced to tristimulus color (RGB) with little to no radiometric distortion (the rgb value and spd value look similar). With extremely notable (and storied!) exception of fluorescent lights because they have spurious spds.
Subsurface scattering in general, and skin in particular, can be high spectral specificifity when it comes to reflection and refraction, so if you intend to render humans a complete spectral renderer can be a notable win.
It's worth pointing out that rendering humans is NOT the specific reason that Weta decided to use spectral rendering.
In terms of how production renderers use spectral rendering (or don't) look to the ACM Special Issue on Production Rendering (warning: paywall)
which was curated and edited by one Matt Pharr care of Nvidia ;)
Lastly, and sorry for going on too long. My recommendation is that you just attempt exercise 5.2 in the book. It's why it's there. I learned a shocking amount just ripping apart the Spectrum classes.
For possible directions see:
Wilie et al. Hero Wavelength Spectral Sampling 2014