00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00017
00019
00020
00021
00023
00024 #ifndef _SURFACEINTEGRATOR_H
00025 #define _SURFACEINTEGRATOR_H
00026
00027 #include <eclipseray/eclipse.h>
00028 #include <eclipseray/yrtypes.h>
00029
00031
00036
00040
00042 class SurfaceIntegrator : public EclipseObject
00043 {
00044 DECLARE_PYTHON_HEADER;
00045
00046 public:
00047
00048
00049
00050
00051
00052
00056 inline YRSurfaceIntegrator* GetIntegrator(){ return m_pIntegrator; }
00057
00058
00059
00060
00061
00067 static bool PyTypeCheck( PYOBJECT a_pObject );
00068
00074 virtual PYOBJECT PyAsString();
00075
00076 protected:
00077
00078
00079 SurfaceIntegrator();
00080
00081
00082 virtual ~SurfaceIntegrator();
00083
00084
00085 inline YRSurfaceIntegrator*& GetYRIntegrator(){ return m_pIntegrator; }
00086
00087
00088 virtual PYOBJECT GetPyStringRep() ECLIPSE_PURE;
00089
00090 private:
00091
00092 YRSurfaceIntegrator* m_pIntegrator;
00093
00094 };
00095
00096
00098
00103
00105 class DirectLightingIntegrator : public SurfaceIntegrator
00106 {
00107 public:
00108
00119 DirectLightingIntegrator( const char* a_sID, int a_nRayDepth, int a_nPhotons,
00120 int a_nTransparentShadowDepth );
00121
00122 protected:
00123
00124
00125 virtual PYOBJECT GetPyStringRep();
00126
00132 virtual void DeleteObject();
00133
00134 private:
00135
00136
00137 ~DirectLightingIntegrator();
00138
00139 };
00140
00141
00143
00148
00150 class PhotonIntegrator : public SurfaceIntegrator
00151 {
00152 public:
00153
00168 PhotonIntegrator( const char* a_sID, int a_nRayDepth, int a_nShadowDepth, int a_nPhotons,
00169 float a_fDiffuseRadius, int a_nSearch, int a_nCausticMix, int a_nBounces,
00170 bool a_bUseBackground, int a_nFGSamples, int a_nFGBounces );
00171
00172 protected:
00173
00179 virtual void DeleteObject();
00180
00181
00182 virtual PYOBJECT GetPyStringRep();
00183
00184
00185 private:
00186
00187
00188 ~PhotonIntegrator();
00189 };
00190
00192
00197
00199 class AmbientOcclusionIntegrator : public SurfaceIntegrator
00200 {
00201 public:
00202
00210 AmbientOcclusionIntegrator( const char* a_sID, int a_nSamples, float a_fDistance, YRColorRGB a_color );
00211
00212 protected:
00213
00219 virtual void DeleteObject(){ delete this; }
00220
00221
00222 virtual PYOBJECT GetPyStringRep();
00223
00224
00225 private:
00226
00227
00228 ~AmbientOcclusionIntegrator();
00229 };
00230
00231
00232 #endif