Blender V2.61 - r43446
|
#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "raycounter.h"
#include "rayintersection.h"
#include "rayobject.h"
#include "rayobject_hint.h"
#include "rayobject_rtbuild.h"
#include <assert.h>
Go to the source code of this file.
Defines | |
#define | RE_RAYTRACE_BVH_H |
Functions | |
static int | rayobject_bb_intersect_test (const Isect *isec, const float *_bb) |
template<class Tree > | |
static int | bvh_intersect (Tree *obj, Isect *isec) |
template<class Tree > | |
static void | bvh_add (Tree *obj, RayObject *ob) |
template<class Node > | |
bool | is_leaf (Node *node) |
template<class Tree > | |
static void | bvh_done (Tree *obj) |
template<class Tree > | |
static void | bvh_free (Tree *obj) |
template<class Tree > | |
static void | bvh_bb (Tree *obj, float *min, float *max) |
template<class Tree > | |
static float | bvh_cost (Tree *obj) |
template<class Node > | |
static int | bvh_node_hit_test (Node *node, Isect *isec) |
template<class Node > | |
static void | bvh_node_merge_bb (Node *node, float *min, float *max) |
template<class Node > | |
static void | bvh_node_push_childs (Node *node, Isect *isec, Node **stack, int &stack_pos) |
template<class Node , int MAX_STACK_SIZE, bool TEST_ROOT, bool SHADOW> | |
static int | bvh_node_stack_raycast (Node *root, Isect *isec) |
template<class Node , class HintObject > | |
void | bvh_dfs_make_hint (Node *node, LCTSHint *hint, int reserve_space, HintObject *hintObject) |
template<class Tree > | |
static RayObjectAPI * | bvh_get_api (int maxstacksize) |
template<class Tree , int DFS_STACK_SIZE> | |
static RayObject * | bvh_create_tree (int size) |
Definition in file source/blender/render/intern/raytrace/bvh.h.
#define RE_RAYTRACE_BVH_H |
Definition at line 50 of file source/blender/render/intern/raytrace/bvh.h.
static void bvh_add | ( | Tree * | obj, |
RayObject * | ob | ||
) | [static] |
Definition at line 102 of file source/blender/render/intern/raytrace/bvh.h.
References rtbuild_add().
static void bvh_bb | ( | Tree * | obj, |
float * | min, | ||
float * | max | ||
) | [static] |
Definition at line 128 of file source/blender/render/intern/raytrace/bvh.h.
References bvh_node_merge_bb().
static float bvh_cost | ( | Tree * | obj | ) | [static] |
Definition at line 136 of file source/blender/render/intern/raytrace/bvh.h.
References assert.
static RayObject* bvh_create_tree | ( | int | size | ) | [inline, static] |
Definition at line 423 of file source/blender/render/intern/raytrace/bvh.h.
References assert, DFS_STACK_SIZE, MEM_callocN(), NULL, RE_rayobject_isAligned, RE_rayobject_unalignRayAPI, and rtbuild_create().
void bvh_dfs_make_hint | ( | Node * | node, |
LCTSHint * | hint, | ||
int | reserve_space, | ||
HintObject * | hintObject | ||
) |
Definition at line 386 of file source/blender/render/intern/raytrace/bvh.h.
References assert, count_childs(), HINT_ACCEPT, HINT_RECURSE, hint_test_bb(), is_leaf(), RE_RAY_LCTS_MAX_SIZE, LCTSHint::size, and LCTSHint::stack.
static void bvh_done | ( | Tree * | obj | ) | [static] |
static void bvh_free | ( | Tree * | obj | ) | [static] |
Definition at line 116 of file source/blender/render/intern/raytrace/bvh.h.
References BLI_memarena_free(), MEM_freeN(), and rtbuild_free().
Referenced by bfree().
static RayObjectAPI* bvh_get_api | ( | int | maxstacksize | ) | [static] |
Definition at line 198 of file rayobject_vbvh.cpp.
References assert.
static int bvh_intersect | ( | Tree * | obj, |
Isect * | isec | ||
) | [static] |
Definition at line 145 of file source/blender/render/intern/raytrace/bvh.h.
References rayobject_bb_intersect_test().
Referenced by bvh_node_stack_raycast().
static void bvh_node_merge_bb | ( | Node * | node, |
float * | min, | ||
float * | max | ||
) | [inline, static] |
Definition at line 152 of file source/blender/render/intern/raytrace/bvh.h.
References DO_MAX, DO_MIN, is_leaf(), and RE_rayobject_merge_bb().
Referenced by bvh_bb().
static void bvh_node_push_childs | ( | Node * | node, |
Isect * | isec, | ||
Node ** | stack, | ||
int & | stack_pos | ||
) | [inline, static] |
Referenced by bvh_node_stack_raycast().
static int bvh_node_stack_raycast | ( | Node * | root, |
Isect * | isec | ||
) | [static] |
Definition at line 173 of file source/blender/render/intern/raytrace/bvh.h.
References assert, bvh_node_hit_test(), bvh_node_push_childs(), is_leaf(), RE_rayobject_intersect(), MakeCursor::root, and stack.
bool is_leaf | ( | Node * | node | ) | [inline] |
Definition at line 108 of file source/blender/render/intern/raytrace/bvh.h.
References RE_rayobject_isAligned.
Referenced by bvh_dfs_make_hint(), bvh_node_merge_bb(), bvh_node_push_childs(), bvh_node_stack_raycast(), bvh_refit(), count_childs(), pushup(), and pushup_simd().
static int rayobject_bb_intersect_test | ( | const Isect * | isec, |
const float * | _bb | ||
) | [static] |
Definition at line 78 of file source/blender/render/intern/raytrace/bvh.h.
References Isect::bv_index, Isect::dist, Isect::hit, Isect::idot_axis, RE_RC_COUNT, and Isect::start.
Referenced by bvh_node_hit_test().