Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1999 - trunk/Model/Groups


Chronological Thread 
  • 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.

Top of page