Text archives Help
- From: boulos@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [Manta] r1999 - trunk/Model/Groups
- Date: Wed, 23 Jan 2008 18:40:11 -0700 (MST)
Author: boulos
Date: Wed Jan 23 18:40:10 2008
New Revision: 1999
Modified:
trunk/Model/Groups/DynBVH.cc
Log:
Model/Groups/DynBVH.cc
Trying to track down reports of shadowing bugs with the BVH. The
rayIsMasked feature seems like a good candidate.
Modified: trunk/Model/Groups/DynBVH.cc
==============================================================================
--- trunk/Model/Groups/DynBVH.cc (original)
+++ trunk/Model/Groups/DynBVH.cc Wed Jan 23 18:40:10 2008
@@ -18,6 +18,8 @@
const float BVH_C_isec = 10.f;
const float BVH_C_trav = 10.f;
+#define TEST_MASKS 0
+
void DynBVH::intersect(const RenderContext& context, RayPacket& rays) const
{
bool debugFlag = rays.getFlag(RayPacket::DebugPacket);
@@ -47,7 +49,9 @@
// TODO(boulos): provide an SSE version
for (int ray = rays.begin(); ray < rays.end(); ray++ ) {
+#if TEST_MASKS
if (rays.rayIsMasked(ray)) continue;
+#endif
for (int axis = 0; axis < 3; axis++) {
const Real new_rcp = rays.getInverseDirection(ray, axis);
const Real new_org = rays.getOrigin(ray,axis);
@@ -121,7 +125,9 @@
int e = rays.rayEnd & (~3);
if (b >=e) {
for (int i = rays.begin(); i < rays.end(); i++) {
+#if TEST_MASKS
if (rays.rayIsMasked(i)) continue;
+#endif
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
@@ -267,7 +273,9 @@
__m128 box_z1 = _mm_set1_ps(box[1][2]);
for(;i<e;i+=4) {
+#if TEST_MASKS
if (rays.groupIsMasked(i)) continue;
+#endif
__m128 x0 = _mm_mul_ps(_mm_sub_ps(box_x0,
_mm_load_ps(&data->origin[0][i])),
_mm_load_ps(&data->inverseDirection[0][i]));
__m128 x1 = _mm_mul_ps(_mm_sub_ps(box_x1,
_mm_load_ps(&data->origin[0][i])),
@@ -300,7 +308,9 @@
}
for(;i<rays.rayEnd;i++) {
+#if TEST_MASKS
if (rays.rayIsMasked(i)) continue;
+#endif
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
@@ -392,7 +402,9 @@
int first_simd = (rays.rayBegin + 3) & (~3);
if (first_simd >= last_simd) {
for (int i = rays.rayEnd - 1; i > rays.rayBegin; i--) {
+#if TEST_MASKS
if (rays.rayIsMasked(i)) continue;
+#endif
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
@@ -413,7 +425,9 @@
int i = rays.end();
for (; i > last_simd;) {
i--;
+#if TEST_MASKS
if (rays.rayIsMasked(i)) continue;
+#endif
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
@@ -443,7 +457,9 @@
for(;i>first_simd;) {
i -= 4;
+#if TEST_MASKS
if (rays.groupIsMasked(i)) continue;
+#endif
__m128 x0 = _mm_mul_ps(_mm_sub_ps(box_x0,
_mm_load_ps(&data->origin[0][i])),
_mm_load_ps(&data->inverseDirection[0][i]));
__m128 x1 = _mm_mul_ps(_mm_sub_ps(box_x1,
_mm_load_ps(&data->origin[0][i])),
@@ -477,7 +493,7 @@
for (; i > rays.rayBegin;) {
i--;
- if (rays.rayIsMasked(i)) continue;
+ //if (rays.rayIsMasked(i)) continue;
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
@@ -497,7 +513,7 @@
}
#else
for (int i = rays.rayEnd - 1; i > rays.rayBegin; i--) {
- if (rays.rayIsMasked(i)) continue;
+ //if (rays.rayIsMasked(i)) continue;
float tmin = 1e-5f;
float tmax = rays.getMinT(i);
- [Manta] r1999 - trunk/Model/Groups, boulos, 01/23/2008
Archive powered by MHonArc 2.6.16.