A majority of vectorization done. Note that it's INCOMPLETE. LLVolumeFace and LLVertexBuffer haven't been updated, so it's very dirty(and buggy) at those transitions. Compiles on windoze.
This commit is contained in:
@@ -54,11 +54,16 @@ class LLSpatialPartition;
|
||||
class LLSpatialBridge;
|
||||
class LLSpatialGroup;
|
||||
|
||||
S32 AABBSphereIntersect(const LLVector4a& min, const LLVector4a& max, const LLVector3 &origin, const F32 &rad);
|
||||
S32 AABBSphereIntersectR2(const LLVector4a& min, const LLVector4a& max, const LLVector3 &origin, const F32 &radius_squared);
|
||||
|
||||
S32 AABBSphereIntersect(const LLVector3& min, const LLVector3& max, const LLVector3 &origin, const F32 &rad);
|
||||
S32 AABBSphereIntersectR2(const LLVector3& min, const LLVector3& max, const LLVector3 &origin, const F32 &radius_squared);
|
||||
void pushVerts(LLFace* face, U32 mask);
|
||||
|
||||
// get index buffer for binary encoded axis vertex buffer given a box at center being viewed by given camera
|
||||
U8* get_box_fan_indices_ptr(LLCamera* camera, const LLVector3& center);
|
||||
U32 get_box_fan_indices(LLCamera* camera, const LLVector4a& center);
|
||||
U8* get_box_fan_indices_ptr(LLCamera* camera, const LLVector4a& center);
|
||||
|
||||
class LLDrawInfo : public LLRefCount
|
||||
{
|
||||
@@ -71,6 +76,9 @@ public:
|
||||
BOOL fullbright = FALSE, U8 bump = 0, BOOL particle = FALSE, F32 part_size = 0);
|
||||
|
||||
|
||||
|
||||
LLVector4a mExtents[2];
|
||||
|
||||
LLPointer<LLVertexBuffer> mVertexBuffer;
|
||||
LLPointer<LLViewerTexture> mTexture;
|
||||
LLColor4U mGlowColor;
|
||||
@@ -89,7 +97,6 @@ public:
|
||||
LLSpatialGroup* mGroup;
|
||||
LLFace* mFace; //associated face
|
||||
F32 mDistance;
|
||||
LLVector3 mExtents[2];
|
||||
|
||||
struct CompareTexture
|
||||
{
|
||||
@@ -151,6 +158,7 @@ public:
|
||||
};
|
||||
};
|
||||
|
||||
LL_ALIGN_PREFIX(64)
|
||||
class LLSpatialGroup : public LLOctreeListener<LLDrawable>
|
||||
{
|
||||
friend class LLSpatialPartition;
|
||||
@@ -265,8 +273,8 @@ public:
|
||||
BOOL isVisible() const;
|
||||
BOOL isRecentlyVisible() const;
|
||||
void setVisible();
|
||||
void shift(const LLVector3 &offset);
|
||||
BOOL boundObjects(BOOL empty, LLVector3& newMin, LLVector3& newMax);
|
||||
void shift(const LLVector4a &offset);
|
||||
BOOL boundObjects(BOOL empty, LLVector4a& newMin, LLVector4a& newMax);
|
||||
void unbound();
|
||||
BOOL rebound();
|
||||
void buildOcclusion(); //rebuild mOcclusionVerts
|
||||
@@ -296,13 +304,24 @@ public:
|
||||
virtual void handleChildAddition(const OctreeNode* parent, OctreeNode* child);
|
||||
virtual void handleChildRemoval(const OctreeNode* parent, const OctreeNode* child);
|
||||
|
||||
LLVector3 mBounds[2];
|
||||
LLVector3 mExtents[2];
|
||||
|
||||
LLVector3 mObjectExtents[2];
|
||||
LLVector3 mObjectBounds[2];
|
||||
LLVector3 mViewAngle;
|
||||
LLVector3 mLastUpdateViewAngle;
|
||||
typedef enum
|
||||
{
|
||||
BOUNDS = 0,
|
||||
EXTENTS = 2,
|
||||
OBJECT_BOUNDS = 4,
|
||||
OBJECT_EXTENTS = 6,
|
||||
VIEW_ANGLE = 8,
|
||||
LAST_VIEW_ANGLE = 9,
|
||||
V4_COUNT = 10
|
||||
} eV4Index;
|
||||
|
||||
LLVector4a mBounds[2]; // bounding box (center, size) of this node and all its children (tight fit to objects)
|
||||
LLVector4a mExtents[2]; // extents (min, max) of this node and all its children
|
||||
LLVector4a mObjectExtents[2]; // extents (min, max) of objects in this node
|
||||
LLVector4a mObjectBounds[2]; // bounding box (center, size) of objects in this node
|
||||
LLVector4a mViewAngle;
|
||||
LLVector4a mLastUpdateViewAngle;
|
||||
|
||||
protected:
|
||||
virtual ~LLSpatialGroup();
|
||||
|
||||
@@ -334,7 +353,7 @@ public:
|
||||
|
||||
F32 mPixelArea;
|
||||
F32 mRadius;
|
||||
};
|
||||
} LL_ALIGN_POSTFIX(64);
|
||||
|
||||
inline LLSpatialGroup::eOcclusionState operator|(const LLSpatialGroup::eOcclusionState &a, const LLSpatialGroup::eOcclusionState &b)
|
||||
{
|
||||
@@ -380,7 +399,7 @@ public:
|
||||
|
||||
// If the drawable moves, move it here.
|
||||
virtual void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE);
|
||||
virtual void shift(const LLVector3 &offset);
|
||||
virtual void shift(const LLVector4a &offset);
|
||||
|
||||
virtual F32 calcDistance(LLSpatialGroup* group, LLCamera& camera);
|
||||
virtual F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera);
|
||||
@@ -438,7 +457,7 @@ public:
|
||||
virtual void makeActive();
|
||||
virtual void move(LLDrawable *drawablep, LLSpatialGroup *curp, BOOL immediate = FALSE);
|
||||
virtual BOOL updateMove();
|
||||
virtual void shiftPos(const LLVector3& vec);
|
||||
virtual void shiftPos(const LLVector4a& vec);
|
||||
virtual void cleanupReferences();
|
||||
virtual LLSpatialPartition* asPartition() { return this; }
|
||||
virtual LLSpatialBridge* asBridge() { return this; }
|
||||
@@ -631,7 +650,7 @@ class LLHUDBridge : public LLVolumeBridge
|
||||
{
|
||||
public:
|
||||
LLHUDBridge(LLDrawable* drawablep);
|
||||
virtual void shiftPos(const LLVector3& vec);
|
||||
virtual void shiftPos(const LLVector4a& vec);
|
||||
virtual F32 calcPixelArea(LLSpatialGroup* group, LLCamera& camera);
|
||||
};
|
||||
|
||||
@@ -648,7 +667,7 @@ class LLHUDPartition : public LLBridgePartition
|
||||
{
|
||||
public:
|
||||
LLHUDPartition();
|
||||
virtual void shift(const LLVector3 &offset);
|
||||
virtual void shift(const LLVector4a &offset);
|
||||
};
|
||||
|
||||
void validate_draw_info(LLDrawInfo& params);
|
||||
|
||||
Reference in New Issue
Block a user