#include <unsafekdtreeaccel.h>

Public Member Functions | |
| UnsafeKdTreeAccel (const vector< Primitive * > &p, int icost, int scost, float ebonus, int maxp, int maxDepth) | |
| BBox | WorldBound () const |
| bool | CanIntersect () const |
| ~UnsafeKdTreeAccel () | |
| void | buildTree (int nodeNum, const BBox &bounds, const vector< BBox > &primBounds, int *primNums, int nprims, int depth, UnsafeBoundEdge *edges[3], int *prims0, int *prims1, int badRefines=0) |
| bool | Intersect (const Ray &ray, Intersection *isect) const |
| bool | IntersectP (const Ray &ray) const |
Static Public Member Functions | |
| static Primitive * | CreateAccelerator (const vector< Primitive * > &prims, const ParamSet &ps) |
Private Attributes | |
| BBox | bounds |
| int | isectCost |
| int | traversalCost |
| int | maxPrims |
| float | emptyBonus |
| u_int | nMailboxes |
| MailboxPrim * | mailboxPrims |
| int | curMailboxId |
| UnsafeKdAccelNode * | nodes |
| int | nAllocedNodes |
| int | nextFreeNode |
| MemoryArena | arena |
Definition at line 118 of file unsafekdtreeaccel.h.
| UnsafeKdTreeAccel::UnsafeKdTreeAccel | ( | const vector< Primitive * > & | p, | |
| int | icost, | |||
| int | scost, | |||
| float | ebonus, | |||
| int | maxp, | |||
| int | maxDepth | |||
| ) |
Definition at line 31 of file unsafekdtree.cpp.
References lux::AllocAligned(), bounds, buildTree(), curMailboxId, lux::Primitive::FullyRefine(), Log2Int(), mailboxPrims, nAllocedNodes, nextFreeNode, nMailboxes, Round2Int(), and lux::Union().
Referenced by CreateAccelerator().
| UnsafeKdTreeAccel::~UnsafeKdTreeAccel | ( | ) |
Definition at line 81 of file unsafekdtree.cpp.
References lux::FreeAligned(), mailboxPrims, nMailboxes, and nodes.
| void UnsafeKdTreeAccel::buildTree | ( | int | nodeNum, | |
| const BBox & | bounds, | |||
| const vector< BBox > & | primBounds, | |||
| int * | primNums, | |||
| int | nprims, | |||
| int | depth, | |||
| UnsafeBoundEdge * | edges[3], | |||
| int * | prims0, | |||
| int * | prims1, | |||
| int | badRefines = 0 | |||
| ) |
Definition at line 88 of file unsafekdtree.cpp.
References lux::UnsafeKdAccelNode::aboveChild, lux::AllocAligned(), arena, emptyBonus, lux::UnsafeBoundEdge::END, lux::FreeAligned(), INFINITY, lux::UnsafeKdAccelNode::initInterior(), lux::UnsafeKdAccelNode::initLeaf(), isectCost, mailboxPrims, cimg_library::cimg::max(), maxPrims, memcpy(), nAllocedNodes, nextFreeNode, nodes, lux::BBox::pMax, lux::BBox::pMin, lux::UnsafeBoundEdge::primNum, cimg_library::sort(), lux::UnsafeBoundEdge::START, lux::UnsafeBoundEdge::t, traversalCost, lux::Vector::x, lux::Vector::y, and lux::Vector::z.
Referenced by UnsafeKdTreeAccel().
| bool lux::UnsafeKdTreeAccel::CanIntersect | ( | ) | const [inline, virtual] |
| Primitive * UnsafeKdTreeAccel::CreateAccelerator | ( | const vector< Primitive * > & | prims, | |
| const ParamSet & | ps | |||
| ) | [static] |
Definition at line 389 of file unsafekdtree.cpp.
References emptyBonus, lux::ParamSet::FindOneFloat(), lux::ParamSet::FindOneInt(), isectCost, maxPrims, and UnsafeKdTreeAccel().
Referenced by lux::MakeAccelerator().
| bool UnsafeKdTreeAccel::Intersect | ( | const Ray & | ray, | |
| Intersection * | isect | |||
| ) | const [virtual] |
Implements lux::Primitive.
Definition at line 205 of file unsafekdtree.cpp.
References lux::UnsafeKdAccelNode::aboveChild, bounds, curMailboxId, lux::Ray::d, lux::Primitive::Intersect(), lux::BBox::IntersectP(), lux::UnsafeKdAccelNode::IsLeaf(), lux::MailboxPrim::lastMailboxId, MAX_TODO, lux::Ray::maxt, lux::KdToDo::node, nodes, lux::UnsafeKdAccelNode::nPrimitives(), lux::Ray::o, lux::UnsafeKdAccelNode::onePrimitive, lux::MailboxPrim::primitive, lux::UnsafeKdAccelNode::primitives, lux::UnsafeKdAccelNode::SplitAxis(), lux::UnsafeKdAccelNode::SplitPos(), lux::KdToDo::tmax, lux::KdToDo::tmin, lux::Vector::x, lux::Vector::y, and lux::Vector::z.
| bool UnsafeKdTreeAccel::IntersectP | ( | const Ray & | ray | ) | const [virtual] |
Implements lux::Primitive.
Definition at line 300 of file unsafekdtree.cpp.
References lux::UnsafeKdAccelNode::aboveChild, bounds, curMailboxId, lux::Ray::d, lux::Primitive::IntersectP(), lux::BBox::IntersectP(), lux::UnsafeKdAccelNode::IsLeaf(), lux::MailboxPrim::lastMailboxId, MAX_TODO, lux::KdToDo::node, nodes, lux::UnsafeKdAccelNode::nPrimitives(), lux::Ray::o, lux::UnsafeKdAccelNode::onePrimitive, lux::MailboxPrim::primitive, lux::UnsafeKdAccelNode::primitives, lux::UnsafeKdAccelNode::SplitAxis(), lux::UnsafeKdAccelNode::SplitPos(), lux::KdToDo::tmax, lux::KdToDo::tmin, lux::Vector::x, lux::Vector::y, and lux::Vector::z.
| BBox lux::UnsafeKdTreeAccel::WorldBound | ( | ) | const [inline, virtual] |
MemoryArena lux::UnsafeKdTreeAccel::arena [private] |
BBox lux::UnsafeKdTreeAccel::bounds [private] |
Definition at line 141 of file unsafekdtreeaccel.h.
Referenced by Intersect(), IntersectP(), UnsafeKdTreeAccel(), and WorldBound().
int lux::UnsafeKdTreeAccel::curMailboxId [mutable, private] |
Definition at line 146 of file unsafekdtreeaccel.h.
Referenced by Intersect(), IntersectP(), and UnsafeKdTreeAccel().
float lux::UnsafeKdTreeAccel::emptyBonus [private] |
Definition at line 143 of file unsafekdtreeaccel.h.
Referenced by buildTree(), and CreateAccelerator().
int lux::UnsafeKdTreeAccel::isectCost [private] |
Definition at line 142 of file unsafekdtreeaccel.h.
Referenced by buildTree(), and CreateAccelerator().
MailboxPrim* lux::UnsafeKdTreeAccel::mailboxPrims [private] |
Definition at line 145 of file unsafekdtreeaccel.h.
Referenced by buildTree(), UnsafeKdTreeAccel(), and ~UnsafeKdTreeAccel().
int lux::UnsafeKdTreeAccel::maxPrims [private] |
Definition at line 142 of file unsafekdtreeaccel.h.
Referenced by buildTree(), and CreateAccelerator().
int lux::UnsafeKdTreeAccel::nAllocedNodes [private] |
Definition at line 148 of file unsafekdtreeaccel.h.
Referenced by buildTree(), and UnsafeKdTreeAccel().
int lux::UnsafeKdTreeAccel::nextFreeNode [private] |
Definition at line 148 of file unsafekdtreeaccel.h.
Referenced by buildTree(), and UnsafeKdTreeAccel().
u_int lux::UnsafeKdTreeAccel::nMailboxes [private] |
Definition at line 144 of file unsafekdtreeaccel.h.
Referenced by UnsafeKdTreeAccel(), and ~UnsafeKdTreeAccel().
UnsafeKdAccelNode* lux::UnsafeKdTreeAccel::nodes [private] |
Definition at line 147 of file unsafekdtreeaccel.h.
Referenced by buildTree(), Intersect(), IntersectP(), and ~UnsafeKdTreeAccel().
int lux::UnsafeKdTreeAccel::traversalCost [private] |
1.5.9