Changeset 311 for trunk/VUT/GtpVisibilityPreprocessor/src/Pvs.h
- Timestamp:
- 10/06/05 02:53:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/VUT/GtpVisibilityPreprocessor/src/Pvs.h
r310 r311 12 12 template<typename T> 13 13 struct LtSample { 14 bool operator()(const T *a, const T *b) const14 bool operator()(const T a, const T b) const 15 15 { 16 16 return a < b; … … 24 24 int mVisibleSamples; 25 25 PvsData<T>() {} 26 PvsData<T>(const int samples): mVisibleSamples(samples) {}26 PvsData<T>(const int samples): mVisibleSamples(samples) {} 27 27 }; 28 28 29 29 template<typename T> 30 class mypvs30 class Pvs 31 31 { 32 32 public: 33 mypvs(): mSamples(0), mEntries() {}33 Pvs(): mSamples(0), mEntries() {} 34 34 int mSamples; 35 35 36 //int Compress() {return 0;}36 int Compress() {return 0;} 37 37 int GetSize() {return (int)mEntries.size();} 38 38 … … 48 48 49 49 template <typename T> 50 PvsData<T> * mypvs<T>::Find(T sample)50 PvsData<T> *Pvs<T>::Find(T sample) 51 51 { 52 /*std::map<T *, PvsData<T>, LtSample<T> >::iterator i = mEntries.find(sample);52 std::map<T, PvsData<T>, LtSample<T> >::iterator i = mEntries.find(sample); 53 53 if (i != mEntries.end()) { 54 54 return &(*i).second; 55 } else */55 } else 56 56 return NULL; 57 57 } 58 58 59 59 template <typename T> 60 void mypvs<T>::GetData(const int index,60 void Pvs<T>::GetData(const int index, 61 61 T &entry, 62 62 PvsData<T> &data) 63 63 { 64 /*PvsMap<typename T>::iterator i = mEntries.begin();64 std::map<T, PvsData<T>, LtSample<T> >::iterator i = mEntries.begin(); 65 65 for (int k = 0; k != index && i != mEntries.end(); i++, k++); 66 66 67 67 entry = (*i).first; 68 data = (*i).second; */68 data = (*i).second; 69 69 } 70 70 71 struct LtKdNode 71 template <typename T> 72 int Pvs<T>::AddSample(T sample) 72 73 { 73 bool operator()(const KdNode *a, 74 const KdNode *b) const 75 { 76 return a < b; 77 } 78 74 int result; 75 PvsData<T> *data = Find(sample); 76 77 if (data) 78 { 79 data->mVisibleSamples ++; 80 result = 0; 81 82 } 83 else 84 { 85 mEntries[sample] = PvsData<T>(1); 86 result = 1; 87 } 88 89 return result; 90 } 91 92 /** Class instantiating the Pvs template for kd tree nodes. 93 */ 94 class KdPvs: public Pvs<KdNode *> 95 { 96 int Compress(); 79 97 }; 80 98 81 /** Superclass for all types of PVS data. 82 */ 83 class Pvs { 84 public: 85 Pvs(): mSamples(0) {} 86 int mSamples; 99 typedef std::map<KdNode *, PvsData<KdNode *>, LtSample<KdNode *> > KdPvsMap; 100 typedef PvsData<KdNode *> KdPvsData; 87 101 88 virtual int Compress() = 0; 89 virtual int GetSize() = 0; 90 }; 91 92 struct KdPvsData { 93 int mVisibleSamples; 94 KdPvsData() {} 95 KdPvsData(const int samples):mVisibleSamples(samples) {} 96 }; 97 98 typedef std::map<KdNode *, KdPvsData, LtKdNode> KdPvsMap; 99 100 101 class KdPvs: public Pvs { 102 public: 103 104 KdPvsMap mEntries; 105 106 KdPvs():mEntries() {} 107 108 KdPvsData *Find(KdNode *node); 109 int AddNodeSample(KdNode *node); 110 int Compress() {return 0;} 111 int GetSize() { return (int)mEntries.size(); } 112 void GetData(const int index, 113 KdNode *&node, 114 KdPvsData &data 115 ); 116 117 }; 118 119 struct LtBspNode 120 { 121 bool operator()(const BspNode *a, 122 const BspNode *b) const 123 { 124 return a < b; 125 } 126 }; 127 128 struct BspPvsData { 129 int mVisibleSamples; 130 BspPvsData() {} 131 BspPvsData(const int samples): mVisibleSamples(samples) {} 132 }; 133 134 typedef std::map<BspNode *, BspPvsData, LtBspNode> BspPvsMap; 135 136 class BspPvs: public Pvs 137 { 138 public: 139 BspPvs(): mEntries() {} 140 141 BspPvsMap mEntries; 142 143 BspPvsData *Find(BspNode *node); 144 int AddNodeSample(BspNode *node); 145 146 int Compress() {return 0;} 147 148 int GetSize() {return (int)mEntries.size();} 149 150 void GetData(const int index, 151 BspNode *&node, 152 BspPvsData &data); 153 }; 154 155 156 struct LtIntersectable 157 { 158 bool operator()(const Intersectable *a, 159 const Intersectable *b) const 160 { 161 return a < b; 162 } 163 }; 164 165 struct ViewCellPvsData { 166 int mVisibleSamples; 167 ViewCellPvsData() {} 168 ViewCellPvsData(const int samples): mVisibleSamples(samples) {} 169 }; 170 171 typedef std::map<Intersectable *, ViewCellPvsData, LtIntersectable> ViewCellPvsMap; 172 173 class ViewCellPvs 174 { 175 public: 176 ViewCellPvs(): mEntries() {} 177 178 ViewCellPvsMap mEntries; 179 180 int Compress() {return 0;} 181 int GetSize() {return (int)mEntries.size();} 182 183 ViewCellPvsData *Find(Intersectable *obj); 184 int AddObject(Intersectable *obj); 185 186 void GetData(const int index, 187 Intersectable *&obj, 188 ViewCellPvsData &data); 189 190 }; 102 //typedef Pvs<KdNode *> KdPvs; 103 typedef Pvs<Intersectable *> ViewCellPvs; 191 104 192 105 #endif
Note: See TracChangeset
for help on using the changeset viewer.