diff options
author | Andre Susano Pinto <andresusanopinto@gmail.com> | 2009-08-05 18:40:38 +0400 |
---|---|---|
committer | Andre Susano Pinto <andresusanopinto@gmail.com> | 2009-08-05 18:40:38 +0400 |
commit | e4e9b569e1b766dc07ae074439a894be8d7cda49 (patch) | |
tree | c8ae6e0f28df05034c80a28076cfd2db020dad0e /source/blender/render/intern/include/rayobject.h | |
parent | bbdba89d06496e1e9a2bc63ce0f70aac8b8cc3f3 (diff) |
experiences with memory organization (store the vertexs coords on RayFace)
Diffstat (limited to 'source/blender/render/intern/include/rayobject.h')
-rw-r--r-- | source/blender/render/intern/include/rayobject.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/source/blender/render/intern/include/rayobject.h b/source/blender/render/intern/include/rayobject.h index 6f8debead19..dddeebd5048 100644 --- a/source/blender/render/intern/include/rayobject.h +++ b/source/blender/render/intern/include/rayobject.h @@ -34,6 +34,7 @@ extern "C" { #endif #include "RE_raytrace.h" +#include "render_types.h" #include <float.h> @@ -75,16 +76,38 @@ extern "C" { You actually don't need to care about this if you are only using the API described on RE_raytrace.h */ + +/* defines where coordinates of rayface primitives are stored */ +#define RE_RAYFACE_COORDS_LOCAL +//#define RE_RAYFACE_COORDS_POINTER +//#define RE_RAYFACE_COORDS_VLAKREN typedef struct RayFace { +#ifdef RE_RAYFACE_COORDS_LOCAL + float v1[4], v2[4], v3[4], v4[3]; + int quad; + void *ob; + void *face; +#elif defined(RE_RAYFACE_COORDS_POINTER) float *v1, *v2, *v3, *v4; - void *ob; void *face; +#elif defined(RE_RAYFACE_COORDS_VLAKREN) + void *ob; + void *face; +#endif } RayFace; +#ifdef RE_RAYFACE_COORDS_LOCAL +# define RE_rayface_isQuad(a) ((a)->quad) +#elif defined(RE_RAYFACE_COORDS_POINTER) +# define RE_rayface_isQuad(a) ((a)->v4) +#elif defined(RE_RAYFACE_COORDS_VLAKREN) +#endif + + struct RayObject { struct RayObjectAPI *api; @@ -121,6 +144,11 @@ typedef struct RayObjectAPI #define RayObject_isRayAPI(o) ((((intptr_t)o)&3) == 2) /* + * Loads a VlakRen on a RayFace + */ +void RE_rayface_from_vlak(RayFace *face, ObjectInstanceRen *obi, VlakRen *vlr); + +/* * Extend min/max coords so that the rayobject is inside them */ void RE_rayobject_merge_bb(RayObject *ob, float *min, float *max); |