From 0ea5fc66924303d1bf73ba283a383e2aadee02f2 Mon Sep 17 00:00:00 2001 From: neodarz Date: Sat, 11 Aug 2018 20:21:34 +0200 Subject: Initial commit --- docs/doxygen/nel/a04587.html | 675 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 675 insertions(+) create mode 100644 docs/doxygen/nel/a04587.html (limited to 'docs/doxygen/nel/a04587.html') diff --git a/docs/doxygen/nel/a04587.html b/docs/doxygen/nel/a04587.html new file mode 100644 index 00000000..be2c2d3c --- /dev/null +++ b/docs/doxygen/nel/a04587.html @@ -0,0 +1,675 @@ + + +NeL: mesh_mrm_skin_template.cpp File Reference + + + +
+

mesh_mrm_skin_template.cpp File Reference


Detailed Description

+File not compiled. Included from mesh_mrm_skin.cpp. It is a "old school" template.

+

Id
mesh_mrm_skin_template.cpp,v 1.9 2003/12/10 12:47:33 berenguier Exp
+ +

+Definition in file mesh_mrm_skin_template.cpp. +

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + +

Defines

#define NL3D_RAWSKIN_NORMAL_OFF   12
#define NL3D_RAWSKIN_NORMAL_OFF   12
#define NL3D_RAWSKIN_UV_OFF   24
#define NL3D_RAWSKIN_UV_OFF   24
#define NL3D_RAWSKIN_VERTEX_SIZE   32
#define NL3D_RAWSKIN_VERTEX_SIZE   32

Functions

void applyArraySkinNormalT (uint numMatrixes, uint32 *infPtr, CMesh::CSkinWeight *srcSkinPtr, CVector *srcVertexPtr, CVector *srcNormalPtr, uint normalOff, uint8 *destVertexPtr, vector< CMatrix3x4 > &boneMat3x4, uint vertexSize, uint nInf)
void applyArraySkinTangentSpaceT (uint numMatrixes, uint32 *infPtr, CMesh::CSkinWeight *srcSkinPtr, CVector *srcVertexPtr, CVector *srcNormalPtr, CVector *tgSpacePtr, uint normalOff, uint tgSpaceOff, uint8 *destVertexPtr, vector< CMatrix3x4 > &boneMat3x4, uint vertexSize, uint nInf)
+


Define Documentation

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_NORMAL_OFF   12 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 482 of file mesh_mrm_skin_template.cpp.

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_NORMAL_OFF   12 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 482 of file mesh_mrm_skin_template.cpp.

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_UV_OFF   24 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 483 of file mesh_mrm_skin_template.cpp.

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_UV_OFF   24 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 483 of file mesh_mrm_skin_template.cpp.

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_VERTEX_SIZE   32 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 484 of file mesh_mrm_skin_template.cpp.

+

+ + + + +
+ + +
#define NL3D_RAWSKIN_VERTEX_SIZE   32 +
+
+ + + + + +
+   + + +

+ +

+Definition at line 484 of file mesh_mrm_skin_template.cpp.

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void applyArraySkinNormalT uint  numMatrixes,
uint32 infPtr,
CMesh::CSkinWeight *  srcSkinPtr,
CVector *  srcVertexPtr,
CVector *  srcNormalPtr,
uint  normalOff,
uint8 destVertexPtr,
vector< CMatrix3x4 > &  boneMat3x4,
uint  vertexSize,
uint  nInf
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 36 of file mesh_mrm_skin_template.cpp. +

+References index, uint, uint32, and uint8. +

+

