16 #define TACHYON_INTERNAL 1 21 #if 0 && defined(__INTEL_COMPILER) && defined(__MIC__) 23 #include <immintrin.h> 27 return scene->objgroup.numobjects++;
31 return scene->objgroup.numobjects;
41 cur->methods->freeobj(cur);
54 temp.nextobj = ry->scene->objgroup.unboundedobj;
56 while ((cur=cur->nextobj) != NULL) {
57 #if 0 && defined(__INTEL_COMPILER) && defined(__MIC__) 58 _mm_prefetch(cur->nextobj, _MM_HINT_T0);
60 cur->methods->intersect(cur, ry);
64 temp.nextobj = ry->scene->objgroup.boundedobj;
66 while ((cur=cur->nextobj) != NULL) {
67 #if 0 && defined(__INTEL_COMPILER) && defined(__MIC__) 68 _mm_prefetch(cur->nextobj, _MM_HINT_T0);
70 cur->methods->intersect(cur, ry);
80 if (t < ry->maxdist) {
83 ry->intstruct.closest.obj = obj;
84 ry->intstruct.closest.t = t;
93 if (t < ry->maxdist) {
96 if (obj->clip != NULL) {
101 for (i=0; i<obj->clip->numplanes; i++) {
102 if ((obj->clip->planes[i * 4 ] * hit.x +
103 obj->clip->planes[i * 4 + 1] * hit.y +
104 obj->clip->planes[i * 4 + 2] * hit.z) >
105 obj->clip->planes[i * 4 + 3]) {
113 ry->intstruct.closest.obj = obj;
114 ry->intstruct.closest.t = t;
120 if (ry->intstruct.num > 0) {
121 *t = ry->intstruct.closest.t;
122 *obj = ry->intstruct.closest.obj;
125 return ry->intstruct.num;
134 if (t < ry->maxdist) {
138 if (!(obj->tex->flags & RT_TEXTURE_SHADOWCAST)) {
139 if (ry->scene->shadowfilter)
140 ry->intstruct.shadowfilter *= (1.0 - obj->tex->opacity);
149 ry->flags |= RT_RAY_FINISHED;
158 if (t < ry->maxdist) {
162 if (!(obj->tex->flags & RT_TEXTURE_SHADOWCAST)) {
163 if (ry->scene->shadowfilter)
164 ry->intstruct.shadowfilter *= (1.0 - obj->tex->opacity);
169 if (obj->clip != NULL) {
174 for (i=0; i<obj->clip->numplanes; i++) {
175 if ((obj->clip->planes[i * 4 ] * hit.x +
176 obj->clip->planes[i * 4 + 1] * hit.y +
177 obj->clip->planes[i * 4 + 2] * hit.z) >
178 obj->clip->planes[i * 4 + 3]) {
189 ry->flags |= RT_RAY_FINISHED;
196 if (ry->intstruct.num > 0)
void add_clipped_shadow_intersection(flt t, const object *obj, ray *ry)
unsigned int new_objectid(scenedef *scene)
int closest_intersection(flt *t, object const **obj, ray *ry)
int shadow_intersection(ray *ry)
double flt
generic floating point number, using double
void add_clipped_intersection(flt t, const object *obj, ray *ry)
unsigned int max_objectid(scenedef *scene)
void add_shadow_intersection(flt t, const object *obj, ray *ry)
void free_objects(object *start)
void add_regular_intersection(flt t, const object *obj, ray *ry)
Tachyon public API function prototypes and declarations used to drive the ray tracing engine...
#define reset_intersection(ry)
void intersect_objects(ray *ry)