Rearrange some things to keep definitions in sensible places

This commit is contained in:
Matt Williams 2014-01-11 22:23:14 +00:00
parent 6294013709
commit 81ce31432c

View File

@ -160,6 +160,8 @@ namespace PolyVox
{ {
static_assert(std::is_signed<typename VolumeType::VoxelType>::value, "Voxel type must be signed"); static_assert(std::is_signed<typename VolumeType::VoxelType>::value, "Voxel type must be signed");
const float threshold = 0.0f;
//Timer timer; //Timer timer;
Timer totalTimer; Timer totalTimer;
@ -167,10 +169,6 @@ namespace PolyVox
const auto regionYDimension = region.getDimensionsInVoxels().getY(); const auto regionYDimension = region.getDimensionsInVoxels().getY();
const auto regionZDimension = region.getDimensionsInVoxels().getZ(); const auto regionZDimension = region.getDimensionsInVoxels().getZ();
const auto cellRegionXDimension = regionXDimension+2;
const auto cellRegionYDimension = regionYDimension+2;
const auto cellRegionZDimension = regionZDimension+2;
const auto gradientRegionXDimension = regionXDimension+2; const auto gradientRegionXDimension = regionXDimension+2;
const auto gradientRegionYDimension = regionYDimension+2; const auto gradientRegionYDimension = regionYDimension+2;
const auto gradientRegionZDimension = regionZDimension+2; const auto gradientRegionZDimension = regionZDimension+2;
@ -178,19 +176,10 @@ namespace PolyVox
std::vector<std::pair<const typename VolumeType::VoxelType, const Vector3DFloat>> gradients; std::vector<std::pair<const typename VolumeType::VoxelType, const Vector3DFloat>> gradients;
gradients.reserve(gradientRegionXDimension * gradientRegionYDimension * gradientRegionZDimension); gradients.reserve(gradientRegionXDimension * gradientRegionYDimension * gradientRegionZDimension);
std::vector<CellData<typename VolumeType::VoxelType>> cells;
cells.reserve(cellRegionXDimension * cellRegionYDimension * cellRegionZDimension);
typename VolumeType::Sampler volSampler{volData}; typename VolumeType::Sampler volSampler{volData};
volSampler.setPosition(region.getLowerCorner() - Vector3DInt32{1,1,1}); volSampler.setPosition(region.getLowerCorner() - Vector3DInt32{1,1,1});
volSampler.setWrapMode(WrapMode::Border, -100.0); // -100.0 is well below the threshold volSampler.setWrapMode(WrapMode::Border, -100.0); // -100.0 is well below the threshold
const float threshold = 0.0f;
SurfaceMesh<PositionMaterialNormal> mesh;
EdgeData<typename VolumeType::VoxelType>* edges[12]; //Create this now but it will be overwritten for each cell
const auto lowerCornerX = region.getLowerCorner().getX(); const auto lowerCornerX = region.getLowerCorner().getX();
const auto lowerCornerY = region.getLowerCorner().getZ(); const auto lowerCornerY = region.getLowerCorner().getZ();
const auto lowerCornerZ = region.getLowerCorner().getX(); const auto lowerCornerZ = region.getLowerCorner().getX();
@ -216,11 +205,8 @@ namespace PolyVox
const auto& voxel1nx = volSampler.peekVoxel1nx0py0pz(); const auto& voxel1nx = volSampler.peekVoxel1nx0py0pz();
const auto& voxel1ny = volSampler.peekVoxel0px1ny0pz(); const auto& voxel1ny = volSampler.peekVoxel0px1ny0pz();
const auto& voxel1nz = volSampler.peekVoxel0px0py1nz(); const auto& voxel1nz = volSampler.peekVoxel0px0py1nz();
const Vector3DFloat g(voxel1nx - voxel1px, voxel1ny - voxel1py, voxel1nz - voxel1pz);
std::pair<const typename VolumeType::VoxelType, Vector3DFloat> data(voxel, g); gradients.emplace_back(voxel, Vector3DFloat(voxel1nx - voxel1px, voxel1ny - voxel1py, voxel1nz - voxel1pz));
gradients.push_back(data);
} }
} }
} }
@ -228,6 +214,13 @@ namespace PolyVox
//logTrace() << "Gradients took " << timer.elapsedTimeInMilliSeconds(); //logTrace() << "Gradients took " << timer.elapsedTimeInMilliSeconds();
//timer.start(); //timer.start();
const auto cellRegionXDimension = regionXDimension+2;
const auto cellRegionYDimension = regionYDimension+2;
const auto cellRegionZDimension = regionZDimension+2;
std::vector<CellData<typename VolumeType::VoxelType>> cells;
cells.reserve(cellRegionXDimension * cellRegionYDimension * cellRegionZDimension);
for(int32_t cellZ = 0; cellZ < cellRegionZDimension; cellZ++) for(int32_t cellZ = 0; cellZ < cellRegionZDimension; cellZ++)
{ {
for(int32_t cellY = 0; cellY < cellRegionYDimension; cellY++) for(int32_t cellY = 0; cellY < cellRegionYDimension; cellY++)
@ -271,6 +264,10 @@ namespace PolyVox
//logTrace() << "Edges took " << timer.elapsedTimeInMilliSeconds(); //logTrace() << "Edges took " << timer.elapsedTimeInMilliSeconds();
//timer.start(); //timer.start();
EdgeData<typename VolumeType::VoxelType>* edges[12]; //Create this now but it will be overwritten for each cell
SurfaceMesh<PositionMaterialNormal> mesh;
for(int32_t cellZ = 0; cellZ < cellRegionZDimension; cellZ++) for(int32_t cellZ = 0; cellZ < cellRegionZDimension; cellZ++)
{ {
for(int32_t cellY = 0; cellY < cellRegionYDimension; cellY++) for(int32_t cellY = 0; cellY < cellRegionYDimension; cellY++)