00001 00002 #ifndef __PAINTERPIXELSHADER_H 00003 #define __PAINTERPIXELSHADER_H 00004 00005 #include <Cg/cg.h> 00006 #include <Cg/cgGL.h> 00007 00008 #include "Vector.h" 00009 00010 #include "Mesh.h" 00011 #include "Triangle.h" 00012 00013 #include "Painter.h" 00014 00015 class PainterPixelShader: public Painter { 00016 private: 00018 const CGprofile& m_CgProfile; 00020 const CGprogram& m_CgProgram; 00021 00022 int m_lightHandle; 00023 00024 mutable bool m_extrude; 00025 float m_extrusionFactor; 00026 00091 void paintShadowVolume(const Model& model, const Vector& eye, const Vector& light) const; 00092 00093 public: 00094 PainterPixelShader(const CGprofile& cgProfile, const CGprogram& cgProgram, int lightHandle); 00095 00096 virtual void paintModel(const Model& model, const Vector& eye, const Vector& light) const; 00097 00098 virtual void paintMesh(const Mesh& mesh, const Vector& eye, const Vector& light) const; 00099 }; 00100 00101 #endif // __PAINTERPIXELSHADER_H