#include <igi.h>
Public Member Functions | |
IGIIntegrator (int nl, int ns, float md, float rrt, float is) | |
Spectrum | Li (const Scene *scene, const RayDifferential &ray, const Sample *sample, float *alpha) const |
void | RequestSamples (Sample *sample, const Scene *scene) |
void | Preprocess (const Scene *) |
virtual IGIIntegrator * | clone () const |
IntegrationSampler * | HasIntegrationSampler (IntegrationSampler *is) |
Static Public Member Functions | |
static SurfaceIntegrator * | CreateSurfaceIntegrator (const ParamSet ¶ms) |
Private Attributes | |
u_int | nLightPaths |
u_int | nLightSets |
vector< VirtualLight > * | virtualLights |
int | specularDepth |
int | maxSpecularDepth |
float | minDist2 |
float | rrThreshold |
float | indirectScale |
int | vlSetOffset |
int * | lightSampleOffset |
int | lightNumOffset |
int * | bsdfSampleOffset |
int * | bsdfComponentOffset |
Definition at line 43 of file igi.h.
IGIIntegrator::IGIIntegrator | ( | int | nl, | |
int | ns, | |||
float | md, | |||
float | rrt, | |||
float | is | |||
) |
Definition at line 34 of file igi.cpp.
References indirectScale, maxSpecularDepth, minDist2, nLightPaths, nLightSets, RoundUpPow2(), rrThreshold, specularDepth, and virtualLights.
Referenced by clone(), and CreateSurfaceIntegrator().
IGIIntegrator * IGIIntegrator::clone | ( | ) | const [virtual] |
SurfaceIntegrator * IGIIntegrator::CreateSurfaceIntegrator | ( | const ParamSet & | params | ) | [static] |
Definition at line 258 of file igi.cpp.
References lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), IGIIntegrator(), nLightPaths, and nLightSets.
IntegrationSampler* lux::IGIIntegrator::HasIntegrationSampler | ( | IntegrationSampler * | is | ) | [inline] |
Spectrum IGIIntegrator::Li | ( | const Scene * | scene, | |
const RayDifferential & | ray, | |||
const Sample * | sample, | |||
float * | alpha | |||
) | const [virtual] |
Implements lux::Integrator.
Definition at line 141 of file igi.cpp.
References lux::AbsDot(), lux::Spectrum::Black(), lux::BSDF_REFLECTION, lux::BSDF_SPECULAR, lux::BSDF_TRANSMISSION, bsdfComponentOffset, bsdfSampleOffset, lux::Ray::d, lux::Intersection::dg, lux::BSDF::dgShading, lux::DistanceSquared(), lux::DifferentialGeometry::dndu, lux::DifferentialGeometry::dndv, lux::Dot(), lux::DifferentialGeometry::dpdx, lux::DifferentialGeometry::dpdy, lux::DifferentialGeometry::dudx, lux::DifferentialGeometry::dudy, lux::DifferentialGeometry::dvdx, lux::DifferentialGeometry::dvdy, lux::BSDF::eta, lux::BSDF::f(), lux::random::floatValue(), lux::Intersection::GetBSDF(), lux::RayDifferential::hasDifferentials, indirectScale, lux::Scene::Intersect(), lux::Scene::IntersectP(), lux::VirtualLight::Le, lux::Intersection::Le(), lux::Scene::Li(), lux::Scene::lights, lightSampleOffset, maxSpecularDepth, cimg_library::min(), minDist2, lux::VirtualLight::n, nLightSets, lux::DifferentialGeometry::nn, lux::Normalize(), lux::Ray::o, lux::Sample::oneD, lux::VirtualLight::p, lux::DifferentialGeometry::p, blender::p, RAY_EPSILON, rrThreshold, lux::RayDifferential::rx, lux::RayDifferential::ry, lux::BSDF::Sample_f(), SmoothStep(), specularDepth, lux::Scene::Transmittance(), lux::UniformSampleAllLights(), virtualLights, vlSetOffset, and lux::Spectrum::y().
void IGIIntegrator::Preprocess | ( | const Scene * | scene | ) | [virtual] |
Reimplemented from lux::Integrator.
Definition at line 63 of file igi.cpp.
References lux::AbsDot(), lux::Spectrum::Black(), lux::BSDF_ALL, lux::ComputeStep1dCDF(), lux::Ray::d, lux::BSDF::dgShading, lux::random::floatValue(), Floor2Int(), lux::Scene::Intersect(), lux::LDShuffleScrambled1D(), lux::LDShuffleScrambled2D(), lux::Scene::lights, M_PI, nLightPaths, nLightSets, lux::DifferentialGeometry::nn, lux::BSDF::rho(), lux::BSDF::Sample_f(), lux::Light::Sample_L(), lux::SampleStep1d(), lux::Scene::Transmittance(), virtualLights, and lux::Spectrum::y().
Reimplemented from lux::Integrator.
Definition at line 45 of file igi.cpp.
References lux::Sample::Add1D(), lux::Sample::Add2D(), bsdfComponentOffset, bsdfSampleOffset, lightNumOffset, lux::Scene::lights, lightSampleOffset, lux::Light::nSamples, lux::Sampler::RoundSize(), lux::Scene::sampler, and vlSetOffset.
int * lux::IGIIntegrator::bsdfComponentOffset [private] |
int* lux::IGIIntegrator::bsdfSampleOffset [private] |
float lux::IGIIntegrator::indirectScale [private] |
int lux::IGIIntegrator::lightNumOffset [private] |
int* lux::IGIIntegrator::lightSampleOffset [private] |
int lux::IGIIntegrator::maxSpecularDepth [private] |
float lux::IGIIntegrator::minDist2 [private] |
u_int lux::IGIIntegrator::nLightPaths [private] |
Definition at line 56 of file igi.h.
Referenced by CreateSurfaceIntegrator(), IGIIntegrator(), and Preprocess().
u_int lux::IGIIntegrator::nLightSets [private] |
Definition at line 56 of file igi.h.
Referenced by CreateSurfaceIntegrator(), IGIIntegrator(), Li(), and Preprocess().
float lux::IGIIntegrator::rrThreshold [private] |
int lux::IGIIntegrator::specularDepth [mutable, private] |
vector<VirtualLight>* lux::IGIIntegrator::virtualLights [private] |
int lux::IGIIntegrator::vlSetOffset [private] |