light.h

Go to the documentation of this file.
00001 
00002 
00003 //**************************************************************************/
00004 
00005 // Copyright (c) 2008 Autodesk, Inc.
00006 
00007 // All rights reserved.
00008 
00009 //
00010 
00011 // Use of this software is subject to the terms of the Autodesk license
00012 
00013 // agreement provided at the time of installation or download, or which
00014 
00015 // otherwise accompanies this software in either electronic or hard copy form.
00016 
00017 //
00018 
00019 //**************************************************************************/
00020 
00021 // DESCRIPTION:
00022 
00023 // CREATED: October 2008
00024 
00025 //**************************************************************************/
00026 
00027 
00028 
00029 namespace mudbox {
00030 
00031 
00032 
00034 
00035 class MBDLL_DECL Light : virtual public GroupNode
00036 
00037 {
00038 
00039     DECLARE_CLASS;
00040 
00041 
00042 
00043 protected:
00044 
00046 
00048 
00050 
00052 
00054 
00056 
00057     Light( void );
00058 
00059 
00060 
00061 public:
00062 
00063 
00064 
00065     enum LightType
00066 
00067     {
00068 
00069         LIGHT_DIRECTIONAL=0,
00070 
00071         LIGHT_POINT,
00072 
00073         LIGHT_SPOT,
00074 
00075         LIGHT_IBL,
00076 
00077         LIGHT_NONE,
00078 
00079     };
00080 
00081 
00082 
00084 
00085     virtual Color Diffuse( void ) const;
00086 
00087     
00088 
00090 
00091     virtual void SetDiffuse(
00092 
00093         const Color &cDiffuse       
00094 
00095         );
00096 
00097     
00098 
00100 
00101     virtual float Intensity( void ) const;
00102 
00103     
00104 
00106 
00107     virtual void SetIntensity(
00108 
00109         float fIntensity        
00110 
00111         );
00112 
00113     
00114 
00116 
00117     virtual bool IsLockedToCamera( void ) const;
00118 
00119     
00120 
00122 
00123     virtual void SetLockedToCamera(
00124 
00125         bool bOnOrOff   
00126 
00127         );
00128 
00129     
00130 
00132 
00133     virtual bool Render( void );
00134 
00135     
00136 
00138 
00139     virtual Manipulator *GetManipulator();
00140 
00141     
00142 
00144 
00145     virtual void ValidateShadowMap();
00146 
00147     
00148 
00150 
00151     virtual Texture *ShadowDepthMap();
00152 
00153     
00154 
00156 
00158 
00160 
00162 
00164 
00166 
00168 
00169     virtual const Matrix &ShadowMatrix() const;
00170 
00171     
00172 
00174 
00175     virtual bool CastShadow();
00176 
00177     
00178 
00180 
00182 
00184 
00186 
00188 
00190 
00192 
00193     virtual float ShadowBias();
00194 
00195     
00196 
00198 
00200 
00202 
00203     virtual LightType Type();
00204 
00205     
00206 
00208 
00210 
00212 
00213     virtual void SetAttenuation(float);
00214 
00215     
00216 
00218 
00220 
00222 
00223     virtual float Attenuation(void) const;
00224 
00225     
00226 
00228 
00230 
00232 
00234 
00236 
00238 
00240 
00241     virtual Matrix LockedToCameraMatrix() const;
00242 
00243     
00244 
00246 
00247     virtual Image *HDRImage() const;
00248 
00249     
00250 
00251     // \brief Returns the path to the associated HDRI image, if any.
00252 
00253     //
00254 
00255     // Returns a NULL pointer if this is not an HDRI light.  If a valid String pointer is returned, you should NOT delete it;
00256 
00257     // it is a pointer into the object data.
00258 
00259     virtual const QString *HDRImageFilename() const;
00260 
00261 };
00262 
00263 
00264 
00265 }; // end of namespace mudbox
00266