I wrote a ray tracer that implements various BRDF models (Oren Nayar, Lamber, Torrance Sparrow and so on). Now I'm trying to implement a BRDF from measured data. I choose the Cornell database data available here:


I want to use them because there's a representation of the data as spectrum with 31 sample (my ray tracer use spectral data for light calculation and then convert them to CIE XYZ and then RGB values for the final image rendering).

Which is the correct way to use this data? Which sample technique must be used?

  • \$\begingroup\$ I will update my answer if your question becomes more specific, but I think pursuing implementation details merits a whole new question. \$\endgroup\$ – MickLH Jan 19 '16 at 23:14
  • \$\begingroup\$ Thanks @MickLH, thanks for the reference. So for some implementation details do you want that I open a new question? \$\endgroup\$ – Fabrizio Duroni Jan 19 '16 at 23:15
  • \$\begingroup\$ Yes, but I might not be the one to answer it! Alternatively, we could chat in realtime. This question can become a list of good approximation techniques, while a question involving the name of the algorithm is probably better for implementation details. (Think of the people using google.) \$\endgroup\$ – MickLH Jan 19 '16 at 23:22

There is no canonical "correct way" to approximate general functions. Sorry.

With that said, the very source you linked to has suggested the Lafortune representation. This representation has been described as "...compact and works well for hardware rendering..." in chapter 18 of GPU Gems.

Implementation details appear to be out of scope for this question.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.