Work making decimated approach handle multiple resolutions.
This commit is contained in:
		| @@ -44,7 +44,7 @@ namespace PolyVox | ||||
| 		bool operator>=(const BlockVolumeIterator& rhs); | ||||
|  | ||||
| 		float getAveragedVoxel(boost::uint16_t size) const; | ||||
| 		VoxelType getMaxedVoxel(void) const; | ||||
| 		VoxelType getMaxedVoxel(boost::uint8_t level) const; | ||||
| 		boost::uint16_t getPosX(void) const; | ||||
| 		boost::uint16_t getPosY(void) const; | ||||
| 		boost::uint16_t getPosZ(void) const; | ||||
|   | ||||
| @@ -137,18 +137,26 @@ namespace PolyVox | ||||
| 	} | ||||
|  | ||||
| 	template <typename VoxelType> | ||||
| 	VoxelType BlockVolumeIterator<VoxelType>::getMaxedVoxel(void) const | ||||
| 	VoxelType BlockVolumeIterator<VoxelType>::getMaxedVoxel(boost::uint8_t level) const | ||||
| 	{		 | ||||
| 		VoxelType tValue = getVoxel(); | ||||
| 		tValue = (std::max)(tValue, peekVoxel1px0py0pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel0px1py0pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel1px1py0pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel0px0py1pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel1px0py1pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel0px1py1pz()); | ||||
| 		tValue = (std::max)(tValue, peekVoxel1px1py1pz()); | ||||
| 		return tValue; | ||||
|  | ||||
| 		if(level == 0) | ||||
| 		{ | ||||
| 			return getVoxel(); | ||||
| 		} | ||||
| 		else if(level == 1) | ||||
| 		{ | ||||
| 			VoxelType tValue = getVoxel(); | ||||
| 			tValue = (std::max)(tValue, peekVoxel1px0py0pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel0px1py0pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel1px1py0pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel0px0py1pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel1px0py1pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel0px1py1pz()); | ||||
| 			tValue = (std::max)(tValue, peekVoxel1px1py1pz()); | ||||
| 			return tValue; | ||||
| 		} | ||||
| 		assert(false); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	template <typename VoxelType> | ||||
|   | ||||
| @@ -36,9 +36,9 @@ namespace PolyVox | ||||
| { | ||||
| 	boost::uint32_t getDecimatedIndex(boost::uint32_t x, boost::uint32_t y); | ||||
|  | ||||
| 	POLYVOX_API void generateDecimatedMeshDataForRegion(BlockVolume<boost::uint8_t>* volumeData, Region region, IndexedSurfacePatch* singleMaterialPatch); | ||||
| 	POLYVOX_API boost::uint32_t computeInitialDecimatedBitmaskForSlice(BlockVolumeIterator<boost::uint8_t>& volIter, const Region& regSlice, const Vector3DFloat& offset, boost::uint8_t *bitmask); | ||||
| 	POLYVOX_API boost::uint32_t computeDecimatedBitmaskForSliceFromPrevious(BlockVolumeIterator<boost::uint8_t>& volIter, const Region& regSlice, const Vector3DFloat& offset, boost::uint8_t *bitmask, boost::uint8_t *previousBitmask); | ||||
| 	POLYVOX_API void generateDecimatedMeshDataForRegion(BlockVolume<boost::uint8_t>* volumeData, boost::uint8_t uLevel, Region region, IndexedSurfacePatch* singleMaterialPatch); | ||||
| 	POLYVOX_API boost::uint32_t computeInitialDecimatedBitmaskForSlice(BlockVolumeIterator<boost::uint8_t>& volIter, boost::uint8_t uLevel, const Region& regSlice, const Vector3DFloat& offset, boost::uint8_t *bitmask); | ||||
| 	POLYVOX_API boost::uint32_t computeDecimatedBitmaskForSliceFromPrevious(BlockVolumeIterator<boost::uint8_t>& volIter, boost::uint8_t uLevel, const Region& regSlice, const Vector3DFloat& offset, boost::uint8_t *bitmask, boost::uint8_t *previousBitmask); | ||||
| 	POLYVOX_API void generateDecimatedIndicesForSlice(BlockVolumeIterator<boost::uint8_t>& volIter, const Region& regSlice, IndexedSurfacePatch* singleMaterialPatch, const Vector3DFloat& offset, boost::uint8_t* bitmask0, boost::uint8_t* bitmask1, boost::int32_t vertexIndicesX0[],boost::int32_t vertexIndicesY0[],boost::int32_t vertexIndicesZ0[], boost::int32_t vertexIndicesX1[],boost::int32_t vertexIndicesY1[],boost::int32_t vertexIndicesZ1[]); | ||||
| 	POLYVOX_API void generateDecimatedVerticesForSlice(BlockVolumeIterator<boost::uint8_t>& volIter, Region& regSlice, const Vector3DFloat& offset, boost::uint8_t* bitmask, IndexedSurfacePatch* singleMaterialPatch,boost::int32_t vertexIndicesX[],boost::int32_t vertexIndicesY[],boost::int32_t vertexIndicesZ[]); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user