Skip to content
Snippets Groups Projects
Commit 532e63e9 authored by David Parks's avatar David Parks
Browse files

merge

parents 9bdbc10a 8acc6154
No related branches found
No related tags found
No related merge requests found
...@@ -62,6 +62,7 @@ BOOL LLVertexBuffer::sIBOActive = FALSE; ...@@ -62,6 +62,7 @@ BOOL LLVertexBuffer::sIBOActive = FALSE;
U32 LLVertexBuffer::sAllocatedBytes = 0; U32 LLVertexBuffer::sAllocatedBytes = 0;
BOOL LLVertexBuffer::sMapped = FALSE; BOOL LLVertexBuffer::sMapped = FALSE;
BOOL LLVertexBuffer::sUseStreamDraw = TRUE; BOOL LLVertexBuffer::sUseStreamDraw = TRUE;
S32 LLVertexBuffer::sWeight4Loc = -1;
std::vector<U32> LLVertexBuffer::sDeleteList; std::vector<U32> LLVertexBuffer::sDeleteList;
...@@ -76,6 +77,7 @@ S32 LLVertexBuffer::sTypeOffsets[LLVertexBuffer::TYPE_MAX] = ...@@ -76,6 +77,7 @@ S32 LLVertexBuffer::sTypeOffsets[LLVertexBuffer::TYPE_MAX] =
sizeof(LLColor4U), // TYPE_COLOR, sizeof(LLColor4U), // TYPE_COLOR,
sizeof(LLVector3), // TYPE_BINORMAL, sizeof(LLVector3), // TYPE_BINORMAL,
sizeof(F32), // TYPE_WEIGHT, sizeof(F32), // TYPE_WEIGHT,
sizeof(LLVector4), // TYPE_WEIGHT4,
sizeof(LLVector4), // TYPE_CLOTHWEIGHT, sizeof(LLVector4), // TYPE_CLOTHWEIGHT,
}; };
...@@ -1015,6 +1017,12 @@ bool LLVertexBuffer::getWeightStrider(LLStrider<F32>& strider, S32 index) ...@@ -1015,6 +1017,12 @@ bool LLVertexBuffer::getWeightStrider(LLStrider<F32>& strider, S32 index)
{ {
return VertexBufferStrider<F32,TYPE_WEIGHT>::get(*this, strider, index); return VertexBufferStrider<F32,TYPE_WEIGHT>::get(*this, strider, index);
} }
bool LLVertexBuffer::getWeight4Strider(LLStrider<LLVector4>& strider, S32 index)
{
return VertexBufferStrider<LLVector4,TYPE_WEIGHT4>::get(*this, strider, index);
}
bool LLVertexBuffer::getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index) bool LLVertexBuffer::getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index)
{ {
return VertexBufferStrider<LLVector4,TYPE_CLOTHWEIGHT>::get(*this, strider, index); return VertexBufferStrider<LLVector4,TYPE_CLOTHWEIGHT>::get(*this, strider, index);
...@@ -1284,6 +1292,12 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const ...@@ -1284,6 +1292,12 @@ void LLVertexBuffer::setupVertexBuffer(U32 data_mask) const
{ {
glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, stride, (void*)(base + mOffsets[TYPE_WEIGHT])); glVertexAttribPointerARB(1, 1, GL_FLOAT, FALSE, stride, (void*)(base + mOffsets[TYPE_WEIGHT]));
} }
if (data_mask & MAP_WEIGHT4 && sWeight4Loc != -1)
{
glVertexAttribPointerARB(sWeight4Loc, 4, GL_FLOAT, FALSE, stride, (void*)(base+mOffsets[TYPE_WEIGHT4]));
}
if (data_mask & MAP_CLOTHWEIGHT) if (data_mask & MAP_CLOTHWEIGHT)
{ {
glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE, stride, (void*)(base + mOffsets[TYPE_CLOTHWEIGHT])); glVertexAttribPointerARB(4, 4, GL_FLOAT, TRUE, stride, (void*)(base + mOffsets[TYPE_CLOTHWEIGHT]));
......
...@@ -84,6 +84,8 @@ class LLVertexBuffer : public LLRefCount ...@@ -84,6 +84,8 @@ class LLVertexBuffer : public LLRefCount
static LLVBOPool sStreamIBOPool; static LLVBOPool sStreamIBOPool;
static LLVBOPool sDynamicIBOPool; static LLVBOPool sDynamicIBOPool;
static S32 sWeight4Loc;
static BOOL sUseStreamDraw; static BOOL sUseStreamDraw;
static void initClass(bool use_vbo); static void initClass(bool use_vbo);
...@@ -109,6 +111,7 @@ class LLVertexBuffer : public LLRefCount ...@@ -109,6 +111,7 @@ class LLVertexBuffer : public LLRefCount
// These use VertexAttribPointer and should possibly be made generic // These use VertexAttribPointer and should possibly be made generic
TYPE_BINORMAL, TYPE_BINORMAL,
TYPE_WEIGHT, TYPE_WEIGHT,
TYPE_WEIGHT4,
TYPE_CLOTHWEIGHT, TYPE_CLOTHWEIGHT,
TYPE_MAX, TYPE_MAX,
TYPE_INDEX, TYPE_INDEX,
...@@ -124,6 +127,7 @@ class LLVertexBuffer : public LLRefCount ...@@ -124,6 +127,7 @@ class LLVertexBuffer : public LLRefCount
// These use VertexAttribPointer and should possibly be made generic // These use VertexAttribPointer and should possibly be made generic
MAP_BINORMAL = (1<<TYPE_BINORMAL), MAP_BINORMAL = (1<<TYPE_BINORMAL),
MAP_WEIGHT = (1<<TYPE_WEIGHT), MAP_WEIGHT = (1<<TYPE_WEIGHT),
MAP_WEIGHT4 = (1<<TYPE_WEIGHT4),
MAP_CLOTHWEIGHT = (1<<TYPE_CLOTHWEIGHT), MAP_CLOTHWEIGHT = (1<<TYPE_CLOTHWEIGHT),
}; };
...@@ -173,6 +177,7 @@ class LLVertexBuffer : public LLRefCount ...@@ -173,6 +177,7 @@ class LLVertexBuffer : public LLRefCount
bool getBinormalStrider(LLStrider<LLVector3>& strider, S32 index=0); bool getBinormalStrider(LLStrider<LLVector3>& strider, S32 index=0);
bool getColorStrider(LLStrider<LLColor4U>& strider, S32 index=0); bool getColorStrider(LLStrider<LLColor4U>& strider, S32 index=0);
bool getWeightStrider(LLStrider<F32>& strider, S32 index=0); bool getWeightStrider(LLStrider<F32>& strider, S32 index=0);
bool getWeight4Strider(LLStrider<LLVector4>& strider, S32 index=0);
bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0); bool getClothWeightStrider(LLStrider<LLVector4>& strider, S32 index=0);
BOOL isEmpty() const { return mEmpty; } BOOL isEmpty() const { return mEmpty; }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment