class ShapeSet {
public:
// ShapeSet Public Methods
ShapeSet(const Reference<Shape> &s);
float Area() const { return sumArea; }
~ShapeSet();
Point Sample(const Point &p, const LightSample &ls, Normal *Ns) const;
Point Sample(const LightSample &ls, Normal *Ns) const;
float Pdf(const Point &p, const Vector &wi) const;
float Pdf(const Point &p) const;
private:
// ShapeSet Private Data
vector<Reference<Shape> > shapes;
float sumArea;
vector<float> areas;
Distribution1D *areaDistribution;
};class ShapeSet {
public:
// ShapeSet