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