VTK
dox/Rendering/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 "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 class vtkShadowMapBakerPass;
00062 
00063 class VTK_RENDERING_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 //  vtkImageGaussianSource *IntensitySource;
00129   vtkSampleFunction *IntensitySource;
00130   vtkImageExport *IntensityExporter;
00131   vtkImplicitHalo *Halo;
00132 
00133   vtkTimeStamp LastRenderTime;
00134 
00135 private:
00136   vtkShadowMapPass(const vtkShadowMapPass&);  // Not implemented.
00137   void operator=(const vtkShadowMapPass&);  // Not implemented.
00138 };
00139 
00140 #endif