DiffuseBRDF.h

Go to the documentation of this file.
00001 /* $Id:$ */
00002 
00003 #ifndef __DIFFUSE_BRDF_H
00004 #define __DIFFUSE_BRDF_H
00005 
00006 #include <esg/brdf/BRDF.h>
00007 #include <esg/visitor/MatVisitor.h>
00008 #include <esg/Export>
00009 
00010 namespace esg {
00011 
00016 class OGSCENE_EXPORT DiffuseBRDF : public BRDF {
00017 protected:
00018         virtual void _duplicate_attributes (const BRDF& src) {
00019             BRDF::_duplicate_attributes(src);
00020         }
00021     
00022 public:
00029         DiffuseBRDF (bool isotropic) : BRDF(true, isotropic) {}
00030 
00031         virtual RetVal reflectance(const MatVisitor& visitor,
00032                                    const Vector3*    L,
00033                                    const Vector3*    V,
00034                                    const Vector3*    N,
00035                                    Vector3&          color) = 0;
00036 
00037         virtual RetVal reflectanceVNL(const MatVisitor& visitor,
00038                                       const Vector3*    L,
00039                                       const Vector3*    V,
00040                                       const Vector3*    N,
00041                                       double            NV,
00042                                       double            NL,
00043                                       Vector3&          color) = 0;
00044 
00045         virtual RetVal reflectanceNL(const MatVisitor& visitor,
00046                                      const Vector3*    L,
00047                                      const Vector3*    V,
00048                                      const Vector3*    N,
00049                                      double            NL,
00050                                      Vector3&          color) = 0;
00051 
00052         virtual BRDF* clone () const = 0;
00053 
00054         virtual double albedo (const MatVisitor& visitor,
00055                                const Vector3&    N,
00056                                const Vector3*    V) const = 0;
00057 
00058         virtual void importanceSample(const MatVisitor& visitor,
00059                                       const Vector3&    D,
00060                                       double            r1,
00061                                       double            r2,
00062                                       Vector3&          dir,
00063                                       double*           pPDFVal) = 0;
00064 
00065         virtual Vector2 dir2uv (const MatVisitor& visitor,
00066                                 const Vector3&    N,
00067                                 const Vector3&    D) const = 0;
00068 
00069         // Vector3* stratifiedSamples(unsigned /* # subdomains */);
00070 };
00071 
00072 }; // namespace
00073 
00074 #endif // __DIFFUSE_BRDF_H

Generated on Wed Jun 28 12:24:28 2006 for esg by  doxygen 1.4.6