Commit: fcf8f01ca01a3c6b51014324794ffa0a14960dc4 Author: Porteries Tristan Date: Thu Nov 5 12:34:31 2015 +0100 Branches: master https://developer.blender.org/rBfcf8f01ca01a3c6b51014324794ffa0a14960dc4
BGE: Cleanup occlusion buffer in CcdPhysicsEnvironment.cpp This patch cleanup spaces/braces and newlines. Reviewers: moguri, kupoman Reviewed By: moguri, kupoman Subscribers: kupoman Differential Revision: https://developer.blender.org/D1607 =================================================================== M source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp =================================================================== diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index bf81a18..d7b0436 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -1405,98 +1405,111 @@ struct OcclusionBuffer { struct WriteOCL { - static inline bool Process(btScalar& q,btScalar v) { if (q<v) q=v;return(false); } - static inline void Occlusion(bool& flag) { flag = true; } + static inline bool Process(btScalar &q, btScalar v) + { + if (q < v) { + q = v; + } + return false; + } + static inline void Occlusion(bool &flag) + { + flag = true; + } }; + struct QueryOCL { - static inline bool Process(btScalar& q,btScalar v) { return(q<=v); } - static inline void Occlusion(bool& flag) { } + static inline bool Process(btScalar &q, btScalar v) + { + return (q <= v); + } + static inline void Occlusion(bool &flag) + { + } }; - btScalar* m_buffer; - size_t m_bufferSize; - bool m_initialized; - bool m_occlusion; - int m_sizes[2]; - btScalar m_scales[2]; - btScalar m_offsets[2]; - btScalar m_wtc[16]; // world to clip transform - btScalar m_mtc[16]; // model to clip transform + + btScalar *m_buffer; + size_t m_bufferSize; + bool m_initialized; + bool m_occlusion; + int m_sizes[2]; + btScalar m_scales[2]; + btScalar m_offsets[2]; + btScalar m_wtc[16]; // world to clip transform + btScalar m_mtc[16]; // model to clip transform // constructor: size=largest dimension of the buffer. // Buffer size depends on aspect ratio OcclusionBuffer() { - m_initialized=false; + m_initialized = false; m_occlusion = false; m_buffer = NULL; m_bufferSize = 0; } - // multiplication of column major matrices: m=m1*m2 + // multiplication of column major matrices: m = m1 * m2 template<typename T1, typename T2> - void CMmat4mul(btScalar* m, const T1* m1, const T2* m2) + void CMmat4mul(btScalar *m, const T1 *m1, const T2 *m2) { - m[ 0] = btScalar(m1[ 0]*m2[ 0]+m1[ 4]*m2[ 1]+m1[ 8]*m2[ 2]+m1[12]*m2[ 3]); - m[ 1] = btScalar(m1[ 1]*m2[ 0]+m1[ 5]*m2[ 1]+m1[ 9]*m2[ 2]+m1[13]*m2[ 3]); - m[ 2] = btScalar(m1[ 2]*m2[ 0]+m1[ 6]*m2[ 1]+m1[10]*m2[ 2]+m1[14]*m2[ 3]); - m[ 3] = btScalar(m1[ 3]*m2[ 0]+m1[ 7]*m2[ 1]+m1[11]*m2[ 2]+m1[15]*m2[ 3]); + m[0] = btScalar(m1[0] * m2[0] + m1[4] * m2[1] + m1[8] * m2[2] + m1[12] * m2[3]); + m[1] = btScalar(m1[1] * m2[0] + m1[5] * m2[1] + m1[9] * m2[2] + m1[13] * m2[3]); + m[2] = btScalar(m1[2] * m2[0] + m1[6] * m2[1] + m1[10] * m2[2] + m1[14] * m2[3]); + m[3] = btScalar(m1[3] * m2[0] + m1[7] * m2[1] + m1[11] * m2[2] + m1[15] * m2[3]); - m[ 4] = btScalar(m1[ 0]*m2[ 4]+m1[ 4]*m2[ 5]+m1[ 8]*m2[ 6]+m1[12]*m2[ 7]); - m[ 5] = btScalar(m1[ 1]*m2[ 4]+m1[ 5]*m2[ 5]+m1[ 9]*m2[ 6]+m1[13]*m2[ 7]); - m[ 6] = btScalar(m1[ 2]*m2[ 4]+m1[ 6]*m2[ 5]+m1[10]*m2[ 6]+m1[14]*m2[ 7]); - m[ 7] = btScalar(m1[ 3]*m2[ 4]+m1[ 7]*m2[ 5]+m1[11]*m2[ 6]+m1[15]*m2[ 7]); + m[4] = btScalar(m1[0] * m2[4] + m1[4] * m2[5] + m1[8] * m2[6] + m1[12] * m2[7]); + m[5] = btScalar(m1[1] * m2[4] + m1[5] * m2[5] + m1[9] * m2[6] + m1[13] * m2[7]); + m[6] = btScalar(m1[2] * m2[4] + m1[6] * m2[5] + m1[10] * m2[6] + m1[14] * m2[7]); + m[7] = btScalar(m1[3] * m2[4] + m1[7] * m2[5] + m1[11] * m2[6] + m1[15] * m2[7]); - m[ 8] = btScalar(m1[ 0]*m2[ 8]+m1[ 4]*m2[ 9]+m1[ 8]*m2[10]+m1[12]*m2[11]); - m[ 9] = btScalar(m1[ 1]*m2[ 8]+m1[ 5]*m2[ 9]+m1[ 9]*m2[10]+m1[13]*m2[11]); - m[10] = btScalar(m1[ 2]*m2[ 8]+m1[ 6]*m2[ 9]+m1[10]*m2[10]+m1[14]*m2[11]); - m[11] = btScalar(m1[ 3]*m2[ 8]+m1[ 7]*m2[ 9]+m1[11]*m2[10]+m1[15]*m2[11]); + m[8] = btScalar(m1[0] * m2[8] + m1[4] * m2[9] + m1[8] * m2[10] + m1[12] * m2[11]); + m[9] = btScalar(m1[1] * m2[8] + m1[5] * m2[9] + m1[9] * m2[10] + m1[13] * m2[11]); + m[10] = btScalar(m1[2] * m2[8] + m1[6] * m2[9] + m1[10] * m2[10] + m1[14] * m2[11]); + m[11] = btScalar(m1[3] * m2[8] + m1[7] * m2[9] + m1[11] * m2[10] + m1[15] * m2[11]); - m[12] = btScalar(m1[ 0]*m2[12]+m1[ 4]*m2[13]+m1[ 8]*m2[14]+m1[12]*m2[15]); - m[13] = btScalar(m1[ 1]*m2[12]+m1[ 5]*m2[13]+m1[ 9]*m2[14]+m1[13]*m2[15]); - m[14] = btScalar(m1[ 2]*m2[12]+m1[ 6]*m2[13]+m1[10]*m2[14]+m1[14]*m2[15]); - m[15] = btScalar(m1[ 3]*m2[12]+m1[ 7]*m2[13]+m1[11]*m2[14]+m1[15]*m2[15]); + m[12] = btScalar(m1[0] * m2[12] + m1[4] * m2[13] + m1[8] * m2[14] + m1[12] * m2[15]); + m[13] = btScalar(m1[1] * m2[12] + m1[5] * m2[13] + m1[9] * m2[14] + m1[13] * m2[15]); + m[14] = btScalar(m1[2] * m2[12] + m1[6] * m2[13] + m1[10] * m2[14] + m1[14] * m2[15]); + m[15] = btScalar(m1[3] * m2[12] + m1[7] * m2[13] + m1[11] * m2[14] + m1[15] * m2[15]); } - void setup(int size, const int *view, double modelview[16], double projection[16]) + + void setup(int size, const int *view, double modelview[16], double projection[16]) { - m_initialized=false; - m_occlusion=false; + m_initialized = false; + m_occlusion = false; // compute the size of the buffer - int maxsize; - double ratio; - maxsize = (view[2] > view[3]) ? view[2] : view[3]; + int maxsize = (view[2] > view[3]) ? view[2] : view[3]; assert(maxsize > 0); - ratio = 1.0/(2*maxsize); + double ratio = 1.0 / (2 * maxsize); // ensure even number - m_sizes[0] = 2*((int)(size*view[2]*ratio+0.5)); - m_sizes[1] = 2*((int)(size*view[3]*ratio+0.5)); - m_scales[0]=btScalar(m_sizes[0]/2); - m_scales[1]=btScalar(m_sizes[1]/2); - m_offsets[0]=m_scales[0]+0.5f; - m_offsets[1]=m_scales[1]+0.5f; + m_sizes[0] = 2 * ((int)(size * view[2] * ratio + 0.5)); + m_sizes[1] = 2 * ((int)(size * view[3] * ratio + 0.5)); + m_scales[0] = btScalar(m_sizes[0] / 2); + m_scales[1] = btScalar(m_sizes[1] / 2); + m_offsets[0] = m_scales[0] + 0.5f; + m_offsets[1] = m_scales[1] + 0.5f; // prepare matrix // at this time of the rendering, the modelview matrix is the // world to camera transformation and the projection matrix is // camera to clip transformation. combine both so that CMmat4mul(m_wtc, projection, modelview); } - void initialize() + + void initialize() { - size_t newsize = (m_sizes[0]*m_sizes[1])*sizeof(btScalar); - if (m_buffer) - { + size_t newsize = (m_sizes[0] * m_sizes[1]) * sizeof(btScalar); + if (m_buffer) { // see if we can reuse - if (newsize > m_bufferSize) - { + if (newsize > m_bufferSize) { free(m_buffer); m_buffer = NULL; m_bufferSize = 0; } } - if (!m_buffer) - { - m_buffer = (btScalar*)calloc(1, newsize); + if (!m_buffer) { + m_buffer = (btScalar *)calloc(1, newsize); m_bufferSize = newsize; - } else - { + } + else { // buffer exists already, just clears it memset(m_buffer, 0, newsize); } @@ -1505,163 +1518,169 @@ struct OcclusionBuffer m_initialized = true; m_occlusion = false; } - void SetModelMatrix(double *fl) + + void SetModelMatrix(double *fl) { CMmat4mul(m_mtc,m_wtc,fl); - if (!m_initialized) + if (!m_initialized) { initialize(); + } } // transform a segment in world coordinate to clip coordinate - void transformW(const btVector3& x, btVector4& t) + void transformW(const btVector3 &x, btVector4 &t) { - t[0] = x[0]*m_wtc[0]+x[1]*m_wtc[4]+x[2]*m_wtc[8]+m_wtc[12]; - t[1] = x[0]*m_wtc[1]+x[1]*m_wtc[5]+x[2]*m_wtc[9]+m_wtc[13]; - t[2] = x[0]*m_wtc[2]+x[1]*m_wtc[6]+x[2]*m_wtc[10]+m_wtc[14]; - t[3] = x[0]*m_wtc[3]+x[1]*m_wtc[7]+x[2]*m_wtc[11]+m_wtc[15]; + t[0] = x[0] * m_wtc[0] + x[1] * m_wtc[4] + x[2] * m_wtc[8] + m_wtc[12]; + t[1] = x[0] * m_wtc[1] + x[1] * m_wtc[5] + x[2] * m_wtc[9] + m_wtc[13]; + t[2] = x[0] * m_wtc[2] + x[1] * m_wtc[6] + x[2] * m_wtc[10] + m_wtc[14]; + t[3] = x[0] * m_wtc[3] + x[1] * m_wtc[7] + x[2] * m_wtc[11] + m_wtc[15]; } - void transformM(const float* x, btVector4& t) + + void transformM(const float *x, btVector4 &t) { - t[0] = x[0]*m_mtc[0]+x[1]*m_mtc[4]+x[2]*m_mtc[8]+m_mtc[12]; - t[1] = x[0]*m_mtc[1]+x[1]*m_mtc[5]+x[2]*m_mtc[9]+m_mtc[13]; - t[2] = x[0]*m_mtc[2]+x[1]*m_mtc[6]+x[2]*m_mtc[10]+m_mtc[14]; - t[3] = x[0]*m_mtc[3]+x[1]*m_mtc[7]+x[2]*m_mtc[11]+m_mtc[15]; + t[0] = x[0] * m_mtc[0] + x[1] * m_mtc[4] + x[2] * m_mtc[8] + m_mtc[12]; + t[1] = x[0] * m_mtc[1] + x[1] * m_mtc[5] + x[2] * m_mtc[9] + m_mtc[13]; + t[2] = x[0] * m_mtc[2] + x[1] * m_mtc[6] + x[2] * m_mtc[10] + m_mtc[14]; + t[3] = x[0] * m_mtc[3] + x[1] * m_mtc[7] + x[2] * m_mtc[11] + m_mtc[15]; } // convert polygon to device coordinates - static bool project(btVector4* p,int n) + static bool project(btVector4 *p, int n) { - for (int i=0;i<n;++i) - { - p[i][2]=1/p[i][3]; - p[i][0]*=p[i][2]; - p[i][1]*=p[i][2]; + for (int i = 0; i < n; ++i) { + p[i][2] = 1 / p[i][3]; + p[i][0] *= p[i][2]; + p[i][1] *= p[i][2]; } - return(true); + return true; } // pi: closed polygon in clip coordinate, NP = number of segments // po: same polygon with clipped segments removed template <const int NP> - static int clip(const btVector4* pi,btVector4* po) + static int clip(const btVector4 *pi, btVector4 *po) { - btScalar s[2*NP]; - btVector4 pn[2*NP]; - int i, j, m, n, ni; + btScalar s[2 * NP]; + btVector4 pn[2 * NP]; + int i, j, m, n, ni; // deal with near clipping - for (i=0, m=0;i<NP;++i) - { - s[i]=pi[i][2]+pi[i][3]; - if (s[i]<0) m+=1<<i; + for (i = 0, m = 0; i < NP; ++i) { + s[i] = pi[i][2] + pi[i][3]; + if (s[i] < 0) { + m += 1 << i; + } } - if (m==((1<<NP)-1)) - return(0); - if (m!=0) - { - for (i=NP-1,j=0,n=0;j<NP;i=j++) - { - const btVector4& a=pi[i]; - const btVector4& b=pi[j]; - const btScalar t=s[i]/(a[3]+a[2]-b[3]-b[2]); - if ((t>0)&&(t<1)) - { - pn[n][0] = a[0]+(b[0]-a[0])*t; - pn[n][1] = a[1]+(b[1]-a[1])*t; - pn[n][2] = a[2]+(b[2]-a[2])*t; - pn[n][3] = a[3]+(b[3]-a[3])*t; + if (m == ((1 << NP) - 1)) { + return 0; + } + if (m != 0) { + for (i = NP - 1, j = 0, n = 0; j < NP; i = j++) { + const btVector4 &a = pi[i]; + const btVector4 &b = pi[j]; + const btScalar t = s[i] / (a[3] + a[2] - b[3] - b[2]); + if ((t > 0) && (t < 1)) { + pn[n][0] = a[0] + (b[0] - a[0]) * t; + pn[n][1] = a[1] + (b[1] - a[1]) * t; + pn[n][2] = a[2] + (b[2] - a[2]) * t; + pn[n][3] = @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
