19 #include "../system/FreestyleConfig.h"
23 #ifdef WITH_CXX_GUARDEDALLOC
54 _occluders.push_back(o);
72 #ifdef WITH_CXX_GUARDEDALLOC
73 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Cell")
98 #ifdef WITH_CXX_GUARDEDALLOC
99 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridVisitor")
110 virtual void examineOccluder(
Polygon3r *occ);
136 Vec3r ray_org_, ray_dir_, cell_size_;
148 cell_size_(cell_size),
159 current_cell_ = cell;
162 virtual void examineOccluder(
Polygon3r *occ);
192 virtual void clear();
202 virtual void configure(
const Vec3r &orig,
const Vec3r &
size,
unsigned nb);
212 for (
int i = 0; i < 3; i++) {
213 tmp = (int)((p[i] - _orig[i]) / _cell_size[i]);
217 else if ((
unsigned int)tmp >= _cells_nb[i]) {
218 res[i] = _cells_nb[i] - 1;
240 getCellCoordinates(p, coord);
241 return getCell(coord);
253 for (
unsigned int i = 0; i < 3; i++) {
254 orig[i] = _orig[i] + cell_coord[i] * _cell_size[i];
268 getCellOrigin(cell_coord, min_out);
269 max_out = min_out + _cell_size;
276 void insertOccluder(
Polygon3r *occluder);
281 _occluders.push_back(occluder);
297 void castInfiniteRay(
const Vec3r &orig,
309 Polygon3r *castRayToFindFirstIntersection(
310 const Vec3r &orig,
const Vec3r &dir,
double &
t,
double &u,
double &
v,
unsigned timestamp);
313 void initRay(
const Vec3r &orig,
const Vec3r &end,
unsigned timestamp);
318 bool initInfiniteRay(
const Vec3r &orig,
const Vec3r &dir,
unsigned timestamp);
344 cerr <<
"Cells nb : " << _cells_nb << endl;
345 cerr <<
"Cell size : " << _cell_size << endl;
346 cerr <<
"Origin : " << _orig << endl;
347 cerr <<
"Occluders nb : " << _occluders.size() << endl;
356 current_cell = getCell(_current_cell);
361 for (OccludersSet::iterator it = occluders.begin(); it != occluders.end(); it++) {
369 }
while ((!visitor.
stop()) && (nextRayCell(_current_cell, _current_cell)));
373 bool nextRayCell(
Vec3u ¤t_cell,
Vec3u &next_cell);
393 #ifdef WITH_CXX_GUARDEDALLOC
394 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Grid")
413 OccludersSet::iterator it, end;
415 #ifdef WITH_CXX_GUARDEDALLOC
416 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:VirtualOccludersSet")
#define POINTER_AS_UINT(i)
#define POINTER_FROM_UINT(i)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
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
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void addOccluder(Polygon3r *o)
const Vec3r & getOrigin()
OccludersSet & getOccluders()
virtual void discoverCell(Cell *)
virtual void examineOccluder(Polygon3r *)
virtual void finishCell(Cell *)
void getCellCoordinates(const Vec3r &p, Vec3u &res)
void getCellBox(const Vec3u &cell_coord, Vec3r &min_out, Vec3r &max_out)
void addOccluder(Polygon3r *occluder)
Vec3r getCellSize() const
const Vec3r & getOrigin() const
void getCellOrigin(const Vec3u &cell_coord, Vec3r &orig)
OccludersSet * getOccluders()
bool initAcceleratedInfiniteRay(const Vec3r &orig, const Vec3r &dir, unsigned timestamp)
virtual void fillCell(const Vec3u &coord, Cell &cell)=0
Cell * getCell(const Vec3r &p)
void initAcceleratedRay(const Vec3r &orig, const Vec3r &end, unsigned timestamp)
virtual Cell * getCell(const Vec3u &coord)=0
void castRayInternal(GridVisitor &visitor)
OccludersSet & occluders()
allOccludersGridVisitor(OccludersSet &occluders)
virtual void discoverCell(Cell *cell)
firstIntersectionGridVisitor(const Vec3r &ray_org, const Vec3r &ray_dir, const Vec3r &cell_size)
virtual ~firstIntersectionGridVisitor()
static void clear(Message *msg)
vector< Polygon3r * > OccludersSet