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

dox/Rendering/vtkShader.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkShader.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 =========================================================================*/
00015 /*
00016  * Copyright 2003 Sandia Corporation.
00017  * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00018  * license for use of this work by or on behalf of the
00019  * U.S. Government. Redistribution and use in source and binary forms, with
00020  * or without modification, are permitted provided that this Notice and any
00021  * statement of authorship are reproduced on all copies.
00022  */
00023 
00042 #ifndef __vtkShader_h
00043 #define __vtkShader_h
00044 
00045 #include "vtkObject.h"
00046 
00047 class vtkActor;
00048 class vtkCamera;
00049 class vtkLight;
00050 class vtkProperty;
00051 class vtkRenderer;
00052 class vtkShaderInternals;
00053 class vtkTexture;
00054 class vtkWindow;
00055 class vtkXMLDataElement;
00056 class vtkXMLShader;
00057 
00058 class VTK_RENDERING_EXPORT vtkShader : public vtkObject
00059 {
00060 public:
00061   vtkTypeRevisionMacro(vtkShader, vtkObject);
00062   virtual void PrintSelf(ostream &os, vtkIndent indent);
00063 
00068   virtual int Compile() =0;
00069 
00073   virtual void PassShaderVariables(vtkActor* actor, vtkRenderer* ren);
00074 
00078   virtual void  Bind() { }
00079 
00082   virtual void Unbind() { }
00083 
00087   virtual void ReleaseGraphicsResources(vtkWindow *) { }
00088   
00090 
00092   void SetXMLShader(vtkXMLShader*);
00093   vtkGetObjectMacro(XMLShader, vtkXMLShader);
00095 
00097   int HasShaderVariable(const char* name);
00098 
00100 
00103   void AddShaderVariable(const char* name, int num_of_elements,
00104     const int *values);
00105   void AddShaderVariable(const char* name, int num_of_elements,
00106     const float *values);
00107   void AddShaderVariable(const char* name, int num_of_elements,
00108     const double *values);
00110 
00113   int GetShaderVariableSize(const char* name);
00114 
00117   int GetShaderVariableType(const char* name);
00118   
00120 
00123   int GetShaderVariable(const char* name, int* values);
00124   int GetShaderVariable(const char* name, float* values);
00125   int GetShaderVariable(const char* name, double* values);
00127 
00130   int GetScope();
00131 protected:
00132   vtkShader();
00133   ~vtkShader();
00134 
00135   vtkXMLShader* XMLShader;
00136   vtkShaderInternals* Internals;
00137 
00138   //BTX
00139   enum MatrixOrders
00140     {
00141     RowMajor,
00142     ColumnMajor
00143     };
00144   //ETX
00145 
00147 
00149   virtual void SetShaderParameters(vtkActor*, vtkRenderer*,
00150                                    vtkXMLDataElement*);
00152   
00153   
00155   void SetUniformParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00156 
00158   void SetCameraParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00159 
00161   void SetPropertyParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00162 
00164   void SetLightParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00165 
00167   void SetMatrixParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00168 
00170   void SetSamplerParameter(vtkActor*, vtkRenderer*, vtkXMLDataElement*);
00171 
00173   void SetApplicationParameter(vtkXMLDataElement*);
00174 
00176 
00178   virtual void SetUniformParameter(const char* name, int numValues, 
00179     const int* value) =0;
00180   virtual void SetUniformParameter(const char* name, int numValues, 
00181     const float* value)=0;
00182   virtual void SetUniformParameter(const char* name, int numValues, 
00183     const double* value)=0;
00185 
00187 
00189   virtual void SetMatrixParameter(const char* name, int numValues, 
00190     int order, const float* value)=0;
00191   virtual void SetMatrixParameter(const char* name, int numValues, 
00192     int order, const double* value)=0;
00193   virtual void SetMatrixParameter(const char* name, const char* state_matix_type,
00194     const char* transform_type)=0;
00196 
00197 
00199 
00204   virtual void SetSamplerParameter(const char* name, vtkTexture* texture,
00205                                    int textureIndex)=0;
00207  
00208   vtkTimeStamp PassShaderVariablesTime;
00209 private:
00210   vtkShader(const vtkShader&); // Not Implemented
00211   void operator=(const vtkShader&); // Not Implemented
00212 };
00213 #endif //__vtkShader_h

Generated by  doxygen 1.7.1