]> gitweb.factorcode.org Git - factor.git/blob - basis/windows/directx/d3dx9mesh/d3dx9mesh.factor
use radix literals
[factor.git] / basis / windows / directx / d3dx9mesh / d3dx9mesh.factor
1 USING: alien.syntax alien.c-types windows.directx.d3d9types math
2 classes.struct windows.types windows.com.syntax windows.com windows.directx
3 windows.directx.d3d9 windows.directx.d3dx9core windows.directx.d3dx9math
4 windows.directx.d3dx9xof ;
5 IN: windows.directx.d3dx9mesh
6
7 LIBRARY: d3dx9
8
9 TYPEDEF: int D3DXPATCHMESHTYPE
10 CONSTANT: D3DXPATCHMESH_RECT   1
11 CONSTANT: D3DXPATCHMESH_TRI    2
12 CONSTANT: D3DXPATCHMESH_NPATCH 3
13 CONSTANT: D3DXPATCHMESH_FORCE_DWORD 0x7fffffff
14
15 TYPEDEF: int D3DXMESH
16 CONSTANT: D3DXMESH_32BIT                  0x001
17 CONSTANT: D3DXMESH_DONOTCLIP              0x002
18 CONSTANT: D3DXMESH_POINTS                 0x004
19 CONSTANT: D3DXMESH_RTPATCHES              0x008
20 CONSTANT: D3DXMESH_NPATCHES               0x4000
21 CONSTANT: D3DXMESH_VB_SYSTEMMEM           0x010
22 CONSTANT: D3DXMESH_VB_MANAGED             0x020
23 CONSTANT: D3DXMESH_VB_WRITEONLY           0x040
24 CONSTANT: D3DXMESH_VB_DYNAMIC             0x080
25 CONSTANT: D3DXMESH_VB_SOFTWAREPROCESSING  0x8000
26 CONSTANT: D3DXMESH_IB_SYSTEMMEM           0x100
27 CONSTANT: D3DXMESH_IB_MANAGED             0x200
28 CONSTANT: D3DXMESH_IB_WRITEONLY           0x400
29 CONSTANT: D3DXMESH_IB_DYNAMIC             0x800
30 CONSTANT: D3DXMESH_IB_SOFTWAREPROCESSING  0x10000
31 CONSTANT: D3DXMESH_VB_SHARE               0x1000
32 CONSTANT: D3DXMESH_USEHWONLY              0x2000
33 CONSTANT: D3DXMESH_SYSTEMMEM              0x110
34 CONSTANT: D3DXMESH_MANAGED                0x220
35 CONSTANT: D3DXMESH_WRITEONLY              0x440
36 CONSTANT: D3DXMESH_DYNAMIC                0x880
37 CONSTANT: D3DXMESH_SOFTWAREPROCESSING     0x18000
38
39 TYPEDEF: int D3DXPATCHMESH
40 CONSTANT: D3DXPATCHMESH_DEFAULT 0
41
42 TYPEDEF: int D3DXMESHSIMP
43 CONSTANT: D3DXMESHSIMP_VERTEX   1
44 CONSTANT: D3DXMESHSIMP_FACE     2
45
46 TYPEDEF: int D3DXCLEANTYPE
47 CONSTANT: D3DXCLEAN_BACKFACING     1
48 CONSTANT: D3DXCLEAN_BOWTIES        2
49 CONSTANT: D3DXCLEAN_SKINNING       1
50 CONSTANT: D3DXCLEAN_OPTIMIZATION   1
51 CONSTANT: D3DXCLEAN_SIMPLIFICATION 3
52
53 : MAX_FVF_DECL_SIZE ( -- n ) MAXD3DDECLLENGTH 1 + ; inline
54
55 TYPEDEF: int D3DXTANGENT
56 CONSTANT: D3DXTANGENT_WRAP_U                  0x01
57 CONSTANT: D3DXTANGENT_WRAP_V                  0x02
58 CONSTANT: D3DXTANGENT_WRAP_UV                 0x03
59 CONSTANT: D3DXTANGENT_DONT_NORMALIZE_PARTIALS 0x04
60 CONSTANT: D3DXTANGENT_DONT_ORTHOGONALIZE      0x08
61 CONSTANT: D3DXTANGENT_ORTHOGONALIZE_FROM_V    0x010
62 CONSTANT: D3DXTANGENT_ORTHOGONALIZE_FROM_U    0x020
63 CONSTANT: D3DXTANGENT_WEIGHT_BY_AREA          0x040
64 CONSTANT: D3DXTANGENT_WEIGHT_EQUAL            0x080
65 CONSTANT: D3DXTANGENT_WIND_CW                 0x0100
66 CONSTANT: D3DXTANGENT_CALCULATE_NORMALS       0x0200
67 CONSTANT: D3DXTANGENT_GENERATE_IN_PLACE       0x0400
68
69 TYPEDEF: int D3DXIMT
70 CONSTANT: D3DXIMT_WRAP_U  0x01
71 CONSTANT: D3DXIMT_WRAP_V  0x02
72 CONSTANT: D3DXIMT_WRAP_UV 0x03
73
74 TYPEDEF: int D3DXUVATLAS
75 CONSTANT: D3DXUVATLAS_DEFAULT               0x00
76 CONSTANT: D3DXUVATLAS_GEODESIC_FAST         0x01
77 CONSTANT: D3DXUVATLAS_GEODESIC_QUALITY      0x02
78
79 C-TYPE: ID3DXBaseMesh
80 TYPEDEF: ID3DXBaseMesh* LPD3DXBASEMESH
81 C-TYPE: ID3DXMesh
82 TYPEDEF: ID3DXMesh* LPD3DXMESH
83 C-TYPE: ID3DXPMesh
84 TYPEDEF: ID3DXPMesh* LPD3DXPMESH
85 C-TYPE: ID3DXSPMesh
86 TYPEDEF: ID3DXSPMesh* LPD3DXSPMESH
87 C-TYPE: ID3DXSkinInfo
88 TYPEDEF: ID3DXSkinInfo* LPD3DXSKININFO
89 C-TYPE: ID3DXPatchMesh
90 TYPEDEF: ID3DXPatchMesh* LPD3DXPATCHMESH
91 C-TYPE: ID3DXTextureGutterHelper
92 TYPEDEF: ID3DXTextureGutterHelper* LPD3DXTEXTUREGUTTERHELPER
93 C-TYPE: ID3DXPRTBuffer
94 TYPEDEF: ID3DXPRTBuffer* LPD3DXPRTBUFFER
95
96 STRUCT: D3DXATTRIBUTERANGE
97     { AttribId    DWORD }
98     { FaceStart   DWORD }
99     { FaceCount   DWORD }
100     { VertexStart DWORD }
101     { VertexCount DWORD } ;
102 TYPEDEF: D3DXATTRIBUTERANGE* LPD3DXATTRIBUTERANGE
103
104 STRUCT: D3DXMATERIAL
105     { MatD3D           D3DMATERIAL9 }
106     { pTextureFilename LPSTR        } ;
107 TYPEDEF: D3DXMATERIAL* LPD3DXMATERIAL
108
109 TYPEDEF: int D3DXEFFECTDEFAULTTYPE
110 CONSTANT: D3DXEDT_STRING     0x1
111 CONSTANT: D3DXEDT_FLOATS     0x2
112 CONSTANT: D3DXEDT_DWORD      0x3
113 CONSTANT: D3DXEDT_FORCEDWORD 0x7fffffff
114
115 STRUCT: D3DXEFFECTDEFAULT
116     { pParamName    LPSTR                 }
117     { Type          D3DXEFFECTDEFAULTTYPE }
118     { NumBytes      DWORD                 }
119     { pValue        LPVOID                } ;
120 TYPEDEF: D3DXEFFECTDEFAULT* LPD3DXEFFECTDEFAULT
121
122 STRUCT: D3DXEFFECTINSTANCE
123     { pEffectFilename               LPSTR               }
124     { NumDefaults                   DWORD               }
125     { pDefaults                     LPD3DXEFFECTDEFAULT } ;
126 TYPEDEF: D3DXEFFECTINSTANCE* LPD3DXEFFECTINSTANCE
127
128 STRUCT: D3DXATTRIBUTEWEIGHTS
129     { Position FLOAT    }
130     { Boundary FLOAT    }
131     { Normal   FLOAT    }
132     { Diffuse  FLOAT    }
133     { Specular FLOAT    }
134     { Texcoord FLOAT[8] }
135     { Tangent  FLOAT    }
136     { Binormal FLOAT    } ;
137 TYPEDEF: D3DXATTRIBUTEWEIGHTS* LPD3DXATTRIBUTEWEIGHTS
138
139 CONSTANT: D3DXWELDEPSILONS_WELDALL             0x1
140 CONSTANT: D3DXWELDEPSILONS_WELDPARTIALMATCHES  0x2
141 CONSTANT: D3DXWELDEPSILONS_DONOTREMOVEVERTICES 0x4
142 CONSTANT: D3DXWELDEPSILONS_DONOTSPLIT          0x8
143
144 STRUCT: D3DXWELDEPSILONS
145     { Position     FLOAT    }
146     { BlendWeights FLOAT    }
147     { Normal       FLOAT    }
148     { PSize        FLOAT    }
149     { Specular     FLOAT    }
150     { Diffuse      FLOAT    }
151     { Texcoord     FLOAT[8] }
152     { Tangent      FLOAT    }
153     { Binormal     FLOAT    }
154     { TessFactor   FLOAT    } ;
155 TYPEDEF: D3DXWELDEPSILONS* LPD3DXWELDEPSILONS
156
157 COM-INTERFACE: ID3DXBaseMesh IUnknown {7ED943DD-52E8-40b5-A8D8-76685C406330}
158     HRESULT DrawSubset ( DWORD AttribId )
159     DWORD GetNumFaces ( )
160     DWORD GetNumVertices ( )
161     DWORD GetFVF ( )
162     HRESULT GetDeclaration ( D3DVERTEXELEMENT9* Declaration )
163     DWORD GetNumBytesPerVertex ( )
164     DWORD GetOptions ( )
165     HRESULT GetDevice ( LPDIRECT3DDEVICE9* ppDevice )
166     HRESULT CloneMeshFVF ( DWORD Options, DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXMESH* ppCloneMesh )
167     HRESULT CloneMesh ( DWORD Options, D3DVERTEXELEMENT9* pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXMESH* ppCloneMesh )
168     HRESULT GetVertexBuffer ( LPDIRECT3DVERTEXBUFFER9* ppVB )
169     HRESULT GetIndexBuffer ( LPDIRECT3DINDEXBUFFER9* ppIB )
170     HRESULT LockVertexBuffer ( DWORD Flags, LPVOID* ppData )
171     HRESULT UnlockVertexBuffer ( )
172     HRESULT LockIndexBuffer ( DWORD Flags, LPVOID* ppData )
173     HRESULT UnlockIndexBuffer ( )
174     HRESULT GetAttributeTable ( D3DXATTRIBUTERANGE* pAttribTable, DWORD* pAttribTableSize )
175     HRESULT ConvertPointRepsToAdjacency ( DWORD* pPRep, DWORD* pAdjacency )
176     HRESULT ConvertAdjacencyToPointReps ( DWORD* pAdjacency, DWORD* pPRep )
177     HRESULT GenerateAdjacency ( FLOAT Epsilon, DWORD* pAdjacency )
178     HRESULT UpdateSemantics ( D3DVERTEXELEMENT9* Declaration ) ;
179
180 C-TYPE: IStream
181
182 COM-INTERFACE: ID3DXMesh ID3DXBaseMesh {4020E5C2-1403-4929-883F-E2E849FAC195}
183     HRESULT LockAttributeBuffer ( DWORD Flags, DWORD** ppData )
184     HRESULT UnlockAttributeBuffer ( )
185     HRESULT Optimize ( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
186                        DWORD* pFaceRemap, LPD3DXBUFFER* ppVertexRemap,
187                        LPD3DXMESH* ppOptMesh )
188     HRESULT OptimizeInplace ( DWORD Flags, DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
189                               DWORD* pFaceRemap, LPD3DXBUFFER* ppVertexRemap )
190     HRESULT SetAttributeTable ( D3DXATTRIBUTERANGE* pAttribTable, DWORD cAttribTableSize ) ;
191
192 COM-INTERFACE: ID3DXPMesh ID3DXBaseMesh {8875769A-D579-4088-AAEB-534D1AD84E96}
193     HRESULT ClonePMeshFVF ( DWORD Options,
194                             DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXPMESH* ppCloneMesh )
195     HRESULT ClonePMesh ( DWORD Options,
196                          D3DVERTEXELEMENT9* pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXPMESH* ppCloneMesh )
197     HRESULT SetNumFaces ( DWORD Faces )
198     HRESULT SetNumVertices ( DWORD Vertices )
199     DWORD GetMaxFaces ( )
200     DWORD GetMinFaces ( )
201     DWORD GetMaxVertices ( )
202     DWORD GetMinVertices ( )
203     HRESULT Save ( IStream* pStream, D3DXMATERIAL* pMaterials, D3DXEFFECTINSTANCE* pEffectInstances, DWORD NumMaterials )
204     HRESULT Optimize ( DWORD Flags, DWORD* pAdjacencyOut,
205                        DWORD* pFaceRemap, LPD3DXBUFFER* ppVertexRemap,
206                        LPD3DXMESH* ppOptMesh )
207     HRESULT OptimizeBaseLOD ( DWORD Flags, DWORD* pFaceRemap )
208     HRESULT TrimByFaces ( DWORD NewFacesMin, DWORD NewFacesMax, DWORD* rgiFaceRemap, DWORD* rgiVertRemap )
209     HRESULT TrimByVertices ( DWORD NewVerticesMin, DWORD NewVerticesMax, DWORD* rgiFaceRemap, DWORD* rgiVertRemap )
210     HRESULT GetAdjacency ( DWORD* pAdjacency )
211     HRESULT GenerateVertexHistory ( DWORD* pVertexHistory ) ;
212
213 COM-INTERFACE: ID3DXSPMesh IUnknown {667EA4C7-F1CD-4386-B523-7C0290B83CC5}
214     DWORD GetNumFaces ( )
215     DWORD GetNumVertices ( )
216     DWORD GetFVF ( )
217     HRESULT GetDeclaration ( D3DVERTEXELEMENT9* Declaration )
218     DWORD GetOptions ( )
219     HRESULT GetDevice ( LPDIRECT3DDEVICE9* ppDevice )
220     HRESULT CloneMeshFVF ( DWORD Options,
221                            DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, DWORD* pAdjacencyOut, DWORD* pVertexRemapOut, LPD3DXMESH* ppCloneMesh )
222     HRESULT CloneMesh ( DWORD Options,
223                         D3DVERTEXELEMENT9* pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, DWORD* pAdjacencyOut, DWORD* pVertexRemapOut, LPD3DXMESH* ppCloneMesh )
224     HRESULT ClonePMeshFVF ( DWORD Options,
225                             DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, DWORD* pVertexRemapOut, FLOAT* pErrorsByFace, LPD3DXPMESH* ppCloneMesh )
226     HRESULT ClonePMesh ( DWORD Options,
227                          D3DVERTEXELEMENT9* pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, DWORD* pVertexRemapOut, FLOAT* pErrorsbyFace, LPD3DXPMESH* ppCloneMesh )
228     HRESULT ReduceFaces ( DWORD Faces )
229     HRESULT ReduceVertices ( DWORD Vertices )
230     DWORD GetMaxFaces ( )
231     DWORD GetMaxVertices ( )
232     HRESULT GetVertexAttributeWeights ( LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights )
233     HRESULT GetVertexWeights ( FLOAT* pVertexWeights ) ;
234
235 CONSTANT: D3DXMESHOPT_COMPACT           0x01000000
236 CONSTANT: D3DXMESHOPT_ATTRSORT          0x02000000
237 CONSTANT: D3DXMESHOPT_VERTEXCACHE       0x04000000
238 CONSTANT: D3DXMESHOPT_STRIPREORDER      0x08000000
239 CONSTANT: D3DXMESHOPT_IGNOREVERTS       0x10000000
240 CONSTANT: D3DXMESHOPT_DONOTSPLIT        0x20000000
241 CONSTANT: D3DXMESHOPT_DEVICEINDEPENDENT 0x00400000
242
243 STRUCT: D3DXBONECOMBINATION
244     { AttribId    DWORD  }
245     { FaceStart   DWORD  }
246     { FaceCount   DWORD  }
247     { VertexStart DWORD  }
248     { VertexCount DWORD  }
249     { BoneId      DWORD* } ;
250 TYPEDEF: D3DXBONECOMBINATION* LPD3DXBONECOMBINATION
251
252 STRUCT: D3DXPATCHINFO
253     { PatchType D3DXPATCHMESHTYPE }
254     { Degree    D3DDEGREETYPE     }
255     { Basis     D3DBASISTYPE      } ;
256 TYPEDEF: D3DXPATCHINFO* LPD3DXPATCHINFO
257
258 COM-INTERFACE: ID3DXPatchMesh IUnknown {3CE6CC22-DBF2-44f4-894D-F9C34A337139}
259     DWORD GetNumPatches ( )
260     DWORD GetNumVertices ( )
261     HRESULT GetDeclaration ( D3DVERTEXELEMENT9* Declaration )
262     DWORD GetControlVerticesPerPatch ( )
263     DWORD GetOptions ( )
264     HRESULT GetDevice ( LPDIRECT3DDEVICE9* ppDevice )
265     HRESULT GetPatchInfo ( LPD3DXPATCHINFO PatchInfo )
266     HRESULT GetVertexBuffer ( LPDIRECT3DVERTEXBUFFER9* ppVB )
267     HRESULT GetIndexBuffer ( LPDIRECT3DINDEXBUFFER9* ppIB )
268     HRESULT LockVertexBuffer ( DWORD flags, LPVOID* ppData )
269     HRESULT UnlockVertexBuffer ( )
270     HRESULT LockIndexBuffer ( DWORD flags, LPVOID* ppData )
271     HRESULT UnlockIndexBuffer ( )
272     HRESULT LockAttributeBuffer ( DWORD flags, DWORD** ppData )
273     HRESULT UnlockAttributeBuffer ( )
274     HRESULT GetTessSize ( FLOAT fTessLevel, DWORD Adaptive, DWORD* NumTriangles, DWORD* NumVertices )
275     HRESULT GenerateAdjacency ( FLOAT Tolerance )
276     HRESULT CloneMesh ( DWORD Options, D3DVERTEXELEMENT9* pDecl, LPD3DXPATCHMESH* pMesh )
277     HRESULT Optimize ( DWORD flags )
278     HRESULT SetDisplaceParam (
279         LPDIRECT3DBASETEXTURE9 Texture,
280         D3DTEXTUREFILTERTYPE   MinFilter,
281         D3DTEXTUREFILTERTYPE   MagFilter,
282         D3DTEXTUREFILTERTYPE   MipFilter,
283         D3DTEXTUREADDRESS      Wrap,
284         DWORD                  dwLODBias )
285     HRESULT GetDisplaceParam (
286         LPDIRECT3DBASETEXTURE9* Texture,
287         D3DTEXTUREFILTERTYPE*   MinFilter,
288         D3DTEXTUREFILTERTYPE*   MagFilter,
289         D3DTEXTUREFILTERTYPE*   MipFilter,
290         D3DTEXTUREADDRESS*      Wrap,
291         DWORD*                  dwLODBias )
292     HRESULT Tessellate ( FLOAT fTessLevel, LPD3DXMESH pMesh )
293     HRESULT TessellateAdaptive (
294         D3DXVECTOR4* pTrans,
295         DWORD        dwMaxTessLevel,
296         DWORD        dwMinTessLevel,
297         LPD3DXMESH   pMesh ) ;
298
299 COM-INTERFACE: ID3DXSkinInfo IUnknown {11EAA540-F9A6-4d49-AE6A-E19221F70CC4}
300     HRESULT SetBoneInfluence ( DWORD bone, DWORD numInfluences, DWORD* vertices, FLOAT* weights )
301     HRESULT SetBoneVertexInfluence ( DWORD boneNum, DWORD influenceNum, FLOAT weight )
302     DWORD GetNumBoneInfluences ( DWORD bone )
303     HRESULT GetBoneInfluence ( DWORD bone, DWORD* vertices, FLOAT* weights )
304     HRESULT GetBoneVertexInfluence ( DWORD boneNum, DWORD influenceNum, FLOAT* pWeight, DWORD* pVertexNum )
305     HRESULT GetMaxVertexInfluences ( DWORD* maxVertexInfluences )
306     DWORD GetNumBones ( )
307     HRESULT FindBoneVertexInfluenceIndex ( DWORD boneNum, DWORD vertexNum, DWORD* pInfluenceIndex )
308     HRESULT GetMaxFaceInfluences ( LPDIRECT3DINDEXBUFFER9 pIB, DWORD NumFaces, DWORD* maxFaceInfluences )
309     HRESULT SetMinBoneInfluence ( FLOAT MinInfl )
310     FLOAT GetMinBoneInfluence ( )
311     HRESULT SetBoneName ( DWORD Bone, LPCSTR pName )
312     LPCSTR GetBoneName ( DWORD Bone )
313     HRESULT SetBoneOffsetMatrix ( DWORD Bone, D3DXMATRIX* pBoneTransform )
314     LPD3DXMATRIX GetBoneOffsetMatrix ( DWORD Bone )
315     HRESULT Clone ( LPD3DXSKININFO* ppSkinInfo )
316     HRESULT Remap ( DWORD NumVertices, DWORD* pVertexRemap )
317     HRESULT SetFVF ( DWORD FVF )
318     HRESULT SetDeclaration ( D3DVERTEXELEMENT9* pDeclaration )
319     DWORD GetFVF ( )
320     HRESULT GetDeclaration ( D3DVERTEXELEMENT9* Declaration )
321     HRESULT UpdateSkinnedMesh (
322         D3DXMATRIX* pBoneTransforms,
323         D3DXMATRIX* pBoneInvTransposeTransforms,
324         LPCVOID     pVerticesSrc,
325         PVOID       pVerticesDst )
326     HRESULT ConvertToBlendedMesh (
327         LPD3DXMESH    pMesh,
328         DWORD         Options,
329         DWORD*        pAdjacencyIn,
330         LPDWORD       pAdjacencyOut,
331         DWORD*        pFaceRemap,
332         LPD3DXBUFFER* ppVertexRemap,
333         DWORD*        pMaxFaceInfl,
334         DWORD*        pNumBoneCombinations,
335         LPD3DXBUFFER* ppBoneCombinationTable,
336         LPD3DXMESH*   ppMesh )
337     HRESULT ConvertToIndexedBlendedMesh (
338         LPD3DXMESH    pMesh,
339         DWORD         Options,
340         DWORD         paletteSize,
341         DWORD*        pAdjacencyIn,
342         LPDWORD       pAdjacencyOut,
343         DWORD*        pFaceRemap,
344         LPD3DXBUFFER* ppVertexRemap,
345         DWORD*        pMaxVertexInfl,
346         DWORD*        pNumBoneCombinations,
347         LPD3DXBUFFER* ppBoneCombinationTable,
348         LPD3DXMESH*   ppMesh ) ;
349
350 FUNCTION: HRESULT
351     D3DXCreateMesh (
352         DWORD              NumFaces,
353         DWORD              NumVertices,
354         DWORD              Options,
355         D3DVERTEXELEMENT9* pDeclaration,
356         LPDIRECT3DDEVICE9  pD3DDevice,
357         LPD3DXMESH*        ppMesh ) ;
358
359 FUNCTION: HRESULT
360     D3DXCreateMeshFVF (
361         DWORD             NumFaces,
362         DWORD             NumVertices,
363         DWORD             Options,
364         DWORD             FVF,
365         LPDIRECT3DDEVICE9 pD3DDevice,
366         LPD3DXMESH*       ppMesh ) ;
367
368 FUNCTION: HRESULT
369     D3DXCreateSPMesh (
370         LPD3DXMESH            pMesh,
371         DWORD*                pAdjacency,
372         D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,
373         FLOAT*                pVertexWeights,
374         LPD3DXSPMESH*         ppSMesh ) ;
375
376 FUNCTION: HRESULT
377     D3DXCleanMesh (
378     D3DXCLEANTYPE CleanType,
379     LPD3DXMESH    pMeshIn,
380     DWORD*        pAdjacencyIn,
381     LPD3DXMESH*   ppMeshOut,
382     DWORD*        pAdjacencyOut,
383     LPD3DXBUFFER* ppErrorsAndWarnings ) ;
384
385 FUNCTION: HRESULT
386     D3DXValidMesh (
387     LPD3DXMESH    pMeshIn,
388     DWORD*        pAdjacency,
389     LPD3DXBUFFER* ppErrorsAndWarnings ) ;
390
391 FUNCTION: HRESULT
392     D3DXGeneratePMesh (
393         LPD3DXMESH            pMesh,
394         DWORD*                pAdjacency,
395         D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,
396         FLOAT*                pVertexWeights,
397         DWORD                 MinValue,
398         DWORD                 Options,
399         LPD3DXPMESH*          ppPMesh ) ;
400
401 FUNCTION: HRESULT
402     D3DXSimplifyMesh (
403         LPD3DXMESH            pMesh,
404         DWORD*                pAdjacency,
405         D3DXATTRIBUTEWEIGHTS* pVertexAttributeWeights,
406         FLOAT*                pVertexWeights,
407         DWORD                 MinValue,
408         DWORD                 Options,
409         LPD3DXMESH*           ppMesh ) ;
410
411 FUNCTION: HRESULT
412     D3DXComputeBoundingSphere (
413         D3DXVECTOR3* pFirstPosition,
414         DWORD        NumVertices,
415         DWORD        dwStride,
416         D3DXVECTOR3* pCenter,
417         FLOAT*       pRadius ) ;
418
419 FUNCTION: HRESULT
420     D3DXComputeBoundingBox (
421         D3DXVECTOR3* pFirstPosition,
422         DWORD        NumVertices,
423         DWORD        dwStride,
424         D3DXVECTOR3* pMin,
425         D3DXVECTOR3* pMax ) ;
426
427 FUNCTION: HRESULT
428     D3DXComputeNormals (
429         LPD3DXBASEMESH pMesh,
430         DWORD*         pAdjacency ) ;
431
432 FUNCTION: HRESULT
433     D3DXCreateBuffer (
434         DWORD         NumBytes,
435         LPD3DXBUFFER* ppBuffer ) ;
436
437 FUNCTION: HRESULT
438     D3DXLoadMeshFromXA (
439         LPCSTR            pFilename,
440         DWORD             Options,
441         LPDIRECT3DDEVICE9 pD3DDevice,
442         LPD3DXBUFFER*     ppAdjacency,
443         LPD3DXBUFFER*     ppMaterials,
444         LPD3DXBUFFER*     ppEffectInstances,
445         DWORD*            pNumMaterials,
446         LPD3DXMESH*       ppMesh ) ;
447
448 FUNCTION: HRESULT
449     D3DXLoadMeshFromXW (
450         LPCWSTR           pFilename,
451         DWORD             Options,
452         LPDIRECT3DDEVICE9 pD3DDevice,
453         LPD3DXBUFFER*     ppAdjacency,
454         LPD3DXBUFFER*     ppMaterials,
455         LPD3DXBUFFER*     ppEffectInstances,
456         DWORD*            pNumMaterials,
457         LPD3DXMESH*       ppMesh ) ;
458
459 ALIAS: D3DXLoadMeshFromX D3DXLoadMeshFromXW
460
461 FUNCTION: HRESULT
462     D3DXLoadMeshFromXInMemory (
463         LPCVOID           Memory,
464         DWORD             SizeOfMemory,
465         DWORD             Options,
466         LPDIRECT3DDEVICE9 pD3DDevice,
467         LPD3DXBUFFER*     ppAdjacency,
468         LPD3DXBUFFER*     ppMaterials,
469         LPD3DXBUFFER*     ppEffectInstances,
470         DWORD*            pNumMaterials,
471         LPD3DXMESH*       ppMesh ) ;
472
473 FUNCTION: HRESULT
474     D3DXLoadMeshFromXResource (
475         HMODULE           Module,
476         LPCSTR            Name,
477         LPCSTR            Type,
478         DWORD             Options,
479         LPDIRECT3DDEVICE9 pD3DDevice,
480         LPD3DXBUFFER*     ppAdjacency,
481         LPD3DXBUFFER*     ppMaterials,
482         LPD3DXBUFFER*     ppEffectInstances,
483         DWORD*            pNumMaterials,
484         LPD3DXMESH*       ppMesh ) ;
485
486 FUNCTION: HRESULT
487     D3DXSaveMeshToXA (
488         LPCSTR              pFilename,
489         LPD3DXMESH          pMesh,
490         DWORD*              pAdjacency,
491         D3DXMATERIAL*       pMaterials,
492         D3DXEFFECTINSTANCE* pEffectInstances,
493         DWORD               NumMaterials,
494         DWORD               Format ) ;
495
496 FUNCTION: HRESULT
497     D3DXSaveMeshToXW (
498         LPCWSTR             pFilename,
499         LPD3DXMESH          pMesh,
500         DWORD*              pAdjacency,
501         D3DXMATERIAL*       pMaterials,
502         D3DXEFFECTINSTANCE* pEffectInstances,
503         DWORD               NumMaterials,
504         DWORD               Format ) ;
505
506 ALIAS: D3DXSaveMeshToX D3DXSaveMeshToXW
507
508 FUNCTION: HRESULT
509     D3DXCreatePMeshFromStream (
510         IStream*          pStream,
511         DWORD             Options,
512         LPDIRECT3DDEVICE9 pD3DDevice,
513         LPD3DXBUFFER*     ppMaterials,
514         LPD3DXBUFFER*     ppEffectInstances,
515         DWORD*            pNumMaterials,
516         LPD3DXPMESH*      ppPMesh ) ;
517
518 FUNCTION: HRESULT
519     D3DXCreateSkinInfo (
520         DWORD              NumVertices,
521         D3DVERTEXELEMENT9* pDeclaration,
522         DWORD              NumBones,
523         LPD3DXSKININFO*    ppSkinInfo ) ;
524
525 FUNCTION: HRESULT
526     D3DXCreateSkinInfoFVF (
527         DWORD           NumVertices,
528         DWORD           FVF,
529         DWORD           NumBones,
530         LPD3DXSKININFO* ppSkinInfo ) ;
531
532 FUNCTION: HRESULT
533     D3DXLoadMeshFromXof (
534         LPD3DXFILEDATA    pxofMesh,
535         DWORD             Options,
536         LPDIRECT3DDEVICE9 pD3DDevice,
537         LPD3DXBUFFER*     ppAdjacency,
538         LPD3DXBUFFER*     ppMaterials,
539         LPD3DXBUFFER*     ppEffectInstances,
540         DWORD*            pNumMaterials,
541         LPD3DXMESH*       ppMesh ) ;
542
543 FUNCTION: HRESULT
544     D3DXLoadSkinMeshFromXof (
545         LPD3DXFILEDATA    pxofMesh,
546         DWORD             Options,
547         LPDIRECT3DDEVICE9 pD3DDevice,
548         LPD3DXBUFFER*     ppAdjacency,
549         LPD3DXBUFFER*     ppMaterials,
550         LPD3DXBUFFER*     ppEffectInstances,
551         DWORD*            pMatOut,
552         LPD3DXSKININFO*   ppSkinInfo,
553         LPD3DXMESH*       ppMesh ) ;
554
555 FUNCTION: HRESULT
556     D3DXCreateSkinInfoFromBlendedMesh (
557         LPD3DXBASEMESH       pMesh,
558         DWORD                NumBones,
559         D3DXBONECOMBINATION* pBoneCombinationTable,
560         LPD3DXSKININFO*      ppSkinInfo ) ;
561         
562 FUNCTION: HRESULT
563     D3DXTessellateNPatches (
564         LPD3DXMESH    pMeshIn,
565         DWORD*        pAdjacencyIn,
566         FLOAT         NumSegs,
567         BOOL          QuadraticInterpNormals,
568         LPD3DXMESH*   ppMeshOut,
569         LPD3DXBUFFER* ppAdjacencyOut ) ;
570
571 FUNCTION: HRESULT
572     D3DXGenerateOutputDecl (
573         D3DVERTEXELEMENT9* pOutput,
574         D3DVERTEXELEMENT9* pInput ) ;
575
576 FUNCTION: HRESULT
577     D3DXLoadPatchMeshFromXof (
578         LPD3DXFILEDATA    pXofObjMesh,
579         DWORD             Options,
580         LPDIRECT3DDEVICE9 pD3DDevice,
581         LPD3DXBUFFER*     ppMaterials,
582         LPD3DXBUFFER*     ppEffectInstances,
583         PDWORD            pNumMaterials,
584         LPD3DXPATCHMESH*  ppMesh ) ;
585
586 FUNCTION: HRESULT
587     D3DXRectPatchSize (
588         FLOAT* pfNumSegs,
589         DWORD* pdwTriangles,
590         DWORD* pdwVertices ) ;
591
592 FUNCTION: HRESULT
593     D3DXTriPatchSize (
594         FLOAT* pfNumSegs,
595         DWORD* pdwTriangles,
596         DWORD* pdwVertices ) ;
597
598 FUNCTION: HRESULT
599     D3DXTessellateRectPatch (
600         LPDIRECT3DVERTEXBUFFER9 pVB,
601         FLOAT*                  pNumSegs,
602         D3DVERTEXELEMENT9*      pdwInDecl,
603         D3DRECTPATCH_INFO*      pRectPatchInfo,
604         LPD3DXMESH              pMesh ) ;
605
606 FUNCTION: HRESULT
607     D3DXTessellateTriPatch (
608       LPDIRECT3DVERTEXBUFFER9 pVB,
609       FLOAT*                  pNumSegs,
610       D3DVERTEXELEMENT9*      pInDecl,
611       D3DTRIPATCH_INFO*       pTriPatchInfo,
612       LPD3DXMESH              pMesh ) ;
613
614 FUNCTION: HRESULT
615     D3DXCreateNPatchMesh (
616         LPD3DXMESH       pMeshSysMem,
617         LPD3DXPATCHMESH* pPatchMesh ) ;
618
619 FUNCTION: HRESULT
620     D3DXCreatePatchMesh (
621         D3DXPATCHINFO*     pInfo,
622         DWORD              dwNumPatches,
623         DWORD              dwNumVertices,
624         DWORD              dwOptions,
625         D3DVERTEXELEMENT9* pDecl,
626         LPDIRECT3DDEVICE9  pD3DDevice,
627         LPD3DXPATCHMESH*   pPatchMesh ) ;
628
629 FUNCTION: HRESULT
630     D3DXValidPatchMesh (
631         LPD3DXPATCHMESH pMesh,
632         DWORD*          dwcDegenerateVertices,
633         DWORD*          dwcDegeneratePatches,
634         LPD3DXBUFFER*   ppErrorsAndWarnings ) ;
635
636 FUNCTION: UINT
637     D3DXGetFVFVertexSize ( DWORD FVF ) ;
638
639 FUNCTION: UINT
640     D3DXGetDeclVertexSize ( D3DVERTEXELEMENT9* pDecl, DWORD Stream ) ;
641
642 FUNCTION: UINT
643     D3DXGetDeclLength ( D3DVERTEXELEMENT9* pDecl ) ;
644
645 FUNCTION: HRESULT
646     D3DXDeclaratorFromFVF (
647         DWORD              FVF,
648         D3DVERTEXELEMENT9* pDeclarator ) ;
649
650 FUNCTION: HRESULT
651     D3DXFVFFromDeclarator (
652         D3DVERTEXELEMENT9* pDeclarator,
653         DWORD*             pFVF ) ;
654
655 FUNCTION: HRESULT
656     D3DXWeldVertices (
657         LPD3DXMESH        pMesh,
658         DWORD             Flags,
659         D3DXWELDEPSILONS* pEpsilons,
660         DWORD*            pAdjacencyIn,
661         DWORD*            pAdjacencyOut,
662         DWORD*            pFaceRemap,
663         LPD3DXBUFFER*     ppVertexRemap ) ;
664
665 STRUCT: D3DXINTERSECTINFO
666     { FaceIndex DWORD }
667     { U         FLOAT }
668     { V         FLOAT }
669     { Dist      FLOAT } ;
670 TYPEDEF: D3DXINTERSECTINFO* LPD3DXINTERSECTINFO
671
672 FUNCTION: HRESULT
673     D3DXIntersect (
674         LPD3DXBASEMESH pMesh,
675         D3DXVECTOR3*   pRayPos,
676         D3DXVECTOR3*   pRayDir,
677         BOOL*          pHit,
678         DWORD*         pFaceIndex,
679         FLOAT*         pU,
680         FLOAT*         pV,
681         FLOAT*         pDist,
682         LPD3DXBUFFER*  ppAllHits,
683         DWORD*         pCountOfHits ) ;
684
685 FUNCTION: HRESULT
686     D3DXIntersectSubset (
687         LPD3DXBASEMESH pMesh,
688         DWORD          AttribId,
689         D3DXVECTOR3*   pRayPos,
690         D3DXVECTOR3*   pRayDir,
691         BOOL*          pHit,
692         DWORD*         pFaceIndex,
693         FLOAT*         pU,
694         FLOAT*         pV,
695         FLOAT*         pDist,
696         LPD3DXBUFFER*  ppAllHits,
697         DWORD*         pCountOfHits ) ;
698
699 FUNCTION: HRESULT D3DXSplitMesh (
700     LPD3DXMESH    pMeshIn,
701     DWORD*        pAdjacencyIn,
702     DWORD         MaxSize,
703     DWORD         Options,
704     DWORD*        pMeshesOut,
705     LPD3DXBUFFER* ppMeshArrayOut,
706     LPD3DXBUFFER* ppAdjacencyArrayOut,
707     LPD3DXBUFFER* ppFaceRemapArrayOut,
708     LPD3DXBUFFER* ppVertRemapArrayOut ) ;
709
710 FUNCTION: BOOL D3DXIntersectTri (
711     D3DXVECTOR3* p0,
712     D3DXVECTOR3* p1,
713     D3DXVECTOR3* p2,
714     D3DXVECTOR3* pRayPos,
715     D3DXVECTOR3* pRayDir,
716     FLOAT*       pU,
717     FLOAT*       pV,
718     FLOAT*       pDist ) ;
719
720 FUNCTION: BOOL
721     D3DXSphereBoundProbe (
722         D3DXVECTOR3* pCenter,
723         FLOAT        Radius,
724         D3DXVECTOR3* pRayPosition,
725         D3DXVECTOR3* pRayDirection ) ;
726
727 FUNCTION: BOOL
728     D3DXBoxBoundProbe (
729         D3DXVECTOR3* pMin,
730         D3DXVECTOR3* pMax,
731         D3DXVECTOR3* pRayPosition,
732         D3DXVECTOR3* pRayDirection ) ;
733
734 FUNCTION: HRESULT D3DXComputeTangentFrame (
735     ID3DXMesh* pMesh,
736     DWORD      dwOptions ) ;
737
738 FUNCTION: HRESULT D3DXComputeTangentFrameEx (
739     ID3DXMesh*    pMesh,
740     DWORD         dwTextureInSemantic,
741     DWORD         dwTextureInIndex,
742     DWORD         dwUPartialOutSemantic,
743     DWORD         dwUPartialOutIndex,
744     DWORD         dwVPartialOutSemantic,
745     DWORD         dwVPartialOutIndex,
746     DWORD         dwNormalOutSemantic,
747     DWORD         dwNormalOutIndex,
748     DWORD         dwOptions,
749     DWORD*        pdwAdjacency,
750     FLOAT         fPartialEdgeThreshold,
751     FLOAT         fSingularPointThreshold,
752     FLOAT         fNormalEdgeThreshold,
753     ID3DXMesh**   ppMeshOut,
754     ID3DXBuffer** ppVertexMapping ) ;
755
756 FUNCTION: HRESULT D3DXComputeTangent (
757     LPD3DXMESH Mesh,
758     DWORD      TexStage,
759     DWORD      TangentIndex,
760     DWORD      BinormIndex,
761     DWORD      Wrap,
762     DWORD*     pAdjacency ) ;
763
764 C-TYPE: D3DXUVATLASCB 
765 TYPEDEF: D3DXUVATLASCB* LPD3DXUVATLASCB 
766
767 FUNCTION: HRESULT D3DXUVAtlasCreate (
768     LPD3DXMESH      pMesh,
769     UINT            uMaxChartNumber,
770     FLOAT           fMaxStretch,
771     UINT            uWidth,
772     UINT            uHeight,
773     FLOAT           fGutter,
774     DWORD           dwTextureIndex,
775     DWORD*          pdwAdjacency,
776     DWORD*          pdwFalseEdgeAdjacency,
777     FLOAT*          pfIMTArray,
778     LPD3DXUVATLASCB pStatusCallback,
779     FLOAT           fCallbackFrequency,
780     LPVOID          pUserContext,
781     DWORD           dwOptions,
782     LPD3DXMESH*     ppMeshOut,
783     LPD3DXBUFFER*   ppFacePartitioning,
784     LPD3DXBUFFER*   ppVertexRemapArray,
785     FLOAT*          pfMaxStretchOut,
786     UINT*           puNumChartsOut ) ;
787
788 FUNCTION: HRESULT D3DXUVAtlasPartition (
789     LPD3DXMESH      pMesh,
790     UINT            uMaxChartNumber,
791     FLOAT           fMaxStretch,
792     DWORD           dwTextureIndex,
793     DWORD*          pdwAdjacency,
794     DWORD*          pdwFalseEdgeAdjacency,
795     FLOAT*          pfIMTArray,
796     LPD3DXUVATLASCB pStatusCallback,
797     FLOAT           fCallbackFrequency,
798     LPVOID          pUserContext,
799     DWORD           dwOptions,
800     LPD3DXMESH*     ppMeshOut,
801     LPD3DXBUFFER*   ppFacePartitioning,
802     LPD3DXBUFFER*   ppVertexRemapArray,
803     LPD3DXBUFFER*   ppPartitionResultAdjacency,
804     FLOAT*          pfMaxStretchOut,
805     UINT*           puNumChartsOut ) ;
806
807 FUNCTION: HRESULT D3DXUVAtlasPack (
808     ID3DXMesh*      pMesh,
809     UINT            uWidth,
810     UINT            uHeight,
811     FLOAT           fGutter,
812     DWORD           dwTextureIndex,
813     DWORD*          pdwPartitionResultAdjacency,
814     LPD3DXUVATLASCB pStatusCallback,
815     FLOAT           fCallbackFrequency,
816     LPVOID          pUserContext,
817     DWORD           dwOptions,
818     LPD3DXBUFFER    pFacePartitioning ) ;
819     
820 TYPEDEF: void* LPD3DXIMTSIGNALCALLBACK
821
822 FUNCTION: HRESULT D3DXComputeIMTFromPerVertexSignal (
823     LPD3DXMESH      pMesh,
824     FLOAT*          pfVertexSignal,
825     UINT            uSignalDimension,
826     UINT            uSignalStride,
827     DWORD           dwOptions,
828     LPD3DXUVATLASCB pStatusCallback,
829     LPVOID          pUserContext,
830     LPD3DXBUFFER*   ppIMTData ) ;
831
832 FUNCTION: HRESULT D3DXComputeIMTFromSignal (
833     LPD3DXMESH              pMesh,
834     DWORD                   dwTextureIndex,
835     UINT                    uSignalDimension,
836     FLOAT                   fMaxUVDistance,
837     DWORD                   dwOptions,
838     LPD3DXIMTSIGNALCALLBACK pSignalCallback,
839     VOID*                   pUserData,
840     LPD3DXUVATLASCB         pStatusCallback,
841     LPVOID                  pUserContext,
842     LPD3DXBUFFER*           ppIMTData ) ;
843
844 FUNCTION: HRESULT D3DXComputeIMTFromTexture (
845     LPD3DXMESH         pMesh,
846     LPDIRECT3DTEXTURE9 pTexture,
847     DWORD              dwTextureIndex,
848     DWORD              dwOptions,
849     LPD3DXUVATLASCB    pStatusCallback,
850     LPVOID             pUserContext,
851     LPD3DXBUFFER*      ppIMTData ) ;
852
853 FUNCTION: HRESULT D3DXComputeIMTFromPerTexelSignal (
854     LPD3DXMESH      pMesh,
855     DWORD           dwTextureIndex,
856     FLOAT*          pfTexelSignal,
857     UINT            uWidth,
858     UINT            uHeight,
859     UINT            uSignalDimension,
860     UINT            uComponents,
861     DWORD           dwOptions,
862     LPD3DXUVATLASCB pStatusCallback,
863     LPVOID          pUserContext,
864     LPD3DXBUFFER*   ppIMTData ) ;
865
866 FUNCTION: HRESULT
867     D3DXConvertMeshSubsetToSingleStrip (
868         LPD3DXBASEMESH          MeshIn,
869         DWORD                   AttribId,
870         DWORD                   IBOptions,
871         LPDIRECT3DINDEXBUFFER9* ppIndexBuffer,
872         DWORD*                  pNumIndices ) ;
873
874 FUNCTION: HRESULT
875     D3DXConvertMeshSubsetToStrips (
876         LPD3DXBASEMESH          MeshIn,
877         DWORD                   AttribId,
878         DWORD                   IBOptions,
879         LPDIRECT3DINDEXBUFFER9* ppIndexBuffer,
880         DWORD*                  pNumIndices,
881         LPD3DXBUFFER*           ppStripLengths,
882         DWORD*                  pNumStrips ) ;
883
884 FUNCTION: HRESULT
885     D3DXOptimizeFaces (
886         LPCVOID pbIndices,
887         UINT    cFaces,
888         UINT    cVertices,
889         BOOL    b32BitIndices,
890         DWORD*  pFaceRemap ) ;
891
892 FUNCTION: HRESULT
893     D3DXOptimizeVertices (
894         LPCVOID pbIndices,
895         UINT    cFaces,
896         UINT    cVertices,
897         BOOL    b32BitIndices,
898         DWORD*  pVertexRemap ) ;
899
900 TYPEDEF: int D3DXSHCOMPRESSQUALITYTYPE
901 CONSTANT: D3DXSHCQUAL_FASTLOWQUALITY  1
902 CONSTANT: D3DXSHCQUAL_SLOWHIGHQUALITY 2
903 CONSTANT: D3DXSHCQUAL_FORCE_DWORD     0x7fffffff
904
905 TYPEDEF: int D3DXSHGPUSIMOPT
906 CONSTANT: D3DXSHGPUSIMOPT_SHADOWRES256  1
907 CONSTANT: D3DXSHGPUSIMOPT_SHADOWRES512  0
908 CONSTANT: D3DXSHGPUSIMOPT_SHADOWRES1024 2
909 CONSTANT: D3DXSHGPUSIMOPT_SHADOWRES2048 3
910 CONSTANT: D3DXSHGPUSIMOPT_HIGHQUALITY   4
911 CONSTANT: D3DXSHGPUSIMOPT_FORCE_DWORD   0x7fffffff
912
913 STRUCT: D3DXSHMATERIAL
914     { Diffuse                           D3DCOLORVALUE }
915     { bMirror                           BOOL          }
916     { bSubSurf                          BOOL          }
917     { RelativeIndexOfRefraction         FLOAT         }
918     { Absorption                        D3DCOLORVALUE }
919     { ReducedScattering                 D3DCOLORVALUE } ;
920
921 STRUCT: D3DXSHPRTSPLITMESHVERTDATA
922     { uVertRemap   UINT  }
923     { uSubCluster  UINT  }
924     { ucVertStatus UCHAR } ;
925
926 STRUCT: D3DXSHPRTSPLITMESHCLUSTERDATA
927     { uVertStart     UINT }
928     { uVertLength    UINT }
929     { uFaceStart     UINT }
930     { uFaceLength    UINT }
931     { uClusterStart  UINT }
932     { uClusterLength UINT } ;
933
934 TYPEDEF: void* LPD3DXSHPRTSIMCB
935
936 C-TYPE: ID3DXTextureGutterHelper
937 C-TYPE: ID3DXPRTBuffer
938
939 COM-INTERFACE: ID3DXPRTBuffer IUnknown {F1827E47-00A8-49cd-908C-9D11955F8728}
940     UINT GetNumSamples ( )
941     UINT GetNumCoeffs ( )
942     UINT GetNumChannels ( )
943     BOOL IsTexture ( )
944     UINT GetWidth ( )
945     UINT GetHeight ( )
946     HRESULT Resize ( UINT NewSize )
947     HRESULT LockBuffer ( UINT Start, UINT NumSamples, FLOAT** ppData )
948     HRESULT UnlockBuffer ( )
949     HRESULT ScaleBuffer ( FLOAT Scale )
950     HRESULT AddBuffer ( LPD3DXPRTBUFFER pBuffer )
951     HRESULT AttachGH ( LPD3DXTEXTUREGUTTERHELPER f )
952     HRESULT ReleaseGH ( )
953     HRESULT EvalGH ( )
954     HRESULT ExtractTexture ( UINT Channel, UINT StartCoefficient,
955                              UINT NumCoefficients, LPDIRECT3DTEXTURE9 pTexture )
956     HRESULT ExtractToMesh ( UINT NumCoefficients, D3DDECLUSAGE Usage, UINT UsageIndexStart,
957                             LPD3DXMESH pScene ) ;
958
959 C-TYPE: ID3DXPRTCompBuffer
960 TYPEDEF: ID3DXPRTCompBuffer* LPD3DXPRTCOMPBUFFER;
961
962 COM-INTERFACE: ID3DXPRTCompBuffer IUnknown {A758D465-FE8D-45ad-9CF0-D01E56266A07}
963     UINT GetNumSamples ( )
964     UINT GetNumCoeffs ( )
965     UINT GetNumChannels ( )
966     BOOL IsTexture ( )
967     UINT GetWidth ( )
968     UINT GetHeight ( )
969     UINT GetNumClusters ( )
970     UINT GetNumPCA ( )
971     HRESULT NormalizeData ( )
972     HRESULT ExtractBasis ( UINT Cluster, FLOAT* pClusterBasis )
973     HRESULT ExtractClusterIDs ( UINT* pClusterIDs )
974     HRESULT ExtractPCA ( UINT StartPCA, UINT NumExtract, FLOAT* pPCACoefficients )
975     HRESULT ExtractTexture ( UINT StartPCA, UINT NumpPCA,
976                              LPDIRECT3DTEXTURE9 pTexture )
977     HRESULT ExtractToMesh ( UINT NumPCA, D3DDECLUSAGE Usage, UINT UsageIndexStart,
978                             LPD3DXMESH pScene ) ;
979
980 COM-INTERFACE: ID3DXTextureGutterHelper IUnknown {838F01EC-9729-4527-AADB-DF70ADE7FEA9}
981     UINT GetWidth ( )
982     UINT GetHeight ( )
983     HRESULT ApplyGuttersFLOAT ( FLOAT* pDataIn, UINT NumCoeffs, UINT Width, UINT Height )
984     HRESULT ApplyGuttersTex ( LPDIRECT3DTEXTURE9 pTexture )
985     HRESULT ApplyGuttersPRT ( LPD3DXPRTBUFFER pBuffer )
986     HRESULT ResampleTex (
987         LPDIRECT3DTEXTURE9 pTextureIn,
988         LPD3DXMESH         pMeshIn,
989         D3DDECLUSAGE       Usage,
990         UINT               UsageIndex,
991         LPDIRECT3DTEXTURE9 pTextureOut )
992     HRESULT GetFaceMap ( UINT* pFaceData )
993     HRESULT GetBaryMap ( D3DXVECTOR2* pBaryData )
994     HRESULT GetTexelMap ( D3DXVECTOR2* pTexelData )
995     HRESULT GetGutterMap ( BYTE* pGutterData )
996     HRESULT SetFaceMap ( UINT* pFaceData )
997     HRESULT SetBaryMap ( D3DXVECTOR2* pBaryData )
998     HRESULT SetTexelMap ( D3DXVECTOR2* pTexelData )
999     HRESULT SetGutterMap ( BYTE* pGutterData ) ;
1000
1001 C-TYPE: ID3DXPRTEngine
1002 TYPEDEF: ID3DXPRTEngine* LPD3DXPRTENGINE
1003
1004 COM-INTERFACE: ID3DXPRTEngine IUnknown {683A4278-CD5F-4d24-90AD-C4E1B6855D53}
1005     HRESULT SetMeshMaterials ( D3DXSHMATERIAL** ppMaterials, UINT NumMeshes,
1006                                UINT NumChannels, BOOL bSetAlbedo, FLOAT fLengthScale )
1007     HRESULT SetPerVertexAlbedo ( VOID* pDataIn, UINT NumChannels, UINT Stride )
1008     HRESULT SetPerTexelAlbedo ( LPDIRECT3DTEXTURE9 pAlbedoTexture,
1009                                 UINT NumChannels,
1010                                 LPD3DXTEXTUREGUTTERHELPER pGH )
1011     HRESULT GetVertexAlbedo ( D3DXCOLOR* pVertColors, UINT NumVerts )
1012     HRESULT SetPerTexelNormal ( LPDIRECT3DTEXTURE9 pNormalTexture )
1013     HRESULT ExtractPerVertexAlbedo ( LPD3DXMESH pMesh,
1014                                      D3DDECLUSAGE Usage,
1015                                      UINT NumChannels )
1016     HRESULT ResampleBuffer ( LPD3DXPRTBUFFER pBufferIn, LPD3DXPRTBUFFER pBufferOut )
1017     HRESULT GetAdaptedMesh ( LPDIRECT3DDEVICE9 pD3DDevice, UINT* pFaceRemap, UINT* pVertRemap, FLOAT* pfVertWeights, LPD3DXMESH* ppMesh )
1018     UINT GetNumVerts ( )
1019     UINT GetNumFaces ( )
1020     HRESULT SetMinMaxIntersection ( FLOAT fMin, FLOAT fMax )
1021     HRESULT RobustMeshRefine ( FLOAT MinEdgeLength, UINT MaxSubdiv )
1022     HRESULT SetSamplingInfo ( UINT NumRays,
1023                               BOOL UseSphere,
1024                               BOOL UseCosine,
1025                               BOOL Adaptive,
1026                               FLOAT AdaptiveThresh )
1027     HRESULT ComputeDirectLightingSH ( UINT SHOrder,
1028                                       LPD3DXPRTBUFFER pDataOut )
1029     HRESULT ComputeDirectLightingSHAdaptive ( UINT SHOrder,
1030                                               FLOAT AdaptiveThresh,
1031                                               FLOAT MinEdgeLength,
1032                                               UINT MaxSubdiv,
1033                                               LPD3DXPRTBUFFER pDataOut )
1034     HRESULT ComputeDirectLightingSHGPU ( LPDIRECT3DDEVICE9 pD3DDevice,
1035                                          UINT Flags,
1036                                          UINT SHOrder,
1037                                          FLOAT ZBias,
1038                                          FLOAT ZAngleBias,
1039                                          LPD3DXPRTBUFFER pDataOut )
1040     HRESULT ComputeSS ( LPD3DXPRTBUFFER pDataIn,
1041                         LPD3DXPRTBUFFER pDataOut, LPD3DXPRTBUFFER pDataTotal )
1042     HRESULT ComputeSSAdaptive ( LPD3DXPRTBUFFER pDataIn,
1043                                 FLOAT AdaptiveThresh,
1044                                 FLOAT MinEdgeLength,
1045                                 UINT MaxSubdiv,
1046                                 LPD3DXPRTBUFFER pDataOut, LPD3DXPRTBUFFER pDataTotal )
1047     HRESULT ComputeBounce ( LPD3DXPRTBUFFER pDataIn,
1048                             LPD3DXPRTBUFFER pDataOut,
1049                             LPD3DXPRTBUFFER pDataTotal )
1050     HRESULT ComputeBounceAdaptive ( LPD3DXPRTBUFFER pDataIn,
1051                                     FLOAT AdaptiveThresh,
1052                                     FLOAT MinEdgeLength,
1053                                     UINT MaxSubdiv,
1054                                     LPD3DXPRTBUFFER pDataOut,
1055                                     LPD3DXPRTBUFFER pDataTotal )
1056     HRESULT ComputeVolumeSamplesDirectSH ( UINT SHOrderIn,
1057                                            UINT SHOrderOut,
1058                                            UINT NumVolSamples,
1059                                            D3DXVECTOR3* pSampleLocs,
1060                                            LPD3DXPRTBUFFER pDataOut )
1061     HRESULT ComputeVolumeSamples ( LPD3DXPRTBUFFER pSurfDataIn,
1062                                    UINT SHOrder,
1063                                     UINT NumVolSamples,
1064                                    D3DXVECTOR3* pSampleLocs,
1065                                    LPD3DXPRTBUFFER pDataOut )
1066     HRESULT ComputeSurfSamplesDirectSH ( UINT SHOrder,
1067                                          UINT NumSamples,
1068                                          D3DXVECTOR3* pSampleLocs,
1069                                          D3DXVECTOR3* pSampleNorms,
1070                                          LPD3DXPRTBUFFER pDataOut )
1071     HRESULT ComputeSurfSamplesBounce ( LPD3DXPRTBUFFER pSurfDataIn,
1072                                        UINT NumSamples,
1073                                        D3DXVECTOR3* pSampleLocs,
1074                                        D3DXVECTOR3* pSampleNorms,
1075                                        LPD3DXPRTBUFFER pDataOut,
1076                                        LPD3DXPRTBUFFER pDataTotal )
1077     HRESULT FreeSSData ( )
1078     HRESULT FreeBounceData ( )
1079     HRESULT ComputeLDPRTCoeffs ( LPD3DXPRTBUFFER pDataIn,
1080                                  UINT SHOrder,
1081                                  D3DXVECTOR3* pNormOut,
1082                                  LPD3DXPRTBUFFER pDataOut )
1083     HRESULT ScaleMeshChunk ( UINT uMeshChunk, FLOAT fScale, LPD3DXPRTBUFFER pDataOut )
1084     HRESULT MultiplyAlbedo ( LPD3DXPRTBUFFER pDataOut )
1085     HRESULT SetCallBack ( LPD3DXSHPRTSIMCB pCB, FLOAT Frequency,  LPVOID lpUserContext )
1086     BOOL ShadowRayIntersects ( D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir )
1087     BOOL ClosestRayIntersects ( D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir,
1088                                 DWORD* pFaceIndex, FLOAT* pU, FLOAT* pV, FLOAT* pDist ) ;
1089
1090 FUNCTION: HRESULT
1091     D3DXCreatePRTBuffer (
1092         UINT             NumSamples,
1093         UINT             NumCoeffs,
1094         UINT             NumChannels,
1095         LPD3DXPRTBUFFER* ppBuffer ) ;
1096
1097 FUNCTION: HRESULT
1098     D3DXCreatePRTBufferTex (
1099         UINT             Width,
1100         UINT             Height,
1101         UINT             NumCoeffs,
1102         UINT             NumChannels,
1103         LPD3DXPRTBUFFER* ppBuffer ) ;
1104
1105 FUNCTION: HRESULT
1106     D3DXLoadPRTBufferFromFileA (
1107         LPCSTR                 pFilename,
1108         LPD3DXPRTBUFFER*       ppBuffer ) ;
1109
1110 FUNCTION: HRESULT
1111     D3DXLoadPRTBufferFromFileW (
1112         LPCWSTR                pFilename,
1113         LPD3DXPRTBUFFER*       ppBuffer ) ;
1114
1115 ALIAS: D3DXLoadPRTBufferFromFile D3DXLoadPRTBufferFromFileW
1116
1117 FUNCTION: HRESULT
1118     D3DXSavePRTBufferToFileA (
1119         LPCSTR          pFileName,
1120         LPD3DXPRTBUFFER pBuffer ) ;
1121
1122 FUNCTION: HRESULT
1123     D3DXSavePRTBufferToFileW (
1124         LPCWSTR         pFileName,
1125         LPD3DXPRTBUFFER pBuffer ) ;
1126
1127 ALIAS: D3DXSavePRTBufferToFile D3DXSavePRTBufferToFileW
1128
1129 C-TYPE: D3DXPRTCOMPBUFFER
1130 TYPEDEF: D3DXPRTCOMPBUFFER* LPD3DXPRTCOMPBUFFER
1131     
1132 FUNCTION: HRESULT
1133     D3DXLoadPRTCompBufferFromFileA (
1134         LPCSTR                     pFilename,
1135         LPD3DXPRTCOMPBUFFER*       ppBuffer ) ;
1136
1137 FUNCTION: HRESULT
1138     D3DXLoadPRTCompBufferFromFileW (
1139         LPCWSTR                    pFilename,
1140         LPD3DXPRTCOMPBUFFER*       ppBuffer ) ;
1141
1142 ALIAS: D3DXLoadPRTCompBufferFromFile D3DXLoadPRTCompBufferFromFileW
1143
1144 FUNCTION: HRESULT
1145     D3DXSavePRTCompBufferToFileA (
1146         LPCSTR              pFileName,
1147         LPD3DXPRTCOMPBUFFER pBuffer ) ;
1148
1149 FUNCTION: HRESULT
1150     D3DXSavePRTCompBufferToFileW (
1151         LPCWSTR             pFileName,
1152         LPD3DXPRTCOMPBUFFER pBuffer ) ;
1153
1154 ALIAS: D3DXSavePRTCompBufferToFile D3DXSavePRTCompBufferToFileW
1155
1156 FUNCTION: HRESULT
1157     D3DXCreatePRTCompBuffer (
1158         D3DXSHCOMPRESSQUALITYTYPE Quality,
1159         UINT                      NumClusters,
1160         UINT                      NumPCA,
1161         LPD3DXSHPRTSIMCB          pCB,
1162         LPVOID                    lpUserContext,
1163         LPD3DXPRTBUFFER           pBufferIn,
1164         LPD3DXPRTCOMPBUFFER*      ppBufferOut ) ;
1165
1166 FUNCTION: HRESULT
1167     D3DXCreateTextureGutterHelper (
1168         UINT                       Width,
1169         UINT                       Height,
1170         LPD3DXMESH                 pMesh,
1171         FLOAT                      GutterSize,
1172         LPD3DXTEXTUREGUTTERHELPER* ppBuffer ) ;
1173
1174 FUNCTION: HRESULT
1175     D3DXCreatePRTEngine (
1176         LPD3DXMESH       pMesh,
1177         DWORD*           pAdjacency,
1178         BOOL             ExtractUVs,
1179         LPD3DXMESH       pBlockerMesh,
1180         LPD3DXPRTENGINE* ppEngine ) ;
1181
1182 FUNCTION: HRESULT
1183     D3DXConcatenateMeshes (
1184         LPD3DXMESH*        ppMeshes,
1185         UINT               NumMeshes,
1186         DWORD              Options,
1187         D3DXMATRIX*        pGeomXForms,
1188         D3DXMATRIX*        pTextureXForms,
1189         D3DVERTEXELEMENT9* pDecl,
1190         LPDIRECT3DDEVICE9  pD3DDevice,
1191         LPD3DXMESH*        ppMeshOut ) ;
1192
1193 FUNCTION: HRESULT
1194     D3DXSHPRTCompSuperCluster (
1195         UINT*      pClusterIDs,
1196         LPD3DXMESH pScene,
1197         UINT       MaxNumClusters,
1198         UINT       NumClusters,
1199         UINT*      pSuperClusterIDs,
1200         UINT*      pNumSuperClusters ) ;
1201
1202 FUNCTION: HRESULT
1203     D3DXSHPRTCompSplitMeshSC (
1204         UINT*                          pClusterIDs,
1205         UINT                           NumVertices,
1206         UINT                           NumClusters,
1207         UINT*                          pSuperClusterIDs,
1208         UINT                           NumSuperClusters,
1209         LPVOID                         pInputIB,
1210         BOOL                           InputIBIs32Bit,
1211         UINT                           NumFaces,
1212         LPD3DXBUFFER*                  ppIBData,
1213         UINT*                          pIBDataLength,
1214         BOOL                           OutputIBIs32Bit,
1215         LPD3DXBUFFER*                  ppFaceRemap,
1216         LPD3DXBUFFER*                  ppVertData,
1217         UINT*                          pVertDataLength,
1218         UINT*                          pSCClusterList,
1219         D3DXSHPRTSPLITMESHCLUSTERDATA* pSCData ) ;
1220