Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/bvh/bvh.h')
-rw-r--r--intern/cycles/bvh/bvh.h128
1 files changed, 62 insertions, 66 deletions
diff --git a/intern/cycles/bvh/bvh.h b/intern/cycles/bvh/bvh.h
index 33a069eeaf5..edce3ca6f2a 100644
--- a/intern/cycles/bvh/bvh.h
+++ b/intern/cycles/bvh/bvh.h
@@ -34,96 +34,92 @@ class LeafNode;
class Object;
class Progress;
-#define BVH_ALIGN 4096
+#define BVH_ALIGN 4096
#define TRI_NODE_SIZE 3
/* Packed BVH
*
* BVH stored as it will be used for traversal on the rendering device. */
struct PackedBVH {
- /* BVH nodes storage, one node is 4x int4, and contains two bounding boxes,
- * and child, triangle or object indexes depending on the node type */
- array<int4> nodes;
- /* BVH leaf nodes storage. */
- array<int4> leaf_nodes;
- /* object index to BVH node index mapping for instances */
- array<int> object_node;
- /* Mapping from primitive index to index in triangle array. */
- array<uint> prim_tri_index;
- /* Continuous storage of triangle vertices. */
- array<float4> prim_tri_verts;
- /* primitive type - triangle or strand */
- array<int> prim_type;
- /* visibility visibilitys for primitives */
- array<uint> prim_visibility;
- /* mapping from BVH primitive index to true primitive index, as primitives
- * may be duplicated due to spatial splits. -1 for instances. */
- array<int> prim_index;
- /* mapping from BVH primitive index, to the object id of that primitive. */
- array<int> prim_object;
- /* Time range of BVH primitive. */
- array<float2> prim_time;
-
- /* index of the root node. */
- int root_index;
-
- PackedBVH()
- {
- root_index = 0;
- }
+ /* BVH nodes storage, one node is 4x int4, and contains two bounding boxes,
+ * and child, triangle or object indexes depending on the node type */
+ array<int4> nodes;
+ /* BVH leaf nodes storage. */
+ array<int4> leaf_nodes;
+ /* object index to BVH node index mapping for instances */
+ array<int> object_node;
+ /* Mapping from primitive index to index in triangle array. */
+ array<uint> prim_tri_index;
+ /* Continuous storage of triangle vertices. */
+ array<float4> prim_tri_verts;
+ /* primitive type - triangle or strand */
+ array<int> prim_type;
+ /* visibility visibilitys for primitives */
+ array<uint> prim_visibility;
+ /* mapping from BVH primitive index to true primitive index, as primitives
+ * may be duplicated due to spatial splits. -1 for instances. */
+ array<int> prim_index;
+ /* mapping from BVH primitive index, to the object id of that primitive. */
+ array<int> prim_object;
+ /* Time range of BVH primitive. */
+ array<float2> prim_time;
+
+ /* index of the root node. */
+ int root_index;
+
+ PackedBVH()
+ {
+ root_index = 0;
+ }
};
-enum BVH_TYPE {
- bvh2,
- bvh4,
- bvh8
-};
+enum BVH_TYPE { bvh2, bvh4, bvh8 };
/* BVH */
-class BVH
-{
-public:
- PackedBVH pack;
- BVHParams params;
- vector<Object*> objects;
+class BVH {
+ public:
+ PackedBVH pack;
+ BVHParams params;
+ vector<Object *> objects;
- static BVH *create(const BVHParams& params, const vector<Object*>& objects);
- virtual ~BVH() {}
+ static BVH *create(const BVHParams &params, const vector<Object *> &objects);
+ virtual ~BVH()
+ {
+ }
- virtual void build(Progress& progress, Stats *stats=NULL);
- void refit(Progress& progress);
+ virtual void build(Progress &progress, Stats *stats = NULL);
+ void refit(Progress &progress);
-protected:
- BVH(const BVHParams& params, const vector<Object*>& objects);
+ protected:
+ BVH(const BVHParams &params, const vector<Object *> &objects);
- /* Refit range of primitives. */
- void refit_primitives(int start, int end, BoundBox& bbox, uint& visibility);
+ /* Refit range of primitives. */
+ void refit_primitives(int start, int end, BoundBox &bbox, uint &visibility);
- /* triangles and strands */
- void pack_primitives();
- void pack_triangle(int idx, float4 storage[3]);
+ /* triangles and strands */
+ void pack_primitives();
+ void pack_triangle(int idx, float4 storage[3]);
- /* merge instance BVH's */
- void pack_instances(size_t nodes_size, size_t leaf_nodes_size);
+ /* merge instance BVH's */
+ void pack_instances(size_t nodes_size, size_t leaf_nodes_size);
- /* for subclasses to implement */
- virtual void pack_nodes(const BVHNode *root) = 0;
- virtual void refit_nodes() = 0;
+ /* for subclasses to implement */
+ virtual void pack_nodes(const BVHNode *root) = 0;
+ virtual void refit_nodes() = 0;
- virtual BVHNode *widen_children_nodes(const BVHNode *root) = 0;
+ virtual BVHNode *widen_children_nodes(const BVHNode *root) = 0;
};
/* Pack Utility */
-struct BVHStackEntry
-{
- const BVHNode *node;
- int idx;
+struct BVHStackEntry {
+ const BVHNode *node;
+ int idx;
- BVHStackEntry(const BVHNode *n = 0, int i = 0);
- int encodeIdx() const;
+ BVHStackEntry(const BVHNode *n = 0, int i = 0);
+ int encodeIdx() const;
};
CCL_NAMESPACE_END
-#endif /* __BVH_H__ */
+#endif /* __BVH_H__ */