00001 00032 #ifndef LL_LLDRAWPOOLTERRAIN_H 00033 #define LL_LLDRAWPOOLTERRAIN_H 00034 00035 #include "lldrawpool.h" 00036 00037 class LLDrawPoolTerrain : public LLFacePool 00038 { 00039 LLPointer<LLViewerImage> mTexturep; 00040 public: 00041 enum 00042 { 00043 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00044 LLVertexBuffer::MAP_NORMAL | 00045 LLVertexBuffer::MAP_TEXCOORD | 00046 LLVertexBuffer::MAP_TEXCOORD2 | 00047 LLVertexBuffer::MAP_COLOR 00048 }; 00049 00050 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00051 static S32 getDetailMode(); 00052 00053 LLDrawPoolTerrain(LLViewerImage *texturep); 00054 virtual ~LLDrawPoolTerrain(); 00055 00056 /*virtual*/ LLDrawPool *instancePool(); 00057 00058 00059 /*virtual*/ void render(S32 pass = 0); 00060 /*virtual*/ void prerender(); 00061 /*virtual*/ void renderForSelect(); 00062 /*virtual*/ void dirtyTextures(const std::set<LLViewerImage*>& textures); 00063 /*virtual*/ LLViewerImage *getTexture(); 00064 /*virtual*/ LLViewerImage *getDebugTexture(); 00065 /*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display 00066 00067 LLPointer<LLViewerImage> mAlphaRampImagep; 00068 LLPointer<LLViewerImage> m2DAlphaRampImagep; 00069 LLPointer<LLViewerImage> mAlphaNoiseImagep; 00070 00071 virtual S32 getMaterialAttribIndex(); 00072 00073 static S32 sDetailMode; 00074 static F32 sDetailScale; // meters per texture 00075 protected: 00076 void renderSimple(); 00077 void renderOwnership(); 00078 00079 void renderFull2TU(); 00080 void renderFull4TU(); 00081 void renderFull4TUShader(); 00082 }; 00083 00084 #endif // LL_LLDRAWPOOLSIMPLE_H