00001 00032 #ifndef LL_LLDRAWPOOLAVATAR_H 00033 #define LL_LLDRAWPOOLAVATAR_H 00034 00035 #include "lldrawpool.h" 00036 00037 class LLVOAvatar; 00038 00039 class LLDrawPoolAvatar : public LLFacePool 00040 { 00041 protected: 00042 S32 mNumFaces; 00043 public: 00044 enum 00045 { 00046 SHADER_LEVEL_BUMP = 2, 00047 SHADER_LEVEL_CLOTH = 3 00048 }; 00049 00050 enum 00051 { 00052 VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | 00053 LLVertexBuffer::MAP_NORMAL | 00054 LLVertexBuffer::MAP_TEXCOORD | 00055 LLVertexBuffer::MAP_WEIGHT | 00056 LLVertexBuffer::MAP_CLOTHWEIGHT 00057 }; 00058 00059 virtual U32 getVertexDataMask() { return VERTEX_DATA_MASK; } 00060 00061 virtual S32 getVertexShaderLevel() const; 00062 00063 LLDrawPoolAvatar(); 00064 00065 static LLMatrix4& getModelView(); 00066 00067 /*virtual*/ LLDrawPool *instancePool(); 00068 00069 /*virtual*/ S32 getNumPasses(); 00070 /*virtual*/ void beginRenderPass(S32 pass); 00071 /*virtual*/ void endRenderPass(S32 pass); 00072 /*virtual*/ void prerender(); 00073 /*virtual*/ void render(S32 pass = 0); 00074 /*virtual*/ void renderForSelect(); 00075 00076 void beginRigid(); 00077 void beginFootShadow(); 00078 void beginSkinned(); 00079 00080 void endRigid(); 00081 void endFootShadow(); 00082 void endSkinned(); 00083 00084 /*virtual*/ LLViewerImage *getDebugTexture(); 00085 /*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display 00086 00087 void renderAvatars(LLVOAvatar *single_avatar, S32 pass = -1); // renders only one avatar if single_avatar is not null. 00088 }; 00089 00090 00091 00092 extern S32 AVATAR_OFFSET_POS; 00093 extern S32 AVATAR_OFFSET_NORMAL; 00094 extern S32 AVATAR_OFFSET_TEX0; 00095 extern S32 AVATAR_OFFSET_TEX1; 00096 extern S32 AVATAR_VERTEX_BYTES; 00097 const S32 AVATAR_BUFFER_ELEMENTS = 8192; // Needs to be enough to store all avatar vertices. 00098 00099 extern BOOL gAvatarEmbossBumpMap; 00100 #endif // LL_LLDRAWPOOLAVATAR_H