20 #if !defined(__MITSUBA_CORE_RAY_SSE_H_)
21 #define __MITSUBA_CORE_RAY_SSE_H_
24 #error "This headers requires SSE support."
43 for (
int i=0; i<4; i++) {
44 for (
int axis=0; axis<3; axis++) {
45 o[axis].f[i] = rays[i].o[axis];
46 d[axis].f[i] = rays[i].d[axis];
47 dRcp[axis].f[i] = rays[i].dRcp[axis];
48 signs[axis][i] = rays[i].d[axis] < 0 ? 1 : 0;
49 if (signs[axis][i] != signs[axis][0])
62 mint = SSEConstants::eps;
63 maxt = SSEConstants::p_inf;
67 for (
int i=0; i<4; i++) {
68 mint.f[i] = rays[i].mint;
69 maxt.f[i] = rays[i].maxt;
82 t = SSEConstants::p_inf;
83 u = SSEConstants::zero;
84 v = SSEConstants::zero;
85 primIndex = SSEConstants::ffffffff;
86 shapeIndex = SSEConstants::ffffffff;
RayInterval4(const Ray *rays)
Definition: ray_sse.h:66
SSEVector t
Definition: ray_sse.h:75
SSEVector u
Definition: ray_sse.h:76
Intersection4()
Definition: ray_sse.h:81
SSEVector mint
Definition: ray_sse.h:58
QuadVector dRcp
Definition: ray_sse.h:36
SSEVector maxt
Definition: ray_sse.h:59
bool load(const Ray *rays)
Definition: ray_sse.h:42
SSEVector v
Definition: ray_sse.h:77
SIMD quad-packed ray for coherent ray tracing.
Definition: ray_sse.h:34
SSEVector shapeIndex
Definition: ray_sse.h:79
QuadVector o
Definition: ray_sse.h:35
SSEVector primIndex
Definition: ray_sse.h:78
RayPacket4()
Definition: ray_sse.h:39
RayInterval4()
Definition: ray_sse.h:61