/* RCSid $Id$ */ /* ====================================================================== Photon map density estimation routines Roland Schregle (roland.schregle@{hslu.ch, gmail.com}) (c) Fraunhofer Institute for Solar Energy Systems, supported by the German Research Foundation (DFG LU-204/10-2, "Fassadenintegrierte Regelsysteme" (FARESYS)) (c) Lucerne University of Applied Sciences and Arts, supported by the Swiss National Science Foundation (SNSF #147053, "Daylight Redirecting Components") (c) Tokyo University of Science, supported by the JSPS Grants-in-Aid for Scientific Research (KAKENHI JP19KK0115, "Three-Dimensional Light Flow") ====================================================================== $Id$ */ #ifndef PMAPDENS_H #define PMAPDENS_H #include "pmap.h" /* Photon map lookup functions per type */ void (*pmapLookup [NUM_PMAP_TYPES])(PhotonMap*, RAY*, COLOR); void photonDensity (PhotonMap *pmap, RAY *ray, COLOR irrad); /* Surface-bound photon density estimate for global and caustic photons. Returns irradiance at ray -> rop. */ void photonPreCompDensity (PhotonMap *pmap, RAY *r, COLOR irrad); /* Surface-bound photon density estimate for (single) precomputed photon. Returns precomputed irradiance at ray -> rop. */ void volumePhotonDensity (PhotonMap *pmap, RAY *ray, COLOR irrad); /* Volume photon density estimate using Henyey-Greenstein phase function. Returns inscattered irradiance at ray -> rop. */ #ifdef PMAP_PHOTONFLOW void volumePhotonSphIrrad (PhotonMap *pmap, RAY *ray, COLOR irrad); /* Evaluate spherical irradiance from volume photons inscattered at /* ray->rop, ignoring participating medium. This evaluates the scalar /* irradiance of a physical light field represented by "photon flow". /* The found photons in the search queue must originate from disparate /* paths for an unbiased solution. This requires enabling the photon /* path ID filter callback in findPhotons() to remove duplicate paths. */ #endif #endif