summaryrefslogtreecommitdiff
path: root/indra/newview/lldrawpoolavatar.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lldrawpoolavatar.h')
-rw-r--r--indra/newview/lldrawpoolavatar.h106
1 files changed, 102 insertions, 4 deletions
diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h
index b947943619..4a5b009412 100644
--- a/indra/newview/lldrawpoolavatar.h
+++ b/indra/newview/lldrawpoolavatar.h
@@ -1,4 +1,4 @@
-/**
+ /**
* @file lldrawpoolavatar.h
* @brief LLDrawPoolAvatar class definition
*
@@ -36,6 +36,12 @@
#include "lldrawpool.h"
class LLVOAvatar;
+class LLGLSLShader;
+class LLFace;
+class LLMeshSkinInfo;
+class LLVolume;
+class LLVolumeFace;
+
class LLDrawPoolAvatar : public LLFacePool
{
@@ -88,28 +94,120 @@ public:
/*virtual*/ void renderShadow(S32 pass);
void beginRigid();
- void beginFootShadow();
+ void beginImpostor();
void beginSkinned();
-
+ void beginRiggedSimple();
+ void beginRiggedFullbright();
+ void beginRiggedFullbrightShiny();
+ void beginRiggedShinySimple();
+ void beginRiggedAlpha();
+ void beginRiggedFullbrightAlpha();
+ void beginRiggedGlow();
+ void beginPostDeferredAlpha();
+ void beginDeferredRiggedAlpha();
+
void endRigid();
- void endFootShadow();
+ void endImpostor();
void endSkinned();
+ void endRiggedSimple();
+ void endRiggedFullbright();
+ void endRiggedFullbrightShiny();
+ void endRiggedShinySimple();
+ void endRiggedAlpha();
+ void endRiggedFullbrightAlpha();
+ void endRiggedGlow();
+ void endPostDeferredAlpha();
+ void endDeferredRiggedAlpha();
void beginDeferredImpostor();
void beginDeferredRigid();
void beginDeferredSkinned();
+ void beginDeferredRiggedSimple();
+ void beginDeferredRiggedBump();
void endDeferredImpostor();
void endDeferredRigid();
void endDeferredSkinned();
+ void endDeferredRiggedSimple();
+ void endDeferredRiggedBump();
+ void updateRiggedFaceVertexBuffer(LLFace* facep,
+ const LLMeshSkinInfo* skin,
+ LLVolume* volume,
+ const LLVolumeFace& vol_face);
+
+ void renderRigged(LLVOAvatar* avatar, U32 type, bool glow = false);
+ void renderRiggedSimple(LLVOAvatar* avatar);
+ void renderRiggedAlpha(LLVOAvatar* avatar);
+ void renderRiggedFullbrightAlpha(LLVOAvatar* avatar);
+ void renderRiggedFullbright(LLVOAvatar* avatar);
+ void renderRiggedShinySimple(LLVOAvatar* avatar);
+ void renderRiggedFullbrightShiny(LLVOAvatar* avatar);
+ void renderRiggedGlow(LLVOAvatar* avatar);
+ void renderDeferredRiggedSimple(LLVOAvatar* avatar);
+ void renderDeferredRiggedBump(LLVOAvatar* avatar);
+
/*virtual*/ LLViewerTexture *getDebugTexture();
/*virtual*/ LLColor3 getDebugColor() const; // For AGP debug display
void renderAvatars(LLVOAvatar *single_avatar, S32 pass = -1); // renders only one avatar if single_avatar is not null.
+ typedef enum
+ {
+ RIGGED_SIMPLE = 0,
+ RIGGED_FULLBRIGHT,
+ RIGGED_SHINY,
+ RIGGED_FULLBRIGHT_SHINY,
+ RIGGED_GLOW,
+ RIGGED_ALPHA,
+ RIGGED_FULLBRIGHT_ALPHA,
+ RIGGED_DEFERRED_BUMP,
+ RIGGED_DEFERRED_SIMPLE,
+ NUM_RIGGED_PASSES,
+ RIGGED_UNKNOWN,
+ } eRiggedPass;
+
+ typedef enum
+ {
+ RIGGED_SIMPLE_MASK = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_NORMAL |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_WEIGHT4,
+ RIGGED_FULLBRIGHT_MASK = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_WEIGHT4,
+ RIGGED_SHINY_MASK = RIGGED_SIMPLE_MASK,
+ RIGGED_FULLBRIGHT_SHINY_MASK = RIGGED_SIMPLE_MASK,
+ RIGGED_GLOW_MASK = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_WEIGHT4,
+ RIGGED_ALPHA_MASK = RIGGED_SIMPLE_MASK,
+ RIGGED_FULLBRIGHT_ALPHA_MASK = RIGGED_FULLBRIGHT_MASK,
+ RIGGED_DEFERRED_BUMP_MASK = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_NORMAL |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_BINORMAL |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_WEIGHT4,
+ RIGGED_DEFERRED_SIMPLE_MASK = LLVertexBuffer::MAP_VERTEX |
+ LLVertexBuffer::MAP_NORMAL |
+ LLVertexBuffer::MAP_TEXCOORD0 |
+ LLVertexBuffer::MAP_COLOR |
+ LLVertexBuffer::MAP_WEIGHT4,
+ } eRiggedDataMask;
+
+ void addRiggedFace(LLFace* facep, U32 type);
+ void removeRiggedFace(LLFace* facep);
+
+ std::vector<LLFace*> mRiggedFace[NUM_RIGGED_PASSES];
+
static BOOL sSkipOpaque;
static BOOL sSkipTransparent;
+ static S32 sDiffuseChannel;
+
+ static LLGLSLShader* sVertexProgram;
};
class LLVertexBufferAvatar : public LLVertexBuffer