• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

dox/Rendering/vtkShadowMapPass.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkShadowMapPass.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00043 #ifndef __vtkShadowMapPass_h
00044 #define __vtkShadowMapPass_h
00045 
00046 #include "vtkRenderPass.h"
00047 
00048 class vtkOpenGLRenderWindow;
00049 class vtkInformationIntegerKey;
00050 class vtkCamera;
00051 class vtkLight;
00052 class vtkFrameBufferObject;
00053 class vtkShadowMapPassTextures; // internal
00054 class vtkShadowMapPassLightCameras; // internal
00055 class vtkShaderProgram2;
00056 class vtkImageGaussianSource;
00057 class vtkImageExport;
00058 class vtkTextureObject;
00059 class vtkImplicitHalo;
00060 class vtkSampleFunction;
00061 
00062 class VTK_RENDERING_EXPORT vtkShadowMapPass : public vtkRenderPass
00063 {
00064 public:
00065   static vtkShadowMapPass *New();
00066   vtkTypeRevisionMacro(vtkShadowMapPass,vtkRenderPass);
00067   void PrintSelf(ostream& os, vtkIndent indent);
00068 
00072   static vtkInformationIntegerKey *OCCLUDER();
00073   
00074   // If this key exists on the Propertykeys of a prop, the prop is viewed as a
00075   // light/shadow receiver. This key is not mutually exclusive with the
00076   // OCCLUDER() key.
00077   static vtkInformationIntegerKey *RECEIVER();
00078   
00081   virtual void Render(const vtkRenderState *s);
00082   
00085   void ReleaseGraphicsResources(vtkWindow *w);
00086   
00088 
00091   vtkGetObjectMacro(OpaquePass,vtkRenderPass);
00092   virtual void SetOpaquePass(vtkRenderPass *opaquePass);
00094   
00096 
00099   vtkSetMacro(Resolution,unsigned int);
00100   vtkGetMacro(Resolution,unsigned int);
00102   
00104 
00112   vtkSetMacro(PolygonOffsetFactor,float);
00113   vtkGetMacro(PolygonOffsetFactor,float);
00115   
00117 
00126   vtkSetMacro(PolygonOffsetUnits,float);
00127   vtkGetMacro(PolygonOffsetUnits,float);
00129   
00130  protected:
00132   vtkShadowMapPass();
00133 
00135   virtual ~vtkShadowMapPass();
00136 
00141   void BuildCameraLight(vtkLight *light, vtkCamera *camera);
00142   
00144   void BuildSpotLightIntensityMap();
00145   
00148   void CheckSupport(vtkOpenGLRenderWindow *w);
00149   
00150   vtkRenderPass *OpaquePass;
00151   unsigned int Resolution;
00152   
00153   float PolygonOffsetFactor;
00154   float PolygonOffsetUnits;
00155   
00157   vtkFrameBufferObject *FrameBufferObject;
00158   
00159   vtkShadowMapPassTextures *ShadowMaps;
00160   vtkShadowMapPassLightCameras *LightCameras;
00161   vtkShaderProgram2 *Program;
00162   
00163   vtkTextureObject *IntensityMap;
00164   
00165 //  vtkImageGaussianSource *IntensitySource;
00166   vtkSampleFunction *IntensitySource;
00167   vtkImageExport *IntensityExporter;
00168   vtkImplicitHalo *Halo;
00169   
00170   vtkTimeStamp LastRenderTime;
00171   
00172 private:
00173   vtkShadowMapPass(const vtkShadowMapPass&);  // Not implemented.
00174   void operator=(const vtkShadowMapPass&);  // Not implemented.
00175 };
00176 
00177 #endif

Generated by  doxygen 1.7.1