VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Rendering/OpenGL/vtkShadowMapPass.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkShadowMapPass.h
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 "vtkRenderingOpenGLModule.h" // For export macro
00047 #include "vtkRenderPass.h"
00048 
00049 class vtkOpenGLRenderWindow;
00050 class vtkInformationIntegerKey;
00051 class vtkCamera;
00052 class vtkLight;
00053 class vtkFrameBufferObject;
00054 class vtkShadowMapPassTextures; // internal
00055 class vtkShadowMapPassLightCameras; // internal
00056 class vtkShaderProgram2;
00057 class vtkImageExport;
00058 class vtkTextureObject;
00059 class vtkImplicitHalo;
00060 class vtkSampleFunction;
00061 class vtkShadowMapBakerPass;
00062 
00063 class VTKRENDERINGOPENGL_EXPORT vtkShadowMapPass : public vtkRenderPass
00064 {
00065 public:
00066   static vtkShadowMapPass *New();
00067   vtkTypeMacro(vtkShadowMapPass,vtkRenderPass);
00068   void PrintSelf(ostream& os, vtkIndent indent);
00069 
00070   //BTX
00072 
00074   virtual void Render(const vtkRenderState *s);
00075   //ETX
00077 
00080   void ReleaseGraphicsResources(vtkWindow *w);
00081 
00083 
00085   vtkGetObjectMacro(ShadowMapBakerPass,vtkShadowMapBakerPass);
00086   virtual void SetShadowMapBakerPass(
00087     vtkShadowMapBakerPass *shadowMapBakerPass);
00089 
00091 
00096   vtkGetObjectMacro(OpaquePass,vtkRenderPass);
00097   virtual void SetOpaquePass(vtkRenderPass *opaquePass);
00099 
00100  protected:
00102   vtkShadowMapPass();
00103 
00105   virtual ~vtkShadowMapPass();
00106 
00108   void BuildSpotLightIntensityMap();
00109 
00112   void CheckSupport(vtkOpenGLRenderWindow *w);
00113 
00114   vtkShadowMapBakerPass *ShadowMapBakerPass;
00115   vtkRenderPass *CompositeRGBAPass;
00116 
00117   vtkRenderPass *OpaquePass;
00118 
00120   vtkFrameBufferObject *FrameBufferObject;
00121 
00122   vtkShadowMapPassTextures *ShadowMaps;
00123   vtkShadowMapPassLightCameras *LightCameras;
00124   vtkShaderProgram2 *Program;
00125 
00126   vtkTextureObject *IntensityMap;
00127 
00128   vtkSampleFunction *IntensitySource;
00129   vtkImageExport *IntensityExporter;
00130   vtkImplicitHalo *Halo;
00131 
00132   vtkTimeStamp LastRenderTime;
00133 
00134 private:
00135   vtkShadowMapPass(const vtkShadowMapPass&);  // Not implemented.
00136   void operator=(const vtkShadowMapPass&);  // Not implemented.
00137 };
00138 
00139 #endif