00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkSobelGradientMagnitudePass.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 =========================================================================*/ 00062 #ifndef __vtkSobelGradientMagnitudePass_h 00063 #define __vtkSobelGradientMagnitudePass_h 00064 00065 #include "vtkRenderPass.h" 00066 00067 class vtkOpenGLRenderWindow; 00068 class vtkDepthPeelingPassLayerList; // Pimpl 00069 class vtkShaderProgram2; 00070 class vtkShader2; 00071 class vtkFrameBufferObject; 00072 class vtkTextureObject; 00073 00074 class VTK_RENDERING_EXPORT vtkSobelGradientMagnitudePass : public vtkRenderPass 00075 { 00076 public: 00077 static vtkSobelGradientMagnitudePass *New(); 00078 vtkTypeRevisionMacro(vtkSobelGradientMagnitudePass,vtkRenderPass); 00079 void PrintSelf(ostream& os, vtkIndent indent); 00080 00083 virtual void Render(const vtkRenderState *s); 00084 00087 void ReleaseGraphicsResources(vtkWindow *w); 00088 00090 00094 vtkGetObjectMacro(DelegatePass,vtkRenderPass); 00095 virtual void SetDelegatePass(vtkRenderPass *delegatePass); 00097 00098 protected: 00100 vtkSobelGradientMagnitudePass(); 00101 00103 virtual ~vtkSobelGradientMagnitudePass(); 00104 00105 vtkRenderPass *DelegatePass; 00106 00108 00109 vtkFrameBufferObject *FrameBufferObject; 00110 vtkTextureObject *Pass1; // render target for the scene 00111 vtkTextureObject *Gx1; // render target 0 for the first shader 00112 vtkTextureObject *Gy1; // render target 1 for the first shader 00113 vtkShaderProgram2 *Program1; // shader to compute Gx1 and Gy1 00114 vtkShaderProgram2 *Program2; // shader to compute |G| from Gx1 and Gy1 00116 00117 private: 00118 vtkSobelGradientMagnitudePass(const vtkSobelGradientMagnitudePass&); // Not implemented. 00119 void operator=(const vtkSobelGradientMagnitudePass&); // Not implemented. 00120 }; 00121 00122 #endif