#include <dipolesubsurface.h>
Public Member Functions | |
DipoleSubsurfaceIntegrator (int mdepth, float merror, float mindist, const string &fn) | |
~DipoleSubsurfaceIntegrator () | |
Spectrum | Li (const Scene *scene, const Renderer *renderer, const RayDifferential &ray, const Intersection &isect, const Sample *sample, RNG &rng, MemoryArena &arena) const |
void | RequestSamples (Sampler *sampler, Sample *sample, const Scene *scene) |
void | Preprocess (const Scene *, const Camera *, const Renderer *) |
Private Attributes | |
int | maxSpecularDepth |
float | maxError |
float | minSampleDist |
string | filename |
vector< IrradiancePoint > | irradiancePoints |
BBox | octreeBounds |
SubsurfaceOctreeNode * | octree |
MemoryArena | octreeArena |
LightSampleOffsets * | lightSampleOffsets |
BSDFSampleOffsets * | bsdfSampleOffsets |
Definition at line 53 of file dipolesubsurface.h.
DipoleSubsurfaceIntegrator::DipoleSubsurfaceIntegrator | ( | int | mdepth, | |
float | merror, | |||
float | mindist, | |||
const string & | fn | |||
) | [inline] |
Definition at line 56 of file dipolesubsurface.h.
References filename, maxError, maxSpecularDepth, minSampleDist, and octree.
DipoleSubsurfaceIntegrator::~DipoleSubsurfaceIntegrator | ( | ) |
Definition at line 167 of file dipolesubsurface.cpp.
References bsdfSampleOffsets, and lightSampleOffsets.
Spectrum DipoleSubsurfaceIntegrator::Li | ( | const Scene * | scene, | |
const Renderer * | renderer, | |||
const RayDifferential & | ray, | |||
const Intersection & | isect, | |||
const Sample * | sample, | |||
RNG & | rng, | |||
MemoryArena & | arena | |||
) | const [virtual] |
Implements SurfaceIntegrator.
Definition at line 265 of file dipolesubsurface.cpp.
References AbsDot(), bsdfSampleOffsets, Ray::d, Ray::depth, BSDF::dgShading, BSSRDF::eta(), Fdr(), Intersection::GetBSDF(), Intersection::GetBSSRDF(), INV_PI, CoefficientSpectrum< nSamples >::IsBlack(), Intersection::Le(), lightSampleOffsets, maxError, maxSpecularDepth, SubsurfaceOctreeNode::Mo(), DifferentialGeometry::nn, octree, octreeBounds, DifferentialGeometry::p, Intersection::rayEpsilon, BSSRDF::sigma_a(), BSSRDF::sigma_prime_s(), SpecularReflect(), SpecularTransmit(), Ray::time, and UniformSampleAllLights().
Referenced by Preprocess().
void DipoleSubsurfaceIntegrator::Preprocess | ( | const Scene * | scene, | |
const Camera * | camera, | |||
const Renderer * | renderer | |||
) | [virtual] |
Reimplemented from Integrator.
Definition at line 189 of file dipolesubsurface.cpp.
References AbsDot(), MemoryArena::Alloc(), arena, Camera::CameraToWorld, Dot(), Error(), filename, FindPoissonPointDistribution(), MemoryArena::FreeAll(), SubsurfaceOctreeNode::InitHierarchy(), SubsurfaceOctreeNode::Insert(), irradiancePoints, CoefficientSpectrum< nSamples >::IsBlack(), Li(), Scene::lights, minSampleDist, SurfacePoint::n, Light::nSamples, octree, octreeArena, octreeBounds, SurfacePoint::p, RNG::RandomUInt(), SurfacePoint::rayEpsilon, ReadFloatFile(), rng, RoundUpPow2(), Sample02(), Light::Sample_L(), Camera::shutterOpen, VisibilityTester::Transmittance(), Union(), VisibilityTester::Unoccluded(), and VanDerCorput().
void DipoleSubsurfaceIntegrator::RequestSamples | ( | Sampler * | sampler, | |
Sample * | sample, | |||
const Scene * | scene | |||
) | [virtual] |
Reimplemented from Integrator.
Definition at line 173 of file dipolesubsurface.cpp.
References bsdfSampleOffsets, Scene::lights, lightSampleOffsets, Light::nSamples, and Sampler::RoundSize().
Definition at line 82 of file dipolesubsurface.h.
Referenced by Li(), RequestSamples(), and ~DipoleSubsurfaceIntegrator().
string DipoleSubsurfaceIntegrator::filename [private] |
Definition at line 74 of file dipolesubsurface.h.
Referenced by DipoleSubsurfaceIntegrator(), and Preprocess().
vector<IrradiancePoint> DipoleSubsurfaceIntegrator::irradiancePoints [private] |
Definition at line 75 of file dipolesubsurface.h.
Referenced by Preprocess().
Definition at line 81 of file dipolesubsurface.h.
Referenced by Li(), RequestSamples(), and ~DipoleSubsurfaceIntegrator().
float DipoleSubsurfaceIntegrator::maxError [private] |
Definition at line 73 of file dipolesubsurface.h.
Referenced by DipoleSubsurfaceIntegrator(), and Li().
int DipoleSubsurfaceIntegrator::maxSpecularDepth [private] |
Definition at line 72 of file dipolesubsurface.h.
Referenced by DipoleSubsurfaceIntegrator(), and Li().
float DipoleSubsurfaceIntegrator::minSampleDist [private] |
Definition at line 73 of file dipolesubsurface.h.
Referenced by DipoleSubsurfaceIntegrator(), and Preprocess().
Definition at line 77 of file dipolesubsurface.h.
Referenced by DipoleSubsurfaceIntegrator(), Li(), and Preprocess().
Definition at line 78 of file dipolesubsurface.h.
Referenced by Preprocess().
BBox DipoleSubsurfaceIntegrator::octreeBounds [private] |
Definition at line 76 of file dipolesubsurface.h.
Referenced by Li(), and Preprocess().