Reduced array accesses.
This commit is contained in:
parent
92db006250
commit
f32bb1d1ed
@ -129,13 +129,14 @@ namespace PolyVox
|
|||||||
pPreviousSliceBitmask(uXRegSpace, uYRegSpace) = iCubeIndex;
|
pPreviousSliceBitmask(uXRegSpace, uYRegSpace) = iCubeIndex;
|
||||||
|
|
||||||
/* Cube is entirely in/out of the surface */
|
/* Cube is entirely in/out of the surface */
|
||||||
if (edgeTable[iCubeIndex] != 0)
|
uint16_t uEdge = edgeTable[iCubeIndex];
|
||||||
|
if (uEdge != 0)
|
||||||
{
|
{
|
||||||
auto v111Density = controller.convertToDensity(v111);
|
auto v111Density = controller.convertToDensity(v111);
|
||||||
const Vector3DFloat n000 = computeCentralDifferenceGradient(sampler, controller);
|
const Vector3DFloat n000 = computeCentralDifferenceGradient(sampler, controller);
|
||||||
|
|
||||||
/* Find the vertices where the surface intersects the cube */
|
/* Find the vertices where the surface intersects the cube */
|
||||||
if ((edgeTable[iCubeIndex] & 64) && (uXRegSpace > 0))
|
if ((uEdge & 64) && (uXRegSpace > 0))
|
||||||
{
|
{
|
||||||
sampler.moveNegativeX();
|
sampler.moveNegativeX();
|
||||||
typename VolumeType::VoxelType v011 = sampler.getVoxel();
|
typename VolumeType::VoxelType v011 = sampler.getVoxel();
|
||||||
@ -170,7 +171,7 @@ namespace PolyVox
|
|||||||
|
|
||||||
sampler.movePositiveX();
|
sampler.movePositiveX();
|
||||||
}
|
}
|
||||||
if ((edgeTable[iCubeIndex] & 32) && (uYRegSpace > 0))
|
if ((uEdge & 32) && (uYRegSpace > 0))
|
||||||
{
|
{
|
||||||
sampler.moveNegativeY();
|
sampler.moveNegativeY();
|
||||||
typename VolumeType::VoxelType v101 = sampler.getVoxel();
|
typename VolumeType::VoxelType v101 = sampler.getVoxel();
|
||||||
@ -205,7 +206,7 @@ namespace PolyVox
|
|||||||
|
|
||||||
sampler.movePositiveY();
|
sampler.movePositiveY();
|
||||||
}
|
}
|
||||||
if ((edgeTable[iCubeIndex] & 1024) && (uZRegSpace > 0))
|
if ((uEdge & 1024) && (uZRegSpace > 0))
|
||||||
{
|
{
|
||||||
sampler.moveNegativeZ();
|
sampler.moveNegativeZ();
|
||||||
typename VolumeType::VoxelType v110 = sampler.getVoxel();
|
typename VolumeType::VoxelType v110 = sampler.getVoxel();
|
||||||
@ -249,51 +250,51 @@ namespace PolyVox
|
|||||||
int32_t indlist[12];
|
int32_t indlist[12];
|
||||||
|
|
||||||
/* Find the vertices where the surface intersects the cube */
|
/* Find the vertices where the surface intersects the cube */
|
||||||
if (edgeTable[iCubeIndex] & 1)
|
if (uEdge & 1)
|
||||||
{
|
{
|
||||||
indlist[0] = pPreviousIndices(uXRegSpace, uYRegSpace - 1).getX();
|
indlist[0] = pPreviousIndices(uXRegSpace, uYRegSpace - 1).getX();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 2)
|
if (uEdge & 2)
|
||||||
{
|
{
|
||||||
indlist[1] = pPreviousIndices(uXRegSpace, uYRegSpace).getY();
|
indlist[1] = pPreviousIndices(uXRegSpace, uYRegSpace).getY();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 4)
|
if (uEdge & 4)
|
||||||
{
|
{
|
||||||
indlist[2] = pPreviousIndices(uXRegSpace, uYRegSpace).getX();
|
indlist[2] = pPreviousIndices(uXRegSpace, uYRegSpace).getX();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 8)
|
if (uEdge & 8)
|
||||||
{
|
{
|
||||||
indlist[3] = pPreviousIndices(uXRegSpace - 1, uYRegSpace).getY();
|
indlist[3] = pPreviousIndices(uXRegSpace - 1, uYRegSpace).getY();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 16)
|
if (uEdge & 16)
|
||||||
{
|
{
|
||||||
indlist[4] = pIndices(uXRegSpace, uYRegSpace - 1).getX();
|
indlist[4] = pIndices(uXRegSpace, uYRegSpace - 1).getX();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 32)
|
if (uEdge & 32)
|
||||||
{
|
{
|
||||||
indlist[5] = pIndices(uXRegSpace, uYRegSpace).getY();
|
indlist[5] = pIndices(uXRegSpace, uYRegSpace).getY();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 64)
|
if (uEdge & 64)
|
||||||
{
|
{
|
||||||
indlist[6] = pIndices(uXRegSpace, uYRegSpace).getX();
|
indlist[6] = pIndices(uXRegSpace, uYRegSpace).getX();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 128)
|
if (uEdge & 128)
|
||||||
{
|
{
|
||||||
indlist[7] = pIndices(uXRegSpace - 1, uYRegSpace).getY();
|
indlist[7] = pIndices(uXRegSpace - 1, uYRegSpace).getY();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 256)
|
if (uEdge & 256)
|
||||||
{
|
{
|
||||||
indlist[8] = pIndices(uXRegSpace - 1, uYRegSpace - 1).getZ();
|
indlist[8] = pIndices(uXRegSpace - 1, uYRegSpace - 1).getZ();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 512)
|
if (uEdge & 512)
|
||||||
{
|
{
|
||||||
indlist[9] = pIndices(uXRegSpace, uYRegSpace - 1).getZ();
|
indlist[9] = pIndices(uXRegSpace, uYRegSpace - 1).getZ();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 1024)
|
if (uEdge & 1024)
|
||||||
{
|
{
|
||||||
indlist[10] = pIndices(uXRegSpace, uYRegSpace).getZ();
|
indlist[10] = pIndices(uXRegSpace, uYRegSpace).getZ();
|
||||||
}
|
}
|
||||||
if (edgeTable[iCubeIndex] & 2048)
|
if (uEdge & 2048)
|
||||||
{
|
{
|
||||||
indlist[11] = pIndices(uXRegSpace - 1, uYRegSpace).getZ();
|
indlist[11] = pIndices(uXRegSpace - 1, uYRegSpace).getZ();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user