00001 00032 #ifndef LL_LLDRAWPOOLWATER_H 00033 #define LL_LLDRAWPOOLWATER_H 00034 00035 #include "lldrawpool.h" 00036 00037 00038 class LLFace; 00039 class LLHeavenBody; 00040 class LLWaterSurface; 00041 00042 class LLDrawPoolWater: public LLFacePool 00043 { 00044 protected: 00045 LLPointer<LLViewerImage> mHBTex[2]; 00046 LLPointer<LLViewerImage> mWaterImagep; 00047 LLPointer<LLViewerImage> mWaterNormp; 00048 00049 const LLWaterSurface *mWaterSurface; 00050 public: 00051 static BOOL sSkipScreenCopy; 00052 enum 00053 { 00054 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00055 LLVertexBuffer::MAP_NORMAL | 00056 LLVertexBuffer::MAP_TEXCOORD 00057 }; 00058 00059 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00060 00061 enum 00062 { 00063 SHADER_LEVEL_RIPPLE = 2, 00064 }; 00065 00066 LLDrawPoolWater(); 00067 /*virtual*/ ~LLDrawPoolWater(); 00068 00069 /*virtual*/ LLDrawPool *instancePool(); 00070 static void restoreGL(); 00071 00072 /*virtual*/ void render(S32 pass = 0); 00073 /*virtual*/ void renderFaceSelected(LLFace *facep, LLImageGL *image, const LLColor4 &color, 00074 const S32 index_offset = 0, const S32 index_count = 0); 00075 /*virtual*/ void prerender(); 00076 /*virtual*/ void renderForSelect(); 00077 00078 /*virtual*/ LLViewerImage *getDebugTexture(); 00079 /*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display 00080 00081 void renderReflection(LLFace* face); 00082 void shade(); 00083 void renderShaderSimple(); 00084 00085 virtual S32 getMaterialAttribIndex() { return 0; } 00086 }; 00087 00088 void cgErrorCallback(); 00089 00090 #endif // LL_LLDRAWPOOLWATER_H