00039 {
+00040         /* Prefetch all vertex/normal before, it is to be faster.
+00041         */
+00042 #ifdef NL_OS_WINDOWS
+00043         {
+00044                 uint    nInfTmp= nInf;
+00045                 uint32  *infTmpPtr= infPtr;
+00046                 for(;nInfTmp>0;nInfTmp--, infTmpPtr++)
+00047                 {
+00048                         uint    index= *infTmpPtr;
+00049                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00050                         CVector                         *srcVertex= srcVertexPtr + index;
+00051                         CVector                         *srcNormal= srcNormalPtr + index;
+00052 
+00053                         __asm
+00054                         {
+00055                                 mov eax, srcSkin
+00056                                 mov ebx, srcVertex
+00057                                 mov ecx, srcNormal
+00058                                 mov edx, [eax]
+00059                                 mov edx, [ebx]
+00060                                 mov edx, [ecx]
+00061                         }
+00062 
+00063                 }
+00064         }
+00065 #endif
+00066 
+00067         // Process vertices.
+00068         switch(numMatrixes)
+00069         {
+00070         //=========
+00071         case 0:
+00072                 // Special case for Vertices influenced by one matrix. Just copy result of mul.
+00073                 //  for all InfluencedVertices only.
+00074                 for(;nInf>0;nInf--, infPtr++)
+00075                 {
+00076                         uint    index= *infPtr;
+00077                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00078                         CVector                         *srcVertex= srcVertexPtr + index;
+00079                         CVector                         *srcNormal= srcNormalPtr + index;
+00080                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00081                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00082                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00083 
+00084 
+00085                         // Vertex.
+00086                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, *dstVertex);
+00087                         // Normal.
+00088                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, *dstNormal);
+00089                 }
+00090                 break;
+00091 
+00092         //=========
+00093         case 1:
+00094                 //  for all InfluencedVertices only.
+00095                 for(;nInf>0;nInf--, infPtr++)
+00096                 {
+00097                         uint    index= *infPtr;
+00098                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00099                         CVector                         *srcVertex= srcVertexPtr + index;
+00100                         CVector                         *srcNormal= srcNormalPtr + index;
+00101                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00102                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00103                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00104 
+00105 
+00106                         // Vertex.
+00107                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00108                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00109                         // Normal.
+00110                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00111                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00112                 }
+00113                 break;
+00114 
+00115         //=========
+00116         case 2:
+00117                 //  for all InfluencedVertices only.
+00118                 for(;nInf>0;nInf--, infPtr++)
+00119                 {
+00120                         uint    index= *infPtr;
+00121                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00122                         CVector                         *srcVertex= srcVertexPtr + index;
+00123                         CVector                         *srcNormal= srcNormalPtr + index;
+00124                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00125                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00126                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00127 
+00128 
+00129                         // Vertex.
+00130                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00131                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00132                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddPoint( *srcVertex, srcSkin->Weights[2], *dstVertex);
+00133                         // Normal.
+00134                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00135                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00136                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcNormal, srcSkin->Weights[2], *dstNormal);
+00137                 }
+00138                 break;
+00139 
+00140         //=========
+00141         case 3:
+00142                 //  for all InfluencedVertices only.
+00143                 for(;nInf>0;nInf--, infPtr++)
+00144                 {
+00145                         uint    index= *infPtr;
+00146                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00147                         CVector                         *srcVertex= srcVertexPtr + index;
+00148                         CVector                         *srcNormal= srcNormalPtr + index;
+00149                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00150                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00151                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00152 
+00153 
+00154                         // Vertex.
+00155                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00156                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00157                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddPoint( *srcVertex, srcSkin->Weights[2], *dstVertex);
+00158                         boneMat3x4[ srcSkin->MatrixId[3] ].mulAddPoint( *srcVertex, srcSkin->Weights[3], *dstVertex);
+00159                         // Normal.
+00160                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00161                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00162                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcNormal, srcSkin->Weights[2], *dstNormal);
+00163                         boneMat3x4[ srcSkin->MatrixId[3] ].mulAddVector( *srcNormal, srcSkin->Weights[3], *dstNormal);
+00164                 }
+00165                 break;
+00166 
+00167         }
+00168 }
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void applyArraySkinTangentSpaceT uint  numMatrixes,
uint32 infPtr,
CMesh::CSkinWeight *  srcSkinPtr,
CVector *  srcVertexPtr,
CVector *  srcNormalPtr,
CVector *  tgSpacePtr,
uint  normalOff,
uint  tgSpaceOff,
uint8 destVertexPtr,
vector< CMatrix3x4 > &  boneMat3x4,
uint  vertexSize,
uint  nInf
[static]
+
+ + + + + +
+   + + +

