source: trunk/VUT/GtpVisibilityPreprocessor/src/Pvs.h @ 308

Revision 308, 2.3 KB checked in by mattausch, 19 years ago (diff)

bsp tree view cells sampling possible

Line 
1#ifndef __PVS_H
2#define __PVS_H
3
4#include <map>
5
6class KdNode;
7class BspNode;
8class Ray;
9class Intersectable;
10
11struct LtKdNode
12{
13  bool operator()(const KdNode *a,
14                  const KdNode *b) const
15  {
16    return a < b;
17  }
18 
19};
20
21/** Superclass for all types of PVS data.
22*/
23class Pvs {
24public:
25        Pvs(): mSamples(0) {}
26        int mSamples;
27
28        virtual int Compress() = 0;
29        virtual int GetSize() = 0;
30};
31
32struct KdPvsData {
33  int mVisibleSamples;
34  KdPvsData() {}
35  KdPvsData(const int samples):mVisibleSamples(samples) {}
36};
37
38typedef std::map<KdNode *, KdPvsData, LtKdNode> KdPvsMap;
39
40
41class KdPvs: public Pvs {
42public:
43 
44  KdPvsMap mEntries;
45 
46  KdPvs():mEntries() {}
47 
48  KdPvsData *Find(KdNode *node);
49  int AddNodeSample(KdNode *node);
50  int Compress() {return 0;}
51  int GetSize() { return (int)mEntries.size(); }
52  void GetData(const int index,
53               KdNode *&node,
54               KdPvsData &data
55               );
56 
57};
58
59struct LtBspNode
60{
61  bool operator()(const BspNode *a,
62                  const BspNode *b) const
63  {
64          return a < b;
65  }
66};
67
68struct BspPvsData {
69  int mVisibleSamples;
70  BspPvsData() {}
71  BspPvsData(const int samples): mVisibleSamples(samples) {}
72};
73
74typedef std::map<BspNode *, BspPvsData, LtBspNode> BspPvsMap;
75
76class BspPvs: public Pvs
77{
78public:
79        BspPvs(): mEntries() {}
80
81        BspPvsMap mEntries;
82 
83        BspPvsData *Find(BspNode *node);
84        int AddNodeSample(BspNode *node);
85       
86        int Compress() {return 0;}
87       
88        int GetSize() {return (int)mEntries.size();}
89       
90        void GetData(const int index,
91                                 BspNode *&node,
92                                 BspPvsData &data);
93};
94
95
96struct LtIntersectable
97{
98  bool operator()(const Intersectable *a,
99                  const Intersectable *b) const
100  {
101          return a < b;
102  }
103};
104
105struct ViewCellPvsData {
106  int mVisibleSamples;
107  ViewCellPvsData() {}
108  ViewCellPvsData(const int samples): mVisibleSamples(samples) {}
109};
110
111typedef std::map<Intersectable *, ViewCellPvsData, LtIntersectable> ViewCellPvsMap;
112
113class ViewCellPvs
114{
115public:
116        ViewCellPvs(): mEntries() {}
117
118        ViewCellPvsMap mEntries;
119 
120        int Compress() {return 0;}
121        int GetSize() {return (int)mEntries.size();}
122
123        ViewCellPvsData *Find(Intersectable *obj);
124        int AddObject(Intersectable *obj);
125
126        void GetData(const int index,
127                                 Intersectable *&obj,
128                                 ViewCellPvsData &data);
129
130};
131
132#endif
133
Note: See TracBrowser for help on using the repository browser.