45 #ifndef _INCLUDED_Field3D_MIPInterp_H_ 46 #define _INCLUDED_Field3D_MIPInterp_H_ 60 template <
typename MIPField_T>
80 value_type
sample(
const V3d &vsP,
const float wsSpotSize)
const;
94 InterpInfo(
const size_t l,
const size_t u,
const float t)
128 template <
typename MIPField_T>
133 const V3f wsVoxelSize = mip.mapping()->wsVoxelSize(0, 0, 0);
134 const float wsMinVoxelSize =
135 std::min(std::min(wsVoxelSize.x, wsVoxelSize.y), wsVoxelSize.z);
137 for (
size_t i = 0, end = mip.numLevels(); i < end; ++i) {
138 const float factor = std::pow(2.0f, static_cast<float>(i));
145 template <
typename MIPField_T>
148 const float wsSpotSize)
const 165 V3f mipVsP0, mipVsP1;
176 template <
typename MIPField_T>
180 const size_t numLevels =
m_mip.numLevels();
186 for (
size_t i = 1, end = numLevels; i < end; ++i) {
194 return InterpInfo(numLevels - 1, numLevels - 1, 0.0f);
203 #endif // Include guard #define FIELD3D_NAMESPACE_HEADER_CLOSE
InterpInfo(const size_t l, const size_t u, const float t)
std::vector< float > m_wsVoxelSize
Min world space voxel size for each MIP level.
LinearInterpType m_interp
Linear interpolator.
size_t upper
Coarser level.
float lerpT
Parametric position between finest and coarser.
InterpInfo interpInfo(const float wsSpotSize) const
Computes between which levels to interpolate.
value_type sample(const V3d &vsP, const float wsSpotSize) const
Performs interpolation. A MIP field interpolation requires a spot size (which may be zero...
const MIPField_T & m_mip
Const reference to MIP field.
size_t lower
Finest level.
MIPLinearInterp(const MIPField_T &mip)
Must be constructed with a MIP field to operate on.
FieldType::LinearInterp LinearInterpType
FieldType::value_type value_type
MIPField_T::NestedType FieldType
Contains the MIPField class.
#define FIELD3D_LERPFACTOR