diff options
Diffstat (limited to 'indra/llmath')
| -rw-r--r-- | indra/llmath/llmatrix4a.h | 16 | 
1 files changed, 15 insertions, 1 deletions
| diff --git a/indra/llmath/llmatrix4a.h b/indra/llmath/llmatrix4a.h index d141298f69..72b61e2a74 100644 --- a/indra/llmath/llmatrix4a.h +++ b/indra/llmath/llmatrix4a.h @@ -121,7 +121,7 @@ public:  		res.add(z);  	} -	inline void affineTransform(const LLVector4a& v, LLVector4a& res) +	inline void affineTransformSSE(const LLVector4a& v, LLVector4a& res)  	{  		LLVector4a x,y,z; @@ -137,6 +137,20 @@ public:  		z.add(mMatrix[3]);  		res.setAdd(x,z);  	} + +    inline void affineTransformNonSSE(const LLVector4a& v, LLVector4a& res) +    { +        F32 x = v[0] * mMatrix[0][0] + v[1] * mMatrix[1][0] + v[2] * mMatrix[2][0] + mMatrix[3][0]; +        F32 y = v[0] * mMatrix[0][1] + v[1] * mMatrix[1][1] + v[2] * mMatrix[2][1] + mMatrix[3][1]; +        F32 z = v[0] * mMatrix[0][2] + v[1] * mMatrix[1][2] + v[2] * mMatrix[2][2] + mMatrix[3][2]; +        F32 w = 1.0f; +        res.set(x,y,z,w); +    } + +	inline void affineTransform(const LLVector4a& v, LLVector4a& res) +    { +        affineTransformNonSSE(v,res); +    }  };  #endif | 
