VTK
|
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