23 for (
int i =
range.start(); i <
range.end(); ++i) {
39 for (
int i =
range.start(); i <
range.end(); ++i) {
61 const Hair *hair =
static_cast<const Hair *
>(
object->get_geometry());
63 const int key =
curve.first_key + segment;
64 const float3 v1 = hair->get_curve_keys()[
key];
88 const Hair *hair =
static_cast<const Hair *
>(
object->get_geometry());
90 curve.bounds_grow(segment,
91 hair->get_curve_keys().data(),
92 hair->get_curve_radius().data(),
108 if (cent_bounds !=
nullptr) {
111 for (
int i =
range.start(); i <
range.end(); ++i) {
115 if (cent_bounds !=
nullptr) {
128 if (cent_bounds !=
nullptr) {
131 for (
int i =
range.start(); i <
range.end(); ++i) {
135 if (cent_bounds !=
nullptr) {
151 1.0f /
max(1e-18f, dim.
x), 1.0f /
max(1e-18f, dim.
y), 1.0f /
max(1e-18f, dim.
z)) *
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE btScalar length() const
Return the length of the vector.
__forceinline int prim_type() const
__forceinline int prim_object() const
__forceinline const BoundBox & bounds() const
__forceinline int prim_index() const
BVHUnaligned(const vector< Object * > &objects)
Transform compute_aligned_space(const BVHObjectBinning &range, const BVHReference *references) const
const vector< Object * > & objects_
BoundBox compute_aligned_prim_boundbox(const BVHReference &prim, const Transform &aligned_space) const
BoundBox compute_aligned_boundbox(const BVHObjectBinning &range, const BVHReference *references, const Transform &aligned_space, BoundBox *cent_bounds=nullptr) const
static Transform compute_node_transform(const BoundBox &bounds, const Transform &aligned_space)
Curve get_curve(const size_t i) const
#define CCL_NAMESPACE_END
#define PRIMITIVE_UNPACK_SEGMENT(type)
ccl_device_inline float2 normalize_len(const float2 a, ccl_private float *t)
BoundBox transformed(const Transform *tfm) const
__forceinline void grow(const float3 &pt)
__forceinline float3 center2() const