Blender
V4.5
intern
cycles
bvh
bvh/bvh.h
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2009-2010 NVIDIA Corporation
2
* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*
6
* Adapted code from NVIDIA Corporation. */
7
8
#pragma once
9
10
#include "
bvh/params.h
"
11
#include "
util/array.h
"
12
#include "
util/types.h
"
13
#include "
util/unique_ptr.h
"
14
#include "
util/vector.h
"
15
16
CCL_NAMESPACE_BEGIN
17
18
class
BoundBox
;
19
class
BVHNode
;
20
class
BVHParams
;
21
class
Device
;
22
class
DeviceScene
;
23
class
Geometry
;
24
class
LeafNode
;
25
class
Object
;
26
class
Progress
;
27
class
Stats
;
28
29
#define BVH_ALIGN 4096
// NOLINT
30
#define TRI_NODE_SIZE 3
// NOLINT
31
32
/* Packed BVH
33
*
34
* BVH stored as it will be used for traversal on the rendering device. */
35
36
struct
PackedBVH
{
37
/* BVH nodes storage, one node is 4x int4, and contains two bounding boxes,
38
* and child, triangle or object indexes depending on the node type */
39
array<int4>
nodes
;
40
/* BVH leaf nodes storage. */
41
array<int4>
leaf_nodes
;
42
/* object index to BVH node index mapping for instances */
43
array<int>
object_node
;
44
/* primitive type - triangle or strand */
45
array<int>
prim_type
;
46
/* Visibility visibilities for primitives. */
47
array<uint>
prim_visibility
;
48
/* mapping from BVH primitive index to true primitive index, as primitives
49
* may be duplicated due to spatial splits. -1 for instances. */
50
array<int>
prim_index
;
51
/* mapping from BVH primitive index, to the object id of that primitive. */
52
array<int>
prim_object
;
53
/* Time range of BVH primitive. */
54
array<float2>
prim_time
;
55
56
/* index of the root node. */
57
int
root_index
;
58
59
PackedBVH
()
60
{
61
root_index
= 0;
62
}
63
};
64
65
/* BVH */
66
67
class
BVH
{
68
public
:
69
BVHParams
params
;
70
vector<Geometry *>
geometry
;
71
vector<Object *>
objects
;
72
73
static
unique_ptr<BVH>
create
(
const
BVHParams
&
params
,
74
const
vector<Geometry *>
&
geometry
,
75
const
vector<Object *>
&
objects
,
76
Device
*device);
77
virtual
~BVH
() =
default
;
78
79
virtual
void
replace_geometry
(
const
vector<Geometry *>
&
geometry
,
80
const
vector<Object *>
&
objects
)
81
{
82
this->geometry =
geometry
;
83
this->objects =
objects
;
84
}
85
86
protected
:
87
BVH
(
const
BVHParams
&
params
,
88
const
vector<Geometry *>
&
geometry
,
89
const
vector<Object *>
&
objects
);
90
};
91
92
CCL_NAMESPACE_END
BVHParams
Definition
params.h:57
BVH
Definition
bvh/bvh.h:67
BVH::~BVH
virtual ~BVH()=default
BVH::create
static unique_ptr< BVH > create(const BVHParams ¶ms, const vector< Geometry * > &geometry, const vector< Object * > &objects, Device *device)
Definition
bvh.cpp:97
BVH::geometry
vector< Geometry * > geometry
Definition
bvh/bvh.h:70
BVH::replace_geometry
virtual void replace_geometry(const vector< Geometry * > &geometry, const vector< Object * > &objects)
Definition
bvh/bvh.h:79
BVH::BVH
BVH(const BVHParams ¶ms, const vector< Geometry * > &geometry, const vector< Object * > &objects)
Definition
bvh.cpp:90
BVH::params
BVHParams params
Definition
bvh/bvh.h:69
BVH::objects
vector< Object * > objects
Definition
bvh/bvh.h:71
DeviceScene
Definition
devicescene.h:14
Device
Definition
device/device.h:129
Geometry
Definition
scene/geometry.h:70
LeafNode
Definition
bvh/node.h:169
Progress
Definition
progress.h:21
Stats
Definition
util/stats.h:11
array
Definition
cycles/util/array.h:22
vector
Definition
cycles/util/vector.h:20
array.h
vector.h
CCL_NAMESPACE_END
#define CCL_NAMESPACE_END
Definition
device/cuda/compat.h:10
CCL_NAMESPACE_BEGIN
Definition
python.cpp:37
params.h
BVHNode
Definition
BLI_kdopbvh.cc:65
BoundBox
Definition
DNA_object_types.h:102
Object
Definition
DNA_object_types.h:192
PackedBVH
Definition
bvh/bvh.h:36
PackedBVH::prim_index
array< int > prim_index
Definition
bvh/bvh.h:50
PackedBVH::prim_type
array< int > prim_type
Definition
bvh/bvh.h:45
PackedBVH::nodes
array< int4 > nodes
Definition
bvh/bvh.h:39
PackedBVH::prim_visibility
array< uint > prim_visibility
Definition
bvh/bvh.h:47
PackedBVH::prim_time
array< float2 > prim_time
Definition
bvh/bvh.h:54
PackedBVH::leaf_nodes
array< int4 > leaf_nodes
Definition
bvh/bvh.h:41
PackedBVH::PackedBVH
PackedBVH()
Definition
bvh/bvh.h:59
PackedBVH::prim_object
array< int > prim_object
Definition
bvh/bvh.h:52
PackedBVH::root_index
int root_index
Definition
bvh/bvh.h:57
PackedBVH::object_node
array< int > object_node
Definition
bvh/bvh.h:43
unique_ptr.h
types.h
Generated on Fri Apr 3 2026 06:33:18 for Blender by
doxygen
1.11.0