Shape
// Shape Declarations
class Shape : public ReferenceCounted {
public:
// Shape Interface
Shape(const Transform *o2w, const Transform *w2o, bool ro);
virtual ~Shape();
virtual Point Sample(float u1, float u2, Normal *Ns) const {
Severe("Unimplemented Shape::Sample() method called");
return Point();
}
virtual float Pdf(const Point &Pshape) const {
return 1.f / Area();
}
virtual Point Sample(const Point &P, float u1, float u2,
Normal *Ns) const {
return Sample(u1, u2, Ns);
}
virtual float Pdf(const Point &p, const Vector &wi) const;
};
// Shape Declarations
class Sha