25#ifdef WITH_CXX_GUARDEDALLOC
54 _occluders.push_back(o);
72#ifdef WITH_CXX_GUARDEDALLOC
73 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Cell")
92#ifdef WITH_CXX_GUARDEDALLOC
93 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridVisitor")
128 Vec3r ray_org_, ray_dir_, cell_size_;
140 cell_size_(cell_size),
149 current_cell_ = cell;
180 virtual void clear();
200 for (
int i = 0; i < 3; i++) {
241 for (
uint i = 0; i < 3; i++) {
298 const Vec3r &orig,
const Vec3r &dir,
double &t,
double &u,
double &
v,
uint timestamp);
332 cerr <<
"Cells nb : " <<
_cells_nb << endl;
334 cerr <<
"Origin : " <<
_orig << endl;
335 cerr <<
"Occluders nb : " <<
_occluders.size() << endl;
342 Cell *current_cell =
nullptr;
349 for (OccludersSet::iterator it = occluders.begin(); it != occluders.end(); it++) {
381#ifdef WITH_CXX_GUARDEDALLOC
382 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Grid")
401 OccludersSet::iterator it, end;
403#ifdef WITH_CXX_GUARDEDALLOC
404 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:VirtualOccludersSet")
#define POINTER_AS_UINT(i)
#define POINTER_FROM_UINT(i)
Configuration definitions.
Various tools for geometry.
Vectors and Matrices (useful type definitions)
Read Guarded memory(de)allocation.
Class to define a polygon.
ATTR_WARN_UNUSED_RESULT const BMVert * v
void addOccluder(Polygon3r *o)
const Vec3r & getOrigin()
OccludersSet & getOccluders()
virtual void discoverCell(Cell *)
virtual void examineOccluder(Polygon3r *)
virtual void finishCell(Cell *)
OccludersSet * getOccluders()
void initAcceleratedRay(const Vec3r &orig, const Vec3r &end, uint timestamp)
void getCellCoordinates(const Vec3r &p, Vec3u &res)
const Vec3r & getOrigin() const
bool initAcceleratedInfiniteRay(const Vec3r &orig, const Vec3r &dir, uint timestamp)
void castInfiniteRay(const Vec3r &orig, const Vec3r &dir, OccludersSet &occluders, uint timestamp)
void getCellBox(const Vec3u &cell_coord, Vec3r &min_out, Vec3r &max_out)
void addOccluder(Polygon3r *occluder)
bool nextRayCell(Vec3u ¤t_cell, Vec3u &next_cell)
Vec3r getCellSize() const
virtual void configure(const Vec3r &orig, const Vec3r &size, uint nb)
void getCellOrigin(const Vec3u &cell_coord, Vec3r &orig)
bool initInfiniteRay(const Vec3r &orig, const Vec3r &dir, uint timestamp)
virtual void fillCell(const Vec3u &coord, Cell &cell)=0
Polygon3r * castRayToFindFirstIntersection(const Vec3r &orig, const Vec3r &dir, double &t, double &u, double &v, uint timestamp)
void insertOccluder(Polygon3r *occluder)
void castRayInternal(GridVisitor &visitor)
void castRay(const Vec3r &orig, const Vec3r &end, OccludersSet &occluders, uint timestamp)
virtual Cell * getCell(const Vec3u &coord)=0
void initRay(const Vec3r &orig, const Vec3r &end, uint timestamp)
Cell * getCell(const Vec3r &p)
OccludersSet & occluders()
allOccludersGridVisitor(OccludersSet &occluders)
virtual void examineOccluder(Polygon3r *occ)
virtual void discoverCell(Cell *cell)
firstIntersectionGridVisitor(const Vec3r &ray_org, const Vec3r &ray_dir, const Vec3r &cell_size)
virtual ~firstIntersectionGridVisitor()
virtual void examineOccluder(Polygon3r *occ)
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
vector< Polygon3r * > OccludersSet