#ifndef _VssPreprocessor_H__ #define _VssPreprocessor_H__ #include using namespace std; #include "Preprocessor.h" #include "VssRay.h" class VssTree; /** Sampling based visibility preprocessing. The implementation is based on heuristical sampling of view space */ class VssPreprocessor : public Preprocessor { public: int mPass; int mSamplesPerPass; int mInitialSamples; int mVssSamples; bool mUseImportanceSampling; ofstream mStats; ObjectContainer mObjects; // rays cast during the processing VssRayContainer mVssRays; VssPreprocessor(); ~VssPreprocessor(); virtual bool ComputeVisibility(); Vector3 GetViewpoint(AxisAlignedBox3 *viewSpaceBox); Vector3 GetDirection(const Vector3 &viewpoint); void SetupRay(Ray &ray, const Vector3 &point, const Vector3 &direction ); int CastRay( Vector3 &viewPoint, Vector3 &direction, VssRayContainer &vssRays ); virtual bool BuildBspTree() { return false; } int RandomizedImportanceSampling(VssTree *vssTree, const int desiredSamples); }; #endif