#include "echo.h"#include "privateEcho.h"

Defines | |
| #define | TRI_INTX(ray, origin, edge0, edge1, pvec, qvec, tvec,det, t, u, v, COND, NOPE) |
Functions | |
| int | _echoRayIntx_Noop (RAYINTX_ARGS(Object)) |
| int | _echoRayIntx_CubeSurf (echoPos_t *tP, int *axP, int *dirP, echoPos_t xmin, echoPos_t xmax, echoPos_t ymin, echoPos_t ymax, echoPos_t zmin, echoPos_t zmax, echoRay *ray) |
| int | _echoRayIntx_CubeSolid (echoPos_t *tminP, echoPos_t *tmaxP, echoPos_t xmin, echoPos_t xmax, echoPos_t ymin, echoPos_t ymax, echoPos_t zmin, echoPos_t zmax, echoRay *ray) |
| int | _echoRayIntx_Sphere (RAYINTX_ARGS(Sphere)) |
| void | _echoRayIntxUV_Sphere (echoIntx *intx) |
| int | _echoRayIntx_Cylinder (RAYINTX_ARGS(Cylinder)) |
| int | _echoRayIntx_Cube (RAYINTX_ARGS(Cube)) |
| void | _echoRayIntxUV_Cube (echoIntx *intx) |
| int | _echoRayIntx_Rectangle (RAYINTX_ARGS(Rectangle)) |
| int | _echoRayIntx_Triangle (RAYINTX_ARGS(Triangle)) |
| int | _echoRayIntx_TriMesh (RAYINTX_ARGS(TriMesh)) |
| void | _echoRayIntxUV_TriMesh (echoIntx *intx) |
| int | _echoRayIntx_AABBox (RAYINTX_ARGS(AABBox)) |
| int | _echoRayIntx_Split (RAYINTX_ARGS(Split)) |
| int | _echoRayIntx_List (RAYINTX_ARGS(List)) |
| int | _echoRayIntx_Instance (RAYINTX_ARGS(Instance)) |
| void | _echoRayIntxUV_Noop (echoIntx *intx) |
| int | echoRayIntx (echoIntx *intx, echoRay *ray, echoScene *scene, echoRTParm *parm, echoThreadState *tstate) |
Variables | |
| int | _echoVerbose = 0 |
| _echoRayIntx_t | _echoRayIntx [ECHO_TYPE_NUM] |
| _echoRayIntxUV_t | _echoRayIntxUV [ECHO_TYPE_NUM] |
| #define TRI_INTX | ( | ray, | |||
| origin, | |||||
| edge0, | |||||
| edge1, | |||||
| pvec, | |||||
| qvec, | |||||
| tvec, | |||||
| det, | |||||
| t, | |||||
| u, | |||||
| v, | |||||
| COND, | |||||
| NOPE | ) |
Value:
ELL_3V_CROSS(pvec, ray->dir, edge1); \ det = ELL_3V_DOT(pvec, edge0); \ if (det > -ECHO_EPSILON && det < ECHO_EPSILON) { \ NOPE; \ } \ /* now det is the reciprocal of the determinant */ \ det = 1.0/det; \ ELL_3V_SUB(tvec, ray->from, origin); \ u = det * ELL_3V_DOT(pvec, tvec); \ if (u < 0.0 || u > 1.0) { \ NOPE; \ } \ ELL_3V_CROSS(qvec, tvec, edge0); \ v = det * ELL_3V_DOT(qvec, ray->dir); \ if (COND) { \ NOPE; \ } \ t = det * ELL_3V_DOT(qvec, edge1); \ if (t < ray->neer || t > ray->faar) { \ NOPE; \ }
| int _echoRayIntx_AABBox | ( | RAYINTX_ARGS(AABBox) | ) |
| int _echoRayIntx_Cube | ( | RAYINTX_ARGS(Cube) | ) |
| int _echoRayIntx_CubeSolid | ( | echoPos_t * | tminP, | |
| echoPos_t * | tmaxP, | |||
| echoPos_t | xmin, | |||
| echoPos_t | xmax, | |||
| echoPos_t | ymin, | |||
| echoPos_t | ymax, | |||
| echoPos_t | zmin, | |||
| echoPos_t | zmax, | |||
| echoRay * | ray | |||
| ) |
| int _echoRayIntx_CubeSurf | ( | echoPos_t * | tP, | |
| int * | axP, | |||
| int * | dirP, | |||
| echoPos_t | xmin, | |||
| echoPos_t | xmax, | |||
| echoPos_t | ymin, | |||
| echoPos_t | ymax, | |||
| echoPos_t | zmin, | |||
| echoPos_t | zmax, | |||
| echoRay * | ray | |||
| ) |
| int _echoRayIntx_Cylinder | ( | RAYINTX_ARGS(Cylinder) | ) |
| int _echoRayIntx_Instance | ( | RAYINTX_ARGS(Instance) | ) |
| int _echoRayIntx_List | ( | RAYINTX_ARGS(List) | ) |
| int _echoRayIntx_Noop | ( | RAYINTX_ARGS(Object) | ) |
| int _echoRayIntx_Rectangle | ( | RAYINTX_ARGS(Rectangle) | ) |
| int _echoRayIntx_Sphere | ( | RAYINTX_ARGS(Sphere) | ) |
| int _echoRayIntx_Split | ( | RAYINTX_ARGS(Split) | ) |
| int _echoRayIntx_Triangle | ( | RAYINTX_ARGS(Triangle) | ) |
| int _echoRayIntx_TriMesh | ( | RAYINTX_ARGS(TriMesh) | ) |
| void _echoRayIntxUV_Cube | ( | echoIntx * | intx | ) |
| void _echoRayIntxUV_Noop | ( | echoIntx * | intx | ) |
| void _echoRayIntxUV_Sphere | ( | echoIntx * | intx | ) |
| void _echoRayIntxUV_TriMesh | ( | echoIntx * | intx | ) |
| int echoRayIntx | ( | echoIntx * | intx, | |
| echoRay * | ray, | |||
| echoScene * | scene, | |||
| echoRTParm * | parm, | |||
| echoThreadState * | tstate | |||
| ) |
| _echoRayIntx_t _echoRayIntx[ECHO_TYPE_NUM] |
Initial value:
{
(_echoRayIntx_t)_echoRayIntx_Sphere,
(_echoRayIntx_t)_echoRayIntx_Cylinder,
(_echoRayIntx_t)_echoRayIntx_Superquad,
(_echoRayIntx_t)_echoRayIntx_Cube,
(_echoRayIntx_t)_echoRayIntx_Triangle,
(_echoRayIntx_t)_echoRayIntx_Rectangle,
(_echoRayIntx_t)_echoRayIntx_TriMesh,
(_echoRayIntx_t)_echoRayIntx_Noop,
(_echoRayIntx_t)_echoRayIntx_AABBox,
(_echoRayIntx_t)_echoRayIntx_Split,
(_echoRayIntx_t)_echoRayIntx_List,
(_echoRayIntx_t)_echoRayIntx_Instance,
}
| _echoRayIntxUV_t _echoRayIntxUV[ECHO_TYPE_NUM] |
Initial value:
{
_echoRayIntxUV_Sphere,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Cube,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop,
_echoRayIntxUV_TriMesh,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop,
_echoRayIntxUV_Noop
}
| int _echoVerbose = 0 |
1.5.6