source: trunk/VUT/GtpVisibilityPreprocessor/src/SamplingPreprocessor.h @ 354

Revision 354, 1.4 KB checked in by bittner, 19 years ago (diff)

sampling node selection changes

Line 
1#ifndef _SamplingPreprocessor_H__
2#define _SamplingPreprocessor_H__
3
4#include <fstream>
5using namespace std;
6
7#include "Preprocessor.h"
8
9struct SimpleRay {
10  Vector3 mOrigin;
11  Vector3 mDirection;
12};
13
14/** Sampling based visibility preprocessing. The implementation is based on heuristical
15    sampling of view space */
16class SamplingPreprocessor : public Preprocessor {
17public:
18        int mPass;
19
20  int mSamplesPerPass;
21  int mTotalSamples;
22  int mKdPvsDepth;
23  ofstream mStats;
24  ObjectContainer mObjects;
25  RayContainer mSampleRays;
26  int mBspConstructionSamples;
27
28       
29  SamplingPreprocessor();
30
31  ~SamplingPreprocessor();
32
33  virtual bool ComputeVisibility();
34
35  void
36  SetupRay(Ray &ray,
37                   const Vector3 &point,
38                   const Vector3 &direction,
39                   const int type);
40
41  KdNode *
42  GetNodeForPvs(KdLeaf *leaf);
43
44  int
45  AddNodeSamples(Intersectable *object, const Ray &ray);
46
47  void
48  HoleSamplingPass();
49
50        int
51        CastRay(Intersectable *object, Ray &ray, const bool reverseSample);
52
53        KdNode *
54        GetNodeToSample(Intersectable *object);
55        void
56        VerifyVisibility(Intersectable *object);
57
58        int
59        CastEdgeSamples(
60                                                                        Intersectable *object,
61                                                                        const Vector3 &point,
62                                                                        MeshInstance *mi,
63                                                                        const int samples
64                                                                        );
65
66        /** Adds objects samples to view cells.
67        */
68        int AddObjectSamples(Intersectable *obj, const Ray &ray);
69
70        bool BuildBspTree();
71
72        void ExportSplits(const ObjectContainer &objects);
73};
74
75
76
77#endif
Note: See TracBrowser for help on using the repository browser.