33 #include "../system/FreestyleConfig.h"
37 #ifdef WITH_CXX_GUARDEDALLOC
68 _occluders.push_back(o);
86 #ifdef WITH_CXX_GUARDEDALLOC
87 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Cell")
112 #ifdef WITH_CXX_GUARDEDALLOC
113 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:GridVisitor")
124 virtual void examineOccluder(
Polygon3r *occ);
150 Vec3r ray_org_, ray_dir_, cell_size_;
162 cell_size_(cell_size),
173 current_cell_ = cell;
176 virtual void examineOccluder(
Polygon3r *occ);
206 virtual void clear();
216 virtual void configure(
const Vec3r &orig,
const Vec3r &
size,
unsigned nb);
226 for (
int i = 0; i < 3; i++) {
227 tmp = (int)((p[i] - _orig[i]) / _cell_size[i]);
231 else if ((
unsigned int)tmp >= _cells_nb[i]) {
232 res[i] = _cells_nb[i] - 1;
254 getCellCoordinates(p, coord);
255 return getCell(coord);
267 for (
unsigned int i = 0; i < 3; i++) {
268 orig[i] = _orig[i] + cell_coord[i] * _cell_size[i];
282 getCellOrigin(cell_coord, min_out);
283 max_out = min_out + _cell_size;
290 void insertOccluder(
Polygon3r *occluder);
295 _occluders.push_back(occluder);
311 void castInfiniteRay(
const Vec3r &orig,
323 Polygon3r *castRayToFindFirstIntersection(
324 const Vec3r &orig,
const Vec3r &dir,
double &
t,
double &u,
double &
v,
unsigned timestamp);
327 void initRay(
const Vec3r &orig,
const Vec3r &end,
unsigned timestamp);
332 bool initInfiniteRay(
const Vec3r &orig,
const Vec3r &dir,
unsigned timestamp);
358 cerr <<
"Cells nb : " << _cells_nb << endl;
359 cerr <<
"Cell size : " << _cell_size << endl;
360 cerr <<
"Origin : " << _orig << endl;
361 cerr <<
"Occluders nb : " << _occluders.size() << endl;
370 current_cell = getCell(_current_cell);
375 for (OccludersSet::iterator it = occluders.begin(); it != occluders.end(); it++) {
383 }
while ((!visitor.
stop()) && (nextRayCell(_current_cell, _current_cell)));
387 bool nextRayCell(
Vec3u ¤t_cell,
Vec3u &next_cell);
407 #ifdef WITH_CXX_GUARDEDALLOC
408 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:Grid")
427 OccludersSet::iterator it, end;
429 #ifdef WITH_CXX_GUARDEDALLOC
430 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