+ +

+Definition at line 173 of file mesh_mrm_skin_template.cpp. +

+References index, uint, uint32, and uint8. +

+

00176 {
+00177         /* Prefetch all vertex/normal/tgSpace before, it is faster.
+00178         */
+00179 #ifdef NL_OS_WINDOWS
+00180         {
+00181                 uint    nInfTmp= nInf;
+00182                 uint32  *infTmpPtr= infPtr;
+00183                 for(;nInfTmp>0;nInfTmp--, infTmpPtr++)
+00184                 {
+00185                         uint    index= *infTmpPtr;
+00186                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00187                         CVector                         *srcVertex= srcVertexPtr + index;
+00188                         CVector                         *srcNormal= srcNormalPtr + index;
+00189                         CVector                         *srcTgSpace= tgSpacePtr + index;
+00190 
+00191                         __asm
+00192                         {
+00193                                 mov eax, srcSkin
+00194                                 mov ebx, srcVertex
+00195                                 mov ecx, srcNormal
+00196                                 mov esi, srcTgSpace
+00197                                 mov edx, [eax]
+00198                                 mov edx, [ebx]
+00199                                 mov edx, [ecx]
+00200                                 mov edx, [esi]
+00201                         }
+00202 
+00203                 }
+00204         }
+00205 #endif
+00206 
+00207         // Process vertices.
+00208         switch(numMatrixes)
+00209         {
+00210         //=========
+00211         case 0:
+00212                 // Special case for Vertices influenced by one matrix. Just copy result of mul.
+00213                 //  for all InfluencedVertices only.
+00214                 for(;nInf>0;nInf--, infPtr++)
+00215                 {
+00216                         uint    index= *infPtr;
+00217                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00218                         CVector                         *srcVertex= srcVertexPtr + index;
+00219                         CVector                         *srcNormal= srcNormalPtr + index;
+00220                         CVector                         *srcTgSpace= tgSpacePtr + index;
+00221                         //
+00222                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00223                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00224                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00225                         CVector                         *dstTgSpace= (CVector*)(dstVertexVB + tgSpaceOff);
+00226 
+00227 
+00228 
+00229                         // Vertex.
+00230                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, *dstVertex);
+00231                         // Normal.                              
+00232                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, *dstNormal);
+00233                         // Tg space
+00234                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcTgSpace, *dstTgSpace);
+00235 
+00236                 }
+00237                 break;
+00238 
+00239         //=========
+00240         case 1:
+00241                 //  for all InfluencedVertices only.
+00242                 for(;nInf>0;nInf--, infPtr++)
+00243                 {
+00244                         uint    index= *infPtr;
+00245                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00246                         CVector                         *srcVertex= srcVertexPtr + index;
+00247                         CVector                         *srcNormal= srcNormalPtr + index;
+00248                         CVector                         *srcTgSpace= tgSpacePtr + index;
+00249                         //
+00250                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00251                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00252                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00253                         CVector                         *dstTgSpace= (CVector*)(dstVertexVB + tgSpaceOff);
+00254 
+00255                         // Vertex.
+00256                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00257                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00258                         // Normal.                              
+00259                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00260                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00261                         // Tg space
+00262                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcTgSpace, srcSkin->Weights[0], *dstTgSpace);
+00263                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcTgSpace, srcSkin->Weights[1], *dstTgSpace);
+00264                 }
+00265                 break;
+00266 
+00267         //=========
+00268         case 2:
+00269                 //  for all InfluencedVertices only.
+00270                 for(;nInf>0;nInf--, infPtr++)
+00271                 {
+00272                         uint    index= *infPtr;
+00273                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00274                         CVector                         *srcVertex= srcVertexPtr + index;
+00275                         CVector                         *srcNormal= srcNormalPtr + index;
+00276                         CVector                         *srcTgSpace= tgSpacePtr + index;
+00277                         //
+00278                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00279                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00280                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00281                         CVector                         *dstTgSpace= (CVector*)(dstVertexVB + tgSpaceOff);
+00282 
+00283                         // Vertex.
+00284                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00285                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00286                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddPoint( *srcVertex, srcSkin->Weights[2], *dstVertex);
+00287                         // Normal.                              
+00288                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00289                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00290                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcNormal, srcSkin->Weights[2], *dstNormal);
+00291                         // Tg space
+00292                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcTgSpace, srcSkin->Weights[0], *dstTgSpace);
+00293                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcTgSpace, srcSkin->Weights[1], *dstTgSpace);                                
+00294                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcTgSpace, srcSkin->Weights[2], *dstTgSpace);                                
+00295                 }
+00296                 break;
+00297 
+00298         //=========
+00299         case 3:
+00300                 //  for all InfluencedVertices only.
+00301                 for(;nInf>0;nInf--, infPtr++)
+00302                 {
+00303                         uint    index= *infPtr;
+00304                         CMesh::CSkinWeight      *srcSkin= srcSkinPtr + index;
+00305                         CVector                         *srcVertex= srcVertexPtr + index;
+00306                         CVector                         *srcNormal= srcNormalPtr + index;
+00307                         CVector                         *srcTgSpace= tgSpacePtr + index;
+00308                         //
+00309                         uint8                           *dstVertexVB= destVertexPtr + index * vertexSize;
+00310                         CVector                         *dstVertex= (CVector*)(dstVertexVB);
+00311                         CVector                         *dstNormal= (CVector*)(dstVertexVB + normalOff);
+00312                         CVector                         *dstTgSpace= (CVector*)(dstVertexVB + tgSpaceOff);
+00313 
+00314                         // Vertex.
+00315                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetPoint( *srcVertex, srcSkin->Weights[0], *dstVertex);
+00316                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddPoint( *srcVertex, srcSkin->Weights[1], *dstVertex);
+00317                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddPoint( *srcVertex, srcSkin->Weights[2], *dstVertex);
+00318                         boneMat3x4[ srcSkin->MatrixId[3] ].mulAddPoint( *srcVertex, srcSkin->Weights[3], *dstVertex);
+00319                         // Normal.                              
+00320                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcNormal, srcSkin->Weights[0], *dstNormal);
+00321                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcNormal, srcSkin->Weights[1], *dstNormal);
+00322                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcNormal, srcSkin->Weights[2], *dstNormal);
+00323                         boneMat3x4[ srcSkin->MatrixId[3] ].mulAddVector( *srcNormal, srcSkin->Weights[3], *dstNormal);
+00324                         // Tg space
+00325                         boneMat3x4[ srcSkin->MatrixId[0] ].mulSetVector( *srcTgSpace, srcSkin->Weights[0], *dstTgSpace);
+00326                         boneMat3x4[ srcSkin->MatrixId[1] ].mulAddVector( *srcTgSpace, srcSkin->Weights[1], *dstTgSpace);                                
+00327                         boneMat3x4[ srcSkin->MatrixId[2] ].mulAddVector( *srcTgSpace, srcSkin->Weights[2], *dstTgSpace);                                                                
+00328                         boneMat3x4[ srcSkin->MatrixId[3] ].mulAddVector( *srcTgSpace, srcSkin->Weights[3], *dstTgSpace);                                                                
+00329                 }
+00330                 break;
+00331 
+00332         }
+00333 
+00334 }
+
+


Generated on Tue Mar 16 06:42:59 2004 for NeL by + +doxygen +1.3.6
+ + -- cgit v1.2.1