Text archives Help
- From: "Thiago Ize" <thiago@sci.utah.edu>
- To: manta@sci.utah.edu
- Subject: [Manta] r2068 - in trunk: Core/Math Model/Primitives
- Date: Thu, 14 Feb 2008 13:33:25 -0700 (MST)
Author: thiago
Date: Thu Feb 14 13:33:25 2008
New Revision: 2068
Modified:
trunk/Core/Math/SSEDefs.h
trunk/Model/Primitives/SphereRTSL.cc
Log:
Core/Math/SSEDefs.h
-Moving include of iostream to outside of MANTA_SSE ifdef. This
should hopefully prevent many of the build breaks on non-sse
code. Perhaps Vector.h and vecdefs.h should also be moved out?
Model/Primitives/SphereRTSL.cc
-Made floats Reals so sphere can do doubles. Also got the non-sse
code to compile.
Modified: trunk/Core/Math/SSEDefs.h
==============================================================================
--- trunk/Core/Math/SSEDefs.h (original)
+++ trunk/Core/Math/SSEDefs.h Thu Feb 14 13:33:25 2008
@@ -6,13 +6,16 @@
#include <MantaSSE.h>
+//Placing this before MANTA_SSE ifdef so that non-sse code
+//doesn't break when iostream isn't included.
+#include <iostream>
+
#ifdef MANTA_SSE
#include <xmmintrin.h>
#include <emmintrin.h>
#include <Core/Util/Align.h>
#include <Core/Geometry/vecdefs.h>
#include <Core/Geometry/Vector.h>
-#include <iostream>
typedef __m128 sse_t;
typedef __m128i sse_int_t;
Modified: trunk/Model/Primitives/SphereRTSL.cc
==============================================================================
--- trunk/Model/Primitives/SphereRTSL.cc (original)
+++ trunk/Model/Primitives/SphereRTSL.cc Thu Feb 14 13:33:25 2008
@@ -8,10 +8,10 @@
// Begin loop invariant setup code
Vector rtsl_O = (rays.getOrigin(0) - center);
- float rtsl_A = 1.f;
- float rtsl_A_inv = (1 / rtsl_A);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - (radius * radius));
- float rtsl_invariant0 = (radius * radius);
+ Real rtsl_A = 1.f;
+ Real rtsl_A_inv = (1 / rtsl_A);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - (radius * radius));
+ Real rtsl_invariant0 = (radius * radius);
// End loop invariant setup
RayPacketData* data = rays.data;
@@ -511,7 +511,7 @@
{
// Section 0: BEGIN Loading variables from previous sections
- Vector rtsl_O(s_O_x[i], s_O_y[i], s_O_z[i]);
+ Vector rtsl_O(rays.getOrigin(i)-center);
// Section 0: END Loading variables from previous sections
// Section 0: BEGIN Declaring variables that were written but not
read yet
@@ -520,17 +520,17 @@
// Section 0: END Declaring variables that were written but not
read yet
Vector rtsl_D = rays.getDirection(i);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
if((rtsl_disc >= 0.f)){
- float rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
+ Real rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
rtsl_O += (rtsl_D * rtsl_t);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
if((rtsl_disc >= 0.f)){
- float rtsl_r = Sqrt(rtsl_disc);
- float rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
+ Real rtsl_r = Sqrt(rtsl_disc);
+ Real rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
if((rtsl_t1 <= T_EPSILON)){
rtsl_t += ((rtsl_r - rtsl_B) * rtsl_A_inv);
} else {
@@ -551,10 +551,10 @@
// Special case: unit directions
// Begin loop invariant setup code
- float rtsl_A = 1.f;
- float rtsl_A_inv = (1 / rtsl_A);
- float rtsl_invariant0 = (radius * radius);
- float rtsl_invariant1 = (radius * radius);
+ Real rtsl_A = 1.f;
+ Real rtsl_A_inv = (1 / rtsl_A);
+ Real rtsl_invariant0 = (radius * radius);
+ Real rtsl_invariant1 = (radius * radius);
// End loop invariant setup
RayPacketData* data = rays.data;
@@ -1066,18 +1066,18 @@
Vector rtsl_O = (rays.getOrigin(i) - center);
Vector rtsl_D = rays.getDirection(i);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
- float rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
+ Real rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
if((rtsl_disc >= 0.f)){
- float rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
+ Real rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
rtsl_O += (rtsl_D * rtsl_t);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant1);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant1);
rtsl_disc = ((rtsl_B * rtsl_B) - rtsl_C);
if((rtsl_disc >= 0.f)){
- float rtsl_r = Sqrt(rtsl_disc);
- float rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
+ Real rtsl_r = Sqrt(rtsl_disc);
+ Real rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
if((rtsl_t1 <= T_EPSILON)){
rtsl_t += ((rtsl_r - rtsl_B) * rtsl_A_inv);
} else {
@@ -1102,8 +1102,8 @@
// Begin loop invariant setup code
Vector rtsl_O = (rays.getOrigin(0) - center);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - (radius * radius));
- float rtsl_invariant0 = (radius * radius);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - (radius * radius));
+ Real rtsl_invariant0 = (radius * radius);
// End loop invariant setup
RayPacketData* data = rays.data;
@@ -1651,7 +1651,7 @@
{
// Section 0: BEGIN Loading variables from previous sections
- Vector rtsl_O(s_O_x[i], s_O_y[i], s_O_z[i]);
+ Vector rtsl_O(rays.getOrigin(i)-center);
// Section 0: END Loading variables from previous sections
// Section 0: BEGIN Declaring variables that were written but not
read yet
@@ -1660,19 +1660,19 @@
// Section 0: END Declaring variables that were written but not
read yet
Vector rtsl_D = rays.getDirection(i);
- float rtsl_A = Dot(rtsl_D, rtsl_D);
- float rtsl_A_inv = (1 / rtsl_A);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
+ Real rtsl_A = Dot(rtsl_D, rtsl_D);
+ Real rtsl_A_inv = (1 / rtsl_A);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
if((rtsl_disc >= 0.f)){
- float rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
+ Real rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
rtsl_O += (rtsl_D * rtsl_t);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
if((rtsl_disc >= 0.f)){
- float rtsl_r = Sqrt(rtsl_disc);
- float rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
+ Real rtsl_r = Sqrt(rtsl_disc);
+ Real rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
if((rtsl_t1 <= T_EPSILON)){
rtsl_t += ((rtsl_r - rtsl_B) * rtsl_A_inv);
} else {
@@ -1693,8 +1693,8 @@
// General case:
// Begin loop invariant setup code
- float rtsl_invariant0 = (radius * radius);
- float rtsl_invariant1 = (radius * radius);
+ Real rtsl_invariant0 = (radius * radius);
+ Real rtsl_invariant1 = (radius * radius);
// End loop invariant setup
RayPacketData* data = rays.data;
@@ -2254,20 +2254,20 @@
Vector rtsl_O = (rays.getOrigin(i) - center);
Vector rtsl_D = rays.getDirection(i);
- float rtsl_A = Dot(rtsl_D, rtsl_D);
- float rtsl_A_inv = (1 / rtsl_A);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
- float rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
+ Real rtsl_A = Dot(rtsl_D, rtsl_D);
+ Real rtsl_A_inv = (1 / rtsl_A);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant0);
+ Real rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
if((rtsl_disc >= 0.f)){
- float rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
+ Real rtsl_t = ((-(rtsl_B)) * rtsl_A_inv);
rtsl_O += (rtsl_D * rtsl_t);
- float rtsl_B = Dot(rtsl_O, rtsl_D);
- float rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant1);
+ Real rtsl_B = Dot(rtsl_O, rtsl_D);
+ Real rtsl_C = (Dot(rtsl_O, rtsl_O) - rtsl_invariant1);
rtsl_disc = ((rtsl_B * rtsl_B) - (rtsl_A * rtsl_C));
if((rtsl_disc >= 0.f)){
- float rtsl_r = Sqrt(rtsl_disc);
- float rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
+ Real rtsl_r = Sqrt(rtsl_disc);
+ Real rtsl_t1 = (rtsl_t + ((-((rtsl_r + rtsl_B))) *
rtsl_A_inv));
if((rtsl_t1 <= T_EPSILON)){
rtsl_t += ((rtsl_r - rtsl_B) * rtsl_A_inv);
} else {
- [Manta] r2068 - in trunk: Core/Math Model/Primitives, Thiago Ize, 02/14/2008
Archive powered by MHonArc 2.6.16.