Removed template template parameters from LowPassFilter.
This commit is contained in:
parent
09c1cb80cc
commit
fbdfe3a4ec
@ -103,9 +103,9 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
//Smooth part of the volume
|
//Smooth part of the volume
|
||||||
RawVolume<MaterialDensityPair44> tempVolume(PolyVox::Region(0,0,0,128, 128, 128));
|
RawVolume<MaterialDensityPair44> tempVolume(PolyVox::Region(0,0,0,128, 128, 128));
|
||||||
LowPassFilter<LargeVolume, RawVolume, MaterialDensityPair44> pass1(&volData, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), &tempVolume, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), 3);
|
LowPassFilter< LargeVolume<MaterialDensityPair44>, RawVolume<MaterialDensityPair44> > pass1(&volData, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), &tempVolume, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), 3);
|
||||||
pass1.executeSAT();
|
pass1.executeSAT();
|
||||||
LowPassFilter<RawVolume, LargeVolume, MaterialDensityPair44> pass2(&tempVolume, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), &volData, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), 3);
|
LowPassFilter< RawVolume<MaterialDensityPair44>, LargeVolume<MaterialDensityPair44> > pass2(&tempVolume, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), &volData, PolyVox::Region(Vector3DInt32(62, 62, 62), Vector3DInt32(126, 126, 126)), 3);
|
||||||
pass2.executeSAT();
|
pass2.executeSAT();
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
@ -30,22 +30,22 @@ freely, subject to the following restrictions:
|
|||||||
|
|
||||||
namespace PolyVox
|
namespace PolyVox
|
||||||
{
|
{
|
||||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
template< typename SrcVolumeType, typename DestVolumeType>
|
||||||
class LowPassFilter
|
class LowPassFilter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LowPassFilter(SrcVolumeType<VoxelType>* pVolSrc, Region regSrc, DestVolumeType<VoxelType>* pVolDst, Region regDst, uint32_t uKernelSize);
|
LowPassFilter(SrcVolumeType* pVolSrc, Region regSrc, DestVolumeType* pVolDst, Region regDst, uint32_t uKernelSize);
|
||||||
|
|
||||||
void execute();
|
void execute();
|
||||||
void executeSAT();
|
void executeSAT();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//Source data
|
//Source data
|
||||||
SrcVolumeType<VoxelType>* m_pVolSrc;
|
SrcVolumeType* m_pVolSrc;
|
||||||
Region m_regSrc;
|
Region m_regSrc;
|
||||||
|
|
||||||
//Destination data
|
//Destination data
|
||||||
DestVolumeType<VoxelType>* m_pVolDst;
|
DestVolumeType* m_pVolDst;
|
||||||
Region m_regDst;
|
Region m_regDst;
|
||||||
|
|
||||||
//Kernel size
|
//Kernel size
|
||||||
|
@ -23,8 +23,8 @@ freely, subject to the following restrictions:
|
|||||||
|
|
||||||
namespace PolyVox
|
namespace PolyVox
|
||||||
{
|
{
|
||||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
template< typename SrcVolumeType, typename DestVolumeType>
|
||||||
LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::LowPassFilter(SrcVolumeType<VoxelType>* pVolSrc, Region regSrc, DestVolumeType<VoxelType>* pVolDst, Region regDst, uint32_t uKernelSize)
|
LowPassFilter<SrcVolumeType, DestVolumeType>::LowPassFilter(SrcVolumeType* pVolSrc, Region regSrc, DestVolumeType* pVolDst, Region regDst, uint32_t uKernelSize)
|
||||||
:m_pVolSrc(pVolSrc)
|
:m_pVolSrc(pVolSrc)
|
||||||
,m_regSrc(regSrc)
|
,m_regSrc(regSrc)
|
||||||
,m_pVolDst(pVolDst)
|
,m_pVolDst(pVolDst)
|
||||||
@ -43,8 +43,8 @@ namespace PolyVox
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
template< typename SrcVolumeType, typename DestVolumeType>
|
||||||
void LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::execute()
|
void LowPassFilter<SrcVolumeType, DestVolumeType>::execute()
|
||||||
{
|
{
|
||||||
int32_t iSrcMinX = m_regSrc.getLowerCorner().getX();
|
int32_t iSrcMinX = m_regSrc.getLowerCorner().getX();
|
||||||
int32_t iSrcMinY = m_regSrc.getLowerCorner().getY();
|
int32_t iSrcMinY = m_regSrc.getLowerCorner().getY();
|
||||||
@ -62,7 +62,7 @@ namespace PolyVox
|
|||||||
//int32_t iDstMaxY = m_regDst.getUpperCorner().getY();
|
//int32_t iDstMaxY = m_regDst.getUpperCorner().getY();
|
||||||
//int32_t iDstMaxZ = m_regDst.getUpperCorner().getZ();
|
//int32_t iDstMaxZ = m_regDst.getUpperCorner().getZ();
|
||||||
|
|
||||||
typename SrcVolumeType<VoxelType>::Sampler srcSampler(m_pVolSrc);
|
typename SrcVolumeType::Sampler srcSampler(m_pVolSrc);
|
||||||
|
|
||||||
for(int32_t iSrcZ = iSrcMinZ, iDstZ = iDstMinZ; iSrcZ <= iSrcMaxZ; iSrcZ++, iDstZ++)
|
for(int32_t iSrcZ = iSrcMinZ, iDstZ = iDstMinZ; iSrcZ <= iSrcMaxZ; iSrcZ++, iDstZ++)
|
||||||
{
|
{
|
||||||
@ -73,7 +73,7 @@ namespace PolyVox
|
|||||||
//VoxelType tSrcVoxel = m_pVolSrc->getVoxelAt(iSrcX, iSrcY, iSrcZ);
|
//VoxelType tSrcVoxel = m_pVolSrc->getVoxelAt(iSrcX, iSrcY, iSrcZ);
|
||||||
srcSampler.setPosition(iSrcX, iSrcY, iSrcZ);
|
srcSampler.setPosition(iSrcX, iSrcY, iSrcZ);
|
||||||
|
|
||||||
VoxelType tSrcVoxel = srcSampler.getVoxel();
|
SrcVolumeType::VoxelType tSrcVoxel = srcSampler.getVoxel();
|
||||||
|
|
||||||
uint32_t uDensity = 0;
|
uint32_t uDensity = 0;
|
||||||
uDensity += convertToDensity(srcSampler.peekVoxel1nx1ny1nz());
|
uDensity += convertToDensity(srcSampler.peekVoxel1nx1ny1nz());
|
||||||
@ -115,8 +115,8 @@ namespace PolyVox
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
template< typename SrcVolumeType, typename DestVolumeType>
|
||||||
void LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::executeSAT()
|
void LowPassFilter<SrcVolumeType, DestVolumeType>::executeSAT()
|
||||||
{
|
{
|
||||||
const uint32_t border = (m_uKernelSize - 1) / 2;
|
const uint32_t border = (m_uKernelSize - 1) / 2;
|
||||||
|
|
||||||
@ -148,9 +148,9 @@ namespace PolyVox
|
|||||||
satIterCont.m_Iter = &satVolumeIter;
|
satIterCont.m_Iter = &satVolumeIter;
|
||||||
satIterCont.reset();
|
satIterCont.reset();
|
||||||
|
|
||||||
typename SrcVolumeType<VoxelType>::Sampler srcVolumeIter(m_pVolSrc);
|
typename SrcVolumeType::Sampler srcVolumeIter(m_pVolSrc);
|
||||||
|
|
||||||
IteratorController<typename SrcVolumeType<VoxelType>::Sampler> srcIterCont;
|
IteratorController<typename SrcVolumeType::Sampler> srcIterCont;
|
||||||
srcIterCont.m_regValid = Region(satLowerCorner, satUpperCorner);
|
srcIterCont.m_regValid = Region(satLowerCorner, satUpperCorner);
|
||||||
srcIterCont.m_Iter = &srcVolumeIter;
|
srcIterCont.m_Iter = &srcVolumeIter;
|
||||||
srcIterCont.reset();
|
srcIterCont.reset();
|
||||||
@ -246,9 +246,10 @@ namespace PolyVox
|
|||||||
|
|
||||||
float average = sum / (static_cast<float>(sideLength*sideLength*sideLength));
|
float average = sum / (static_cast<float>(sideLength*sideLength*sideLength));
|
||||||
|
|
||||||
VoxelType voxel = m_pVolSrc->getVoxelAt(iDstX, iDstY, iDstZ);
|
//Note: These lines need consideration if src and dest have different voxel types.
|
||||||
|
SrcVolumeType::VoxelType voxel = m_pVolSrc->getVoxelAt(iDstX, iDstY, iDstZ);
|
||||||
|
|
||||||
voxel.setDensity(static_cast<typename VoxelType::DensityType>(average));
|
voxel.setDensity(static_cast<typename SrcVolumeType::VoxelType::DensityType>(average));
|
||||||
|
|
||||||
m_pVolDst->setVoxelAt(iDstX, iDstY, iDstZ, voxel);
|
m_pVolDst->setVoxelAt(iDstX, iDstY, iDstZ, voxel);
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ void TestLowPassFilter::testExecute()
|
|||||||
|
|
||||||
RawVolume<Density8> resultVolume(reg);
|
RawVolume<Density8> resultVolume(reg);
|
||||||
|
|
||||||
LowPassFilter<RawVolume, RawVolume, Density8> pass1(&volData, reg, &resultVolume, reg, 5);
|
LowPassFilter< RawVolume<Density8>, RawVolume<Density8> > pass1(&volData, reg, &resultVolume, reg, 5);
|
||||||
|
|
||||||
pass1.execute();
|
pass1.execute();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user