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 static BOOL sNeedsReflectionUpdate; 00053 static BOOL sNeedsDistortionUpdate; 00054 static LLVector3 sLightDir; 00055 00056 static LLColor4 sWaterFogColor; 00057 00058 enum 00059 { 00060 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00061 LLVertexBuffer::MAP_NORMAL | 00062 LLVertexBuffer::MAP_TEXCOORD 00063 }; 00064 00065 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00066 00067 LLDrawPoolWater(); 00068 /*virtual*/ ~LLDrawPoolWater(); 00069 00070 /*virtual*/ LLDrawPool *instancePool(); 00071 static void restoreGL(); 00072 00073 /*virtual*/ S32 getNumPasses(); 00074 /*virtual*/ void render(S32 pass = 0); 00075 /*virtual*/ void renderFaceSelected(LLFace *facep, LLImageGL *image, const LLColor4 &color, 00076 const S32 index_offset = 0, const S32 index_count = 0); 00077 /*virtual*/ void prerender(); 00078 /*virtual*/ void renderForSelect(); 00079 00080 /*virtual*/ LLViewerImage *getDebugTexture(); 00081 /*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display 00082 00083 void renderReflection(LLFace* face); 00084 void shade(); 00085 }; 00086 00087 void cgErrorCallback(); 00088 00089 #endif // LL_LLDRAWPOOLWATER_H