00001 00032 #ifndef LL_LLDRAWPOOLALPHA_H 00033 #define LL_LLDRAWPOOLALPHA_H 00034 00035 #include "lldrawpool.h" 00036 #include "llframetimer.h" 00037 00038 class LLFace; 00039 class LLColor4; 00040 class LLGLSLShader; 00041 00042 class LLDrawPoolAlpha: public LLRenderPass 00043 { 00044 public: 00045 enum 00046 { 00047 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00048 LLVertexBuffer::MAP_NORMAL | 00049 LLVertexBuffer::MAP_COLOR | 00050 LLVertexBuffer::MAP_TEXCOORD 00051 }; 00052 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00053 00054 LLDrawPoolAlpha(U32 type = LLDrawPool::POOL_ALPHA); 00055 /*virtual*/ ~LLDrawPoolAlpha(); 00056 00057 /*virtual*/ void beginRenderPass(S32 pass = 0); 00058 /*virtual*/ void endRenderPass( S32 pass ); 00059 /*virtual*/ S32 getNumPasses() { return 1; } 00060 00061 virtual void render(S32 pass = 0); 00062 /*virtual*/ void prerender(); 00063 00064 void renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask, BOOL texture = TRUE); 00065 void renderAlpha(U32 mask); 00066 void renderAlphaHighlight(U32 mask); 00067 00068 static BOOL sShowDebugAlpha; 00069 00070 private: 00071 LLGLSLShader* current_shader; 00072 LLGLSLShader* target_shader; 00073 LLGLSLShader* simple_shader; 00074 LLGLSLShader* fullbright_shader; 00075 }; 00076 00077 class LLDrawPoolAlphaPostWater : public LLDrawPoolAlpha 00078 { 00079 public: 00080 LLDrawPoolAlphaPostWater(); 00081 virtual void render(S32 pass = 0); 00082 }; 00083 00084 #endif // LL_LLDRAWPOOLALPHA_H