#include <volumegrid.h>
Public Member Functions | |
VolumeGrid (const Spectrum &sa, const Spectrum &ss, float gg, const Spectrum &emit, const BBox &e, const Transform &v2w, int nx, int ny, int nz, const float *d) | |
~VolumeGrid () | |
BBox | WorldBound () const |
bool | IntersectP (const Ray &r, float *t0, float *t1) const |
float | Density (const Point &Pobj) const |
float | D (int x, int y, int z) const |
Static Public Member Functions | |
static VolumeRegion * | CreateVolumeRegion (const Transform &volume2world, const ParamSet ¶ms) |
Private Attributes | |
float * | density |
const int | nx |
const int | ny |
const int | nz |
const BBox | extent |
Definition at line 30 of file volumegrid.h.
VolumeGrid::VolumeGrid | ( | const Spectrum & | sa, | |
const Spectrum & | ss, | |||
float | gg, | |||
const Spectrum & | emit, | |||
const BBox & | e, | |||
const Transform & | v2w, | |||
int | nx, | |||
int | ny, | |||
int | nz, | |||
const float * | d | |||
) |
Definition at line 31 of file volumegrid.cpp.
References density, memcpy(), nx, ny, and nz.
Referenced by CreateVolumeRegion().
lux::VolumeGrid::~VolumeGrid | ( | ) | [inline] |
VolumeRegion * VolumeGrid::CreateVolumeRegion | ( | const Transform & | volume2world, | |
const ParamSet & | params | |||
) | [static] |
Definition at line 63 of file volumegrid.cpp.
References lux::ParamSet::FindFloat(), lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), lux::ParamSet::FindOnePoint(), lux::ParamSet::FindOneSpectrum(), lux::DensityRegion::g, LUX_CONSISTENCY, LUX_ERROR, LUX_MISSINGDATA, luxError, nx, ny, nz, lux::DensityRegion::sigma_a(), lux::DensityRegion::sigma_s(), and VolumeGrid().
Referenced by lux::MakeVolumeRegion().
float lux::VolumeGrid::D | ( | int | x, | |
int | y, | |||
int | z | |||
) | const [inline] |
Definition at line 43 of file volumegrid.h.
References Clamp(), and density.
Referenced by Density().
float VolumeGrid::Density | ( | const Point & | Pobj | ) | const [virtual] |
Implements lux::DensityRegion.
Definition at line 41 of file volumegrid.cpp.
References D(), extent, Floor2Int(), lux::BBox::Inside(), Lerp(), nx, ny, nz, lux::BBox::pMax, lux::BBox::pMin, lux::Point::x, lux::Point::y, and lux::Point::z.
bool lux::VolumeGrid::IntersectP | ( | const Ray & | r, | |
float * | t0, | |||
float * | t1 | |||
) | const [inline, virtual] |
Implements lux::VolumeRegion.
Definition at line 38 of file volumegrid.h.
References extent, lux::BBox::IntersectP(), and lux::DensityRegion::WorldToVolume.
BBox lux::VolumeGrid::WorldBound | ( | ) | const [inline, virtual] |
Implements lux::VolumeRegion.
Definition at line 37 of file volumegrid.h.
References extent, lux::Transform::GetInverse(), and lux::DensityRegion::WorldToVolume.
float* lux::VolumeGrid::density [private] |
const BBox lux::VolumeGrid::extent [private] |
Definition at line 55 of file volumegrid.h.
Referenced by Density(), IntersectP(), and WorldBound().
const int lux::VolumeGrid::nx [private] |
Definition at line 54 of file volumegrid.h.
Referenced by CreateVolumeRegion(), Density(), and VolumeGrid().
const int lux::VolumeGrid::ny [private] |
Definition at line 54 of file volumegrid.h.
Referenced by CreateVolumeRegion(), Density(), and VolumeGrid().
const int lux::VolumeGrid::nz [private] |
Definition at line 54 of file volumegrid.h.
Referenced by CreateVolumeRegion(), Density(), and VolumeGrid().