From a82dc7f1ca0208d089f3ee3e03051b03da7e71ce Mon Sep 17 00:00:00 2001 From: David Williams Date: Fri, 13 Jan 2012 22:23:50 +0000 Subject: [PATCH] Added optimization to doRaycast(). --- .../PolyVoxCore/include/PolyVoxCore/Raycast.inl | 14 +++++++------- .../include/PolyVoxCore/RaycastWithCallback.inl | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/library/PolyVoxCore/include/PolyVoxCore/Raycast.inl b/library/PolyVoxCore/include/PolyVoxCore/Raycast.inl index 30285305..38e84e46 100644 --- a/library/PolyVoxCore/include/PolyVoxCore/Raycast.inl +++ b/library/PolyVoxCore/include/PolyVoxCore/Raycast.inl @@ -122,17 +122,17 @@ namespace PolyVox int dj = ((y1 < y2) ? 1 : ((y1 > y2) ? -1 : 0)); int dk = ((z1 < z2) ? 1 : ((z1 > z2) ? -1 : 0)); - float minx = floorf(x1), maxx = minx + 1.0f; - float tx = ((x1 > x2) ? (x1 - minx) : (maxx - x1)) / std::abs(x2 - x1); - float miny = floorf(y1), maxy = miny + 1.0f; - float ty = ((y1 > y2) ? (y1 - miny) : (maxy - y1)) / std::abs(y2 - y1); - float minz = floorf(z1), maxz = minz + 1.0f; - float tz = ((z1 > z2) ? (z1 - minz) : (maxz - z1)) / std::abs(z2 - z1); - float deltatx = 1.0f / std::abs(x2 - x1); float deltaty = 1.0f / std::abs(y2 - y1); float deltatz = 1.0f / std::abs(z2 - z1); + float minx = floorf(x1), maxx = minx + 1.0f; + float tx = ((x1 > x2) ? (x1 - minx) : (maxx - x1)) * deltatx; + float miny = floorf(y1), maxy = miny + 1.0f; + float ty = ((y1 > y2) ? (y1 - miny) : (maxy - y1)) * deltaty; + float minz = floorf(z1), maxz = minz + 1.0f; + float tz = ((z1 > z2) ? (z1 - minz) : (maxz - z1)) * deltatz; + m_sampVolume.setPosition(i,j,k); m_result.previousVoxel = Vector3DInt32(i,j,k); diff --git a/library/PolyVoxCore/include/PolyVoxCore/RaycastWithCallback.inl b/library/PolyVoxCore/include/PolyVoxCore/RaycastWithCallback.inl index 1527a710..2cd269e3 100644 --- a/library/PolyVoxCore/include/PolyVoxCore/RaycastWithCallback.inl +++ b/library/PolyVoxCore/include/PolyVoxCore/RaycastWithCallback.inl @@ -107,17 +107,17 @@ namespace PolyVox int dj = ((y1 < y2) ? 1 : ((y1 > y2) ? -1 : 0)); int dk = ((z1 < z2) ? 1 : ((z1 > z2) ? -1 : 0)); - float minx = floorf(x1), maxx = minx + 1.0f; - float tx = ((x1 > x2) ? (x1 - minx) : (maxx - x1)) / std::abs(x2 - x1); - float miny = floorf(y1), maxy = miny + 1.0f; - float ty = ((y1 > y2) ? (y1 - miny) : (maxy - y1)) / std::abs(y2 - y1); - float minz = floorf(z1), maxz = minz + 1.0f; - float tz = ((z1 > z2) ? (z1 - minz) : (maxz - z1)) / std::abs(z2 - z1); - float deltatx = 1.0f / std::abs(x2 - x1); float deltaty = 1.0f / std::abs(y2 - y1); float deltatz = 1.0f / std::abs(z2 - z1); + float minx = floorf(x1), maxx = minx + 1.0f; + float tx = ((x1 > x2) ? (x1 - minx) : (maxx - x1)) * deltatx; + float miny = floorf(y1), maxy = miny + 1.0f; + float ty = ((y1 > y2) ? (y1 - miny) : (maxy - y1)) * deltaty; + float minz = floorf(z1), maxz = minz + 1.0f; + float tz = ((z1 > z2) ? (z1 - minz) : (maxz - z1)) * deltatz; + m_sampVolume.setPosition(i,j,k); for(;;)