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
|
||||
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();
|
||||
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();
|
||||
|
||||
QApplication app(argc, argv);
|
||||
|
@ -30,22 +30,22 @@ freely, subject to the following restrictions:
|
||||
|
||||
namespace PolyVox
|
||||
{
|
||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
||||
template< typename SrcVolumeType, typename DestVolumeType>
|
||||
class LowPassFilter
|
||||
{
|
||||
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 executeSAT();
|
||||
|
||||
private:
|
||||
//Source data
|
||||
SrcVolumeType<VoxelType>* m_pVolSrc;
|
||||
SrcVolumeType* m_pVolSrc;
|
||||
Region m_regSrc;
|
||||
|
||||
//Destination data
|
||||
DestVolumeType<VoxelType>* m_pVolDst;
|
||||
DestVolumeType* m_pVolDst;
|
||||
Region m_regDst;
|
||||
|
||||
//Kernel size
|
||||
|
@ -23,8 +23,8 @@ freely, subject to the following restrictions:
|
||||
|
||||
namespace PolyVox
|
||||
{
|
||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
||||
LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::LowPassFilter(SrcVolumeType<VoxelType>* pVolSrc, Region regSrc, DestVolumeType<VoxelType>* pVolDst, Region regDst, uint32_t uKernelSize)
|
||||
template< typename SrcVolumeType, typename DestVolumeType>
|
||||
LowPassFilter<SrcVolumeType, DestVolumeType>::LowPassFilter(SrcVolumeType* pVolSrc, Region regSrc, DestVolumeType* pVolDst, Region regDst, uint32_t uKernelSize)
|
||||
:m_pVolSrc(pVolSrc)
|
||||
,m_regSrc(regSrc)
|
||||
,m_pVolDst(pVolDst)
|
||||
@ -43,8 +43,8 @@ namespace PolyVox
|
||||
}
|
||||
}
|
||||
|
||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
||||
void LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::execute()
|
||||
template< typename SrcVolumeType, typename DestVolumeType>
|
||||
void LowPassFilter<SrcVolumeType, DestVolumeType>::execute()
|
||||
{
|
||||
int32_t iSrcMinX = m_regSrc.getLowerCorner().getX();
|
||||
int32_t iSrcMinY = m_regSrc.getLowerCorner().getY();
|
||||
@ -62,7 +62,7 @@ namespace PolyVox
|
||||
//int32_t iDstMaxY = m_regDst.getUpperCorner().getY();
|
||||
//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++)
|
||||
{
|
||||
@ -73,7 +73,7 @@ namespace PolyVox
|
||||
//VoxelType tSrcVoxel = m_pVolSrc->getVoxelAt(iSrcX, iSrcY, iSrcZ);
|
||||
srcSampler.setPosition(iSrcX, iSrcY, iSrcZ);
|
||||
|
||||
VoxelType tSrcVoxel = srcSampler.getVoxel();
|
||||
SrcVolumeType::VoxelType tSrcVoxel = srcSampler.getVoxel();
|
||||
|
||||
uint32_t uDensity = 0;
|
||||
uDensity += convertToDensity(srcSampler.peekVoxel1nx1ny1nz());
|
||||
@ -115,8 +115,8 @@ namespace PolyVox
|
||||
}
|
||||
}
|
||||
|
||||
template< template<typename> class SrcVolumeType, template<typename> class DestVolumeType, typename VoxelType>
|
||||
void LowPassFilter<SrcVolumeType, DestVolumeType, VoxelType>::executeSAT()
|
||||
template< typename SrcVolumeType, typename DestVolumeType>
|
||||
void LowPassFilter<SrcVolumeType, DestVolumeType>::executeSAT()
|
||||
{
|
||||
const uint32_t border = (m_uKernelSize - 1) / 2;
|
||||
|
||||
@ -148,9 +148,9 @@ namespace PolyVox
|
||||
satIterCont.m_Iter = &satVolumeIter;
|
||||
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_Iter = &srcVolumeIter;
|
||||
srcIterCont.reset();
|
||||
@ -246,9 +246,10 @@ namespace PolyVox
|
||||
|
||||
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);
|
||||
|
||||
|
@ -58,7 +58,7 @@ void TestLowPassFilter::testExecute()
|
||||
|
||||
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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user