Name Description Size Coverage
cone.h calculate quadratic equation to solve 13686 -
coneline_intersector.h move ray origin closer to make calculations numerically stable 10004 -
conelinei_intersector.h 6045 -
curve_intersector.h 4514 -
curve_intersector_distance.h transform control points into ray space 4912 -
curve_intersector_oriented.h 18296 -
curve_intersector_precalculations.h 1276 -
curve_intersector_ribbon.h calculate squared distance of point p0 to line p1->p2 9087 -
curve_intersector_sweep.h error of curve evaluations is propertional to largest coordinate 15113 -
curve_intersector_virtual.h 49049 -
curve_intersector_virtual_4i.cpp 2292 -
curve_intersector_virtual_4i_mb.cpp 2330 -
curve_intersector_virtual_4v.cpp 2292 -
curve_intersector_virtual_8i.cpp 2868 -
curve_intersector_virtual_8i_mb.cpp 2906 -
curve_intersector_virtual_8v.cpp 2868 -
curveNi.h Returns maximum number of stored primitives 9736 -
curveNi_intersector.h 24977 -
curveNi_mb.h Returns maximum number of stored primitives 13725 -
curveNi_mb_intersector.h 25131 -
curveNv.h Returns maximum number of stored primitives 3460 -
curveNv_intersector.h 6852 -
cylinder.h calculate quadratic equation to solve 8389 -
disc_intersector.h 8078 -
disci_intersector.h 11695 -
filter.h 6495 -
grid_intersector.h ! Intersect a ray with the primitive. 3914 -
grid_soa.cpp the generate loops need padded arrays, thus first store into these temporary arrays 9192 -
grid_soa.h ! GridSOA constructor 11803 -
grid_soa_intersector_packet.h ! Intersect a ray with the primitive. 21564 -
grid_soa_intersector1.h ! Intersect a ray with the primitive. 9245 -
instance.h primitive supports multiple time segments 2363 -
instance_intersector.cpp Push an instance to the stack. 14055 -
instance_intersector.h 3346 -
intersector_epilog.h ray mask test 32370 -
intersector_iterators.h PrecalculationsK& pre, 7184 -
line_intersector.h transform end points into ray space 6310 -
linei.h Virtual interface to query information about the line segment type 31600 -
linei_intersector.h 5728 -
object.h primitive supports multiple time segments 2436 -
object_intersector.h perform ray mask test 4528 -
plane.h 1704 -
pointi.h Virtual interface to query information about the line segment type 15838 -
primitive.h ! returns name of this primitive type 1517 -
primitive4.cpp Curve4v ************************* 8706 -
primitive8.cpp Curve8v ************************* 3613 -
quad_intersector.h ! Intersects a ray with a quad with backface culling enabled. The quad v0,v1,v2,v3 is split into two triangles v0,v1,v3 and v2,v3,v1. The edge v1,v2 decides which of the two triangles gets intersected. 2955 -
quad_intersector_moeller.h ----------------------------- 18401 -
quad_intersector_pluecker.h ! Modified Pluecker ray/triangle intersector. The test first shifts the ray origin into the origin of the coordinate system and then uses Pluecker coordinates for the intersection. Due to the shift, the Pluecker coordinate calculation simplifies and the tests get numerically stable. The edge equations are watertight along the edge for neighboring triangles. 18196 -
quadi.h Stores M quads from an indexed face set 18076 -
quadi_intersector.h ! Intersects M quads with 1 ray 15942 -
quadv.h Stores the vertices of M quads in struct of array layout 6261 -
quadv_intersector.h ! Intersects M quads with 1 ray 7847 -
roundline_intersector.h This file implements the intersection of a ray with a round linear curve segment. We define the geometry of such a round linear curve segment from point p0 with radius r0 to point p1 with radius r1 using the cone that touches spheres p0/r0 and p1/r1 tangentially plus the sphere p1/r1. We denote the tangentially touching cone from p0/r0 to p1/r1 with cone(p0,r0,p1,r1) and the cone plus the ending sphere with cone_sphere(p0,r0,p1,r1). For multiple connected round linear curve segments this construction yield a proper shape when viewed from the outside. Using the following CSG we can also handle the interiour in most common cases: round_linear_curve(pl,rl,p0,r0,p1,r1,pr,rr) = cone_sphere(p0,r0,p1,r1) - cone(pl,rl,p0,r0) - cone(p1,r1,pr,rr) Thus by subtracting the neighboring cone geometries, we cut away parts of the center cone_sphere surface which lie inside the combined curve. This approach works as long as geometry of the current cone_sphere penetrates into direct neighbor segments only, and not into segments further away. To construct a cone that touches two spheres at p0 and p1 with r0 and r1, one has to increase the cone radius at r0 and r1 to obtain larger radii w0 and w1, such that the infinite cone properly touches the spheres. From the paper "Ray Tracing Generalized Tube Primitives: Method and Applications" (https://www.researchgate.net/publication/334378683_Ray_Tracing_Generalized_Tube_Primitives_Method_and_Applications) one can derive the following equations for these increased radii: sr = 1.0f / sqrt(1-sqr(dr)/sqr(p1-p0)) w0 = sr*r0 w1 = sr*r1 Further, we want the cone to start where it touches the sphere at p0 and to end where it touches sphere at p1. Therefore, we need to construct clipping locations y0 and y1 for the start and end of the cone. These start and end clipping location of the cone can get calculated as: Y0 = - r0 * (r1-r0) / length(p1-p0) Y1 = length(p1-p0) - r1 * (r1-r0) / length(p1-p0) Where the cone starts a distance Y0 and ends a distance Y1 away of point p0 along the cone center. The distance between Y1-Y0 can get calculated as: dY = length(p1-p0) - (r1-r0)^2 / length(p1-p0) In the code below, Y will always be scaled by length(p1-p0) to obtain y and you will find the terms r0*(r1-r0) and (p1-p0)^2-(r1-r0)^2. 31392 -
roundlinei_intersector.h 5870 -
sphere_intersector.h check if there is a first hit 6910 -
spherei_intersector.h 6569 -
subdivpatch1.h ! constructor for cached subdiv patch 1093 -
subdivpatch1_intersector.h ! Intersect a ray with the primitive. 12017 -
subgrid.h Stores M quads from an indexed face set 21937 -
subgrid_intersector.h 21360 -
subgrid_intersector_moeller.h ----------------------------- 16062 -
subgrid_intersector_pluecker.h correct U,V interpolation across the entire grid 14621 -
subgrid_mb_intersector.h 9465 -
triangle.h Precalculated representation for M triangles. Stores for each triangle a base vertex, two edges, and the geometry normal to speed up intersection calculations 6123 -
triangle_intersector.h ! Intersects M triangles with 1 ray 4142 -
triangle_intersector_moeller.h ! This intersector implements a modified version of the Moeller Trumbore intersector from the paper "Fast, Minimum Storage Ray-Triangle Intersection". In contrast to the paper we precalculate some factors and factor the calculations differently to allow precalculating the cross product e1 x e2. The resulting algorithm is similar to the fastest one of the paper "Optimizing Ray-Triangle Intersection via Automated Search". 22215 -
triangle_intersector_pluecker.h ! Modified Pluecker ray/triangle intersector. The test first shifts the ray origin into the origin of the coordinate system and then uses Pluecker coordinates for the intersection. Due to the shift, the Pluecker coordinate calculation simplifies and the tests get numerically stable. The edge equations are watertight along the edge for neighboring triangles. 15332 -
triangle_intersector_woop.h ! This intersector implements a modified version of the Woop's ray-triangle intersection test 15820 -
triangle_triangle_intersector.h calculate triangle planes 5556 -
trianglei.h Stores M triangles from an indexed face set 16417 -
trianglei_intersector.h ! Intersects M triangles with 1 ray 15402 -
trianglev.h Stores the vertices of M triangles in struct of array layout 5915 -
trianglev_intersector.h ! Intersects M triangles with 1 ray 9116 -
trianglev_mb.h Stores the vertices of M triangles in struct of array layout 8691 -
trianglev_mb_intersector.h ! Intersects M motion blur triangles with 1 ray 10744 -