2 * Copyright (C) 2009 David Adam
3 * Copyright (C) 2010 Tony Wasserka
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #ifndef __WINE_D3DX9MESH_H
23 #define __WINE_D3DX9MESH_H
25 DEFINE_GUID(IID_ID3DXBaseMesh
, 0x7ed943dd, 0x52e8, 0x40b5, 0xa8, 0xd8, 0x76, 0x68, 0x5c, 0x40, 0x63, 0x30);
26 DEFINE_GUID(IID_ID3DXMesh
, 0x4020e5c2, 0x1403, 0x4929, 0x88, 0x3f, 0xe2, 0xe8, 0x49, 0xfa, 0xc1, 0x95);
27 DEFINE_GUID(IID_ID3DXPMesh
, 0x8875769a, 0xd579, 0x4088, 0xaa, 0xeb, 0x53, 0x4d, 0x1a, 0xd8, 0x4e, 0x96);
28 DEFINE_GUID(IID_ID3DXSPMesh
, 0x667ea4c7, 0xf1cd, 0x4386, 0xb5, 0x23, 0x7c, 0x02, 0x90, 0xb8, 0x3c, 0xc5);
29 DEFINE_GUID(IID_ID3DXSkinInfo
, 0x11eaa540, 0xf9a6, 0x4d49, 0xae, 0x6a, 0xe1, 0x92, 0x21, 0xf7, 0x0c, 0xc4);
30 DEFINE_GUID(IID_ID3DXPatchMesh
,0x3ce6cc22, 0xdbf2, 0x44f4, 0x89, 0x4d, 0xf9, 0xc3, 0x4a, 0x33, 0x71, 0x39);
31 DEFINE_GUID(IID_ID3DXPRTBuffer
, 0xf1827e47, 0x00a8, 0x49cd, 0x90, 0x8c, 0x9d, 0x11, 0x95, 0x5f, 0x87, 0x28);
32 DEFINE_GUID(IID_ID3DXPRTCompBuffer
, 0xa758d465, 0xfe8d, 0x45ad, 0x9c, 0xf0, 0xd0, 0x1e, 0x56, 0x26, 0x6a, 0x07);
33 DEFINE_GUID(IID_ID3DXTextureGutterHelper
, 0x838f01ec, 0x9729, 0x4527, 0xaa, 0xdb, 0xdf, 0x70, 0xad, 0xe7, 0xfe, 0xa9);
34 DEFINE_GUID(IID_ID3DXPRTEngine
, 0x683a4278, 0xcd5f, 0x4d24, 0x90, 0xad, 0xc4, 0xe1, 0xb6, 0x85, 0x5d, 0x53);
36 #define UNUSED16 (0xffff)
37 #define UNUSED32 (0xffffffff)
39 enum _MAX_FVF_DECL_SIZE
41 MAX_FVF_DECL_SIZE
= MAXD3DDECLLENGTH
+ 1
46 D3DXMESH_32BIT
= 0x001,
47 D3DXMESH_DONOTCLIP
= 0x002,
48 D3DXMESH_POINTS
= 0x004,
49 D3DXMESH_RTPATCHES
= 0x008,
50 D3DXMESH_NPATCHES
= 0x4000,
51 D3DXMESH_VB_SYSTEMMEM
= 0x010,
52 D3DXMESH_VB_MANAGED
= 0x020,
53 D3DXMESH_VB_WRITEONLY
= 0x040,
54 D3DXMESH_VB_DYNAMIC
= 0x080,
55 D3DXMESH_VB_SOFTWAREPROCESSING
= 0x8000,
56 D3DXMESH_IB_SYSTEMMEM
= 0x100,
57 D3DXMESH_IB_MANAGED
= 0x200,
58 D3DXMESH_IB_WRITEONLY
= 0x400,
59 D3DXMESH_IB_DYNAMIC
= 0x800,
60 D3DXMESH_IB_SOFTWAREPROCESSING
= 0x10000,
61 D3DXMESH_VB_SHARE
= 0x1000,
62 D3DXMESH_USEHWONLY
= 0x2000,
63 D3DXMESH_SYSTEMMEM
= 0x110,
64 D3DXMESH_MANAGED
= 0x220,
65 D3DXMESH_WRITEONLY
= 0x440,
66 D3DXMESH_DYNAMIC
= 0x880,
67 D3DXMESH_SOFTWAREPROCESSING
= 0x18000
72 D3DXMESHOPT_DEVICEINDEPENDENT
= 0x00400000,
73 D3DXMESHOPT_COMPACT
= 0x01000000,
74 D3DXMESHOPT_ATTRSORT
= 0x02000000,
75 D3DXMESHOPT_VERTEXCACHE
= 0x04000000,
76 D3DXMESHOPT_STRIPREORDER
= 0x08000000,
77 D3DXMESHOPT_IGNOREVERTS
= 0x10000000,
78 D3DXMESHOPT_DONOTSPLIT
= 0x20000000,
81 typedef enum _D3DXPATCHMESHTYPE
83 D3DXPATCHMESH_RECT
= 1,
84 D3DXPATCHMESH_TRI
= 2,
85 D3DXPATCHMESH_NPATCH
= 3,
86 D3DXPATCHMESH_FORCE_DWORD
= 0x7fffffff,
91 D3DXPATCHMESH_DEFAULT
= 0,
96 D3DXMESHSIMP_VERTEX
= 0x1,
97 D3DXMESHSIMP_FACE
= 0x2,
100 typedef enum D3DXCLEANTYPE
{
101 D3DXCLEAN_BACKFACING
= 0x00000001,
102 D3DXCLEAN_BOWTIES
= 0x00000002,
104 D3DXCLEAN_SKINNING
= D3DXCLEAN_BACKFACING
,
105 D3DXCLEAN_OPTIMIZATION
= D3DXCLEAN_BACKFACING
,
106 D3DXCLEAN_SIMPLIFICATION
= D3DXCLEAN_BACKFACING
| D3DXCLEAN_BOWTIES
,
109 typedef enum _D3DXTANGENT
111 D3DXTANGENT_WRAP_U
= 0x0001,
112 D3DXTANGENT_WRAP_V
= 0x0002,
113 D3DXTANGENT_WRAP_UV
= 0x0003,
114 D3DXTANGENT_DONT_NORMALIZE_PARTIALS
= 0x0004,
115 D3DXTANGENT_DONT_ORTHOGONALIZE
= 0x0008,
116 D3DXTANGENT_ORTHOGONALIZE_FROM_V
= 0x0010,
117 D3DXTANGENT_ORTHOGONALIZE_FROM_U
= 0x0020,
118 D3DXTANGENT_WEIGHT_BY_AREA
= 0x0040,
119 D3DXTANGENT_WEIGHT_EQUAL
= 0x0080,
120 D3DXTANGENT_WIND_CW
= 0x0100,
121 D3DXTANGENT_CALCULATE_NORMALS
= 0x0200,
122 D3DXTANGENT_GENERATE_IN_PLACE
= 0x0400,
125 typedef enum _D3DXIMT
127 D3DXIMT_WRAP_U
= 0x01,
128 D3DXIMT_WRAP_V
= 0x02,
129 D3DXIMT_WRAP_UV
= 0x03,
132 typedef enum _D3DXUVATLAS
134 D3DXUVATLAS_DEFAULT
= 0x00,
135 D3DXUVATLAS_GEODESIC_FAST
= 0x01,
136 D3DXUVATLAS_GEODESIC_QUALITY
= 0x02,
139 typedef enum _D3DXEFFECTDEFAULTTYPE
144 D3DXEDT_FORCEDWORD
= 0x7fffffff,
145 } D3DXEFFECTDEFAULTTYPE
;
147 enum _D3DXWELDEPSILONSFLAGS
149 D3DXWELDEPSILONS_WELDALL
= 0x1,
150 D3DXWELDEPSILONS_WELDPARTIALMATCHES
= 0x2,
151 D3DXWELDEPSILONS_DONOTREMOVEVERTICES
= 0x4,
152 D3DXWELDEPSILONS_DONOTSPLIT
= 0x8,
155 typedef enum _D3DXSHCOMPRESSQUALITYTYPE
157 D3DXSHCQUAL_FASTLOWQUALITY
= 1,
158 D3DXSHCQUAL_SLOWHIGHQUALITY
= 2,
159 D3DXSHCQUAL_FORCE_DWORD
= 0x7fffffff,
160 } D3DXSHCOMPRESSQUALITYTYPE
;
162 typedef enum _D3DXSHGPUSIMOPT
164 D3DXSHGPUSIMOPT_SHADOWRES256
= 1,
165 D3DXSHGPUSIMOPT_SHADOWRES512
= 0,
166 D3DXSHGPUSIMOPT_SHADOWRES1024
= 2,
167 D3DXSHGPUSIMOPT_SHADOWRES2048
= 3,
168 D3DXSHGPUSIMOPT_HIGHQUALITY
= 4,
169 D3DXSHGPUSIMOPT_FORCE_DWORD
= 0x7fffffff,
172 typedef struct ID3DXBaseMesh
* LPD3DXBASEMESH
;
173 typedef struct ID3DXMesh
* LPD3DXMESH
;
174 typedef struct ID3DXPMesh
*LPD3DXPMESH
;
175 typedef struct ID3DXSPMesh
*LPD3DXSPMESH
;
176 typedef struct ID3DXSkinInfo
*LPD3DXSKININFO
;
177 typedef struct ID3DXPatchMesh
*LPD3DXPATCHMESH
;
178 typedef struct ID3DXPRTBuffer
*LPD3DXPRTBUFFER
;
179 typedef struct ID3DXPRTCompBuffer
*LPD3DXPRTCOMPBUFFER
;
180 typedef struct ID3DXPRTEngine
*LPD3DXPRTENGINE
;
181 typedef struct ID3DXTextureGutterHelper
*LPD3DXTEXTUREGUTTERHELPER
;
183 typedef struct _D3DXATTRIBUTERANGE
{
189 } D3DXATTRIBUTERANGE
;
191 typedef D3DXATTRIBUTERANGE
* LPD3DXATTRIBUTERANGE
;
193 typedef struct _D3DXMATERIAL
196 LPSTR pTextureFilename
;
197 } D3DXMATERIAL
, *LPD3DXMATERIAL
;
199 typedef struct _D3DXEFFECTDEFAULT
202 D3DXEFFECTDEFAULTTYPE Type
;
205 } D3DXEFFECTDEFAULT
, *LPD3DXEFFECTDEFAULT
;
207 typedef struct _D3DXEFFECTINSTANCE
209 LPSTR pEffectFilename
;
211 LPD3DXEFFECTDEFAULT pDefaults
;
212 } D3DXEFFECTINSTANCE
, *LPD3DXEFFECTINSTANCE
;
214 typedef struct _D3DXATTRIBUTEWEIGHTS
224 } D3DXATTRIBUTEWEIGHTS
, *LPD3DXATTRIBUTEWEIGHTS
;
226 typedef struct _D3DXWELDEPSILONS
238 } D3DXWELDEPSILONS
, *LPD3DXWELDEPSILONS
;
240 typedef struct _D3DXBONECOMBINATION
248 } D3DXBONECOMBINATION
, *LPD3DXBONECOMBINATION
;
250 typedef struct _D3DXPATCHINFO
252 D3DXPATCHMESHTYPE PatchType
;
253 D3DDEGREETYPE Degree
;
255 } D3DXPATCHINFO
, *LPD3DXPATCHINFO
;
257 typedef struct _D3DXINTERSECTINFO
263 } D3DXINTERSECTINFO
, *LPD3DXINTERSECTINFO
;
265 typedef struct _D3DXSHMATERIAL
267 D3DCOLORVALUE Diffuse
;
270 FLOAT RelativeIndexOfRefraction
;
271 D3DCOLORVALUE Absorption
;
272 D3DCOLORVALUE ReducedScattering
;
275 typedef struct _D3DXSHPRTSPLITMESHVERTDATA
280 } D3DXSHPRTSPLITMESHVERTDATA
;
282 typedef struct _D3DXSHPRTSPLITMESHCLUSTERDATA
290 } D3DXSHPRTSPLITMESHCLUSTERDATA
;
292 typedef struct _XFILECOMPRESSEDANIMATIONSET
294 DWORD CompressedBlockSize
;
298 } XFILECOMPRESSEDANIMATIONSET
;
300 typedef HRESULT (WINAPI
*LPD3DXUVATLASCB
)(FLOAT
, LPVOID
);
301 typedef HRESULT (WINAPI
*LPD3DXIMTSIGNALCALLBACK
)(CONST D3DXVECTOR2
*, UINT
, UINT
, VOID
*, FLOAT
*);
302 typedef HRESULT (WINAPI
*LPD3DXSHPRTSIMCB
)(float, LPVOID
);
305 #define INTERFACE ID3DXBaseMesh
307 DECLARE_INTERFACE_(ID3DXBaseMesh
, IUnknown
)
309 /*** IUnknown methods ***/
310 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
311 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
312 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
313 /*** ID3DXBaseMesh ***/
314 STDMETHOD(DrawSubset
)(THIS_ DWORD attrib_id
) PURE
;
315 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
316 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
317 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
318 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
319 STDMETHOD_(DWORD
, GetNumBytesPerVertex
)(THIS
) PURE
;
320 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
321 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
322 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
323 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
324 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
325 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
326 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
327 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
328 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
329 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
330 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
331 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
332 STDMETHOD(GetAttributeTable
)(THIS_ D3DXATTRIBUTERANGE
* attrib_table
, DWORD
* attrib_table_size
) PURE
;
333 STDMETHOD(ConvertPointRepsToAdjacency
)(THIS_ CONST DWORD
* point_reps
, DWORD
* adjacency
) PURE
;
334 STDMETHOD(ConvertAdjacencyToPointReps
)(THIS_ CONST DWORD
* adjacency
, DWORD
* point_reps
) PURE
;
335 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT epsilon
, DWORD
* adjacency
) PURE
;
336 STDMETHOD(UpdateSemantics
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
340 #define INTERFACE ID3DXMesh
341 DECLARE_INTERFACE_(ID3DXMesh
, ID3DXBaseMesh
)
343 /*** IUnknown methods ***/
344 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
345 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
346 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
347 /*** ID3DXBaseMesh ***/
348 STDMETHOD(DrawSubset
)(THIS_ DWORD attrib_id
) PURE
;
349 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
350 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
351 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
352 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
353 STDMETHOD_(DWORD
, GetNumBytesPerVertex
)(THIS
) PURE
;
354 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
355 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
356 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
357 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
358 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
359 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
360 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
361 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
362 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
363 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
364 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
365 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
366 STDMETHOD(GetAttributeTable
)(THIS_ D3DXATTRIBUTERANGE
* attrib_table
, DWORD
* attrib_table_size
) PURE
;
367 STDMETHOD(ConvertPointRepsToAdjacency
)(THIS_ CONST DWORD
* point_reps
, DWORD
* adjacency
) PURE
;
368 STDMETHOD(ConvertAdjacencyToPointReps
)(THIS_ CONST DWORD
* adjacency
, DWORD
* point_reps
) PURE
;
369 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT epsilon
, DWORD
* adjacency
) PURE
;
370 STDMETHOD(UpdateSemantics
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
372 STDMETHOD(LockAttributeBuffer
)(THIS_ DWORD flags
, DWORD
** data
) PURE
;
373 STDMETHOD(UnlockAttributeBuffer
)(THIS
) PURE
;
374 STDMETHOD(Optimize
)(THIS_ DWORD flags
, const DWORD
*adjacency_in
, DWORD
*adjacency_out
,
375 DWORD
*face_remap
, ID3DXBuffer
**vertex_remap
, ID3DXMesh
**opt_mesh
) PURE
;
376 STDMETHOD(OptimizeInplace
)(THIS_ DWORD flags
, const DWORD
*adjacency_in
, DWORD
*adjacency_out
,
377 DWORD
*face_remap
, ID3DXBuffer
**vertex_remap
) PURE
;
378 STDMETHOD(SetAttributeTable
)(THIS_ CONST D3DXATTRIBUTERANGE
* attrib_table
, DWORD attrib_table_size
) PURE
;
382 #define INTERFACE ID3DXPMesh
383 DECLARE_INTERFACE_(ID3DXPMesh
, ID3DXBaseMesh
)
385 /*** IUnknown methods ***/
386 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
387 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
388 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
389 /*** ID3DXBaseMesh ***/
390 STDMETHOD(DrawSubset
)(THIS_ DWORD attrib_id
) PURE
;
391 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
392 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
393 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
394 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
395 STDMETHOD_(DWORD
, GetNumBytesPerVertex
)(THIS
) PURE
;
396 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
397 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
398 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
399 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
400 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
401 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
402 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
403 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
404 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
405 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
406 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
407 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
408 STDMETHOD(GetAttributeTable
)(THIS_ D3DXATTRIBUTERANGE
* attrib_table
, DWORD
* attrib_table_size
) PURE
;
409 STDMETHOD(ConvertPointRepsToAdjacency
)(THIS_ CONST DWORD
* point_reps
, DWORD
* adjacency
) PURE
;
410 STDMETHOD(ConvertAdjacencyToPointReps
)(THIS_ CONST DWORD
* adjacency
, DWORD
* point_reps
) PURE
;
411 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT epsilon
, DWORD
* adjacency
) PURE
;
412 STDMETHOD(UpdateSemantics
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
414 STDMETHOD(ClonePMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
415 struct IDirect3DDevice9
*device
, struct ID3DXPMesh
**clone_mesh
) PURE
;
416 STDMETHOD(ClonePMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
417 struct IDirect3DDevice9
*device
, struct ID3DXPMesh
**clone_mesh
) PURE
;
418 STDMETHOD(SetNumFaces
)(THIS_ DWORD faces
) PURE
;
419 STDMETHOD(SetNumVertices
)(THIS_ DWORD vertices
) PURE
;
420 STDMETHOD_(DWORD
, GetMaxFaces
)(THIS
) PURE
;
421 STDMETHOD_(DWORD
, GetMinFaces
)(THIS
) PURE
;
422 STDMETHOD_(DWORD
, GetMaxVertices
)(THIS
) PURE
;
423 STDMETHOD_(DWORD
, GetMinVertices
)(THIS
) PURE
;
424 STDMETHOD(Save
)(THIS_ IStream
*stream
, CONST D3DXMATERIAL
* material
, CONST D3DXEFFECTINSTANCE
* effect_instance
, DWORD num_materials
) PURE
;
425 STDMETHOD(Optimize
)(THIS_ DWORD flags
, DWORD
*adjacency_out
, DWORD
*face_remap
,
426 ID3DXBuffer
**vertex_remap
, ID3DXMesh
**opt_mesh
) PURE
;
427 STDMETHOD(OptimizeBaseLOD
)(THIS_ DWORD flags
, DWORD
* face_remap
) PURE
;
428 STDMETHOD(TrimByFaces
)(THIS_ DWORD new_faces_min
, DWORD new_faces_max
, DWORD
* face_remap
, DWORD
* vertex_remap
) PURE
;
429 STDMETHOD(TrimByVertices
)(THIS_ DWORD new_vertices_min
, DWORD new_vertices_max
, DWORD
* face_remap
, DWORD
* vertex_remap
) PURE
;
430 STDMETHOD(GetAdjacency
)(THIS_ DWORD
* adjacency
) PURE
;
431 STDMETHOD(GenerateVertexHistory
)(THIS_ DWORD
* vertex_history
) PURE
;
435 #define INTERFACE ID3DXSPMesh
436 DECLARE_INTERFACE_(ID3DXSPMesh
, IUnknown
)
438 /*** IUnknown methods ***/
439 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
440 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
441 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
442 /*** ID3DXSPMesh ***/
443 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
444 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
445 STDMETHOD_(DWORD
, GetNumFVF
)(THIS
) PURE
;
446 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
447 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
448 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
449 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
450 struct IDirect3DDevice9
*device
, DWORD
*adjacency_out
,
451 DWORD
*vertex_remap_out
, struct ID3DXMesh
**clone_mesh
) PURE
;
452 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
453 struct IDirect3DDevice9
*device
, DWORD
*adjacency_out
,
454 DWORD
*vertex_remap_out
, struct ID3DXMesh
**clone_mesh
) PURE
;
455 STDMETHOD(ClonePMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
456 struct IDirect3DDevice9
*device
, DWORD
*vertex_remap_out
,
457 float *errors_by_face
, struct ID3DXPMesh
**clone_mesh
) PURE
;
458 STDMETHOD(ClonePMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
459 struct IDirect3DDevice9
*device
, DWORD
*vertex_remap_out
,
460 float *errors_by_face
, struct ID3DXPMesh
**clone_mesh
) PURE
;
461 STDMETHOD(ReduceFaces
)(THIS_ DWORD faces
) PURE
;
462 STDMETHOD(ReduceVertices
)(THIS_ DWORD vertices
) PURE
;
463 STDMETHOD_(DWORD
, GetMaxFaces
)(THIS
) PURE
;
464 STDMETHOD_(DWORD
, GetMaxVertices
)(THIS
) PURE
;
465 STDMETHOD(GetVertexAttributeWeights
)(THIS_ LPD3DXATTRIBUTEWEIGHTS vertex_attribute_weights
) PURE
;
466 STDMETHOD(GetVertexWeights
)(THIS_ FLOAT
* vertex_weights
) PURE
;
470 #define INTERFACE ID3DXPatchMesh
471 DECLARE_INTERFACE_(ID3DXPatchMesh
, IUnknown
)
473 /*** IUnknown methods ***/
474 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
475 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
476 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
477 /*** ID3DXPatchMesh ***/
478 STDMETHOD_(DWORD
, GetNumPatches
)(THIS
) PURE
;
479 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
480 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
481 STDMETHOD_(DWORD
, GetControlVerticesPerPatch
)(THIS
) PURE
;
482 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
483 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
484 STDMETHOD(GetPatchInfo
)(THIS_ LPD3DXPATCHINFO patch_info
) PURE
;
485 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
486 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
487 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
488 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
489 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, LPVOID
* data
) PURE
;
490 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
491 STDMETHOD(LockAttributeBuffer
)(THIS_ DWORD flags
, DWORD
** data
) PURE
;
492 STDMETHOD(UnlockAttributeBuffer
)(THIS
) PURE
;
493 STDMETHOD(GetTessSize
)(THIS_ FLOAT tess_level
, DWORD adaptive
, DWORD
* num_triangles
, DWORD
* num_vertices
) PURE
;
494 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT tolerance
) PURE
;
495 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
, ID3DXPatchMesh
**clone_mesh
) PURE
;
496 STDMETHOD(Optimize
)(THIS_ DWORD flags
) PURE
;
497 STDMETHOD(SetDisplaceParam
)(THIS_
struct IDirect3DBaseTexture9
*texture
, D3DTEXTUREFILTERTYPE min_filter
,
498 D3DTEXTUREFILTERTYPE mag_filter
, D3DTEXTUREFILTERTYPE mip_filter
, D3DTEXTUREADDRESS wrap
,
499 DWORD lod_bias
) PURE
;
500 STDMETHOD(GetDisplaceParam
)(THIS_
struct IDirect3DBaseTexture9
**texture
, D3DTEXTUREFILTERTYPE
*min_filter
,
501 D3DTEXTUREFILTERTYPE
*mag_filter
, D3DTEXTUREFILTERTYPE
*mip_filter
, D3DTEXTUREADDRESS
*wrap
,
502 DWORD
*lod_bias
) PURE
;
503 STDMETHOD(Tessellate
)(THIS_
float tess_level
, ID3DXMesh
*mesh
) PURE
;
504 STDMETHOD(TessellateAdaptive
)(THIS_
const D3DXVECTOR4
*trans
, DWORD max_tess_level
,
505 DWORD min_tess_level
, ID3DXMesh
*mesh
) PURE
;
509 #define INTERFACE ID3DXSkinInfo
510 DECLARE_INTERFACE_(ID3DXSkinInfo
, IUnknown
)
512 /*** IUnknown methods ***/
513 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
514 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
515 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
516 /*** ID3DXSkinInfo ***/
517 STDMETHOD(SetBoneInfluence
)(THIS_ DWORD bone
, DWORD num_influences
, CONST DWORD
* vertices
, CONST FLOAT
* weights
) PURE
;
518 STDMETHOD(SetBoneVertexInfluence
)(THIS_ DWORD bone_num
, DWORD influence_num
, float weight
) PURE
;
519 STDMETHOD_(DWORD
, GetNumBoneInfluences
)(THIS_ DWORD bone
) PURE
;
520 STDMETHOD(GetBoneInfluence
)(THIS_ DWORD bone
, DWORD
* vertices
, FLOAT
* weights
) PURE
;
521 STDMETHOD(GetBoneVertexInfluence
)(THIS_ DWORD bone_num
, DWORD influence_num
, float *weight
, DWORD
* vertex_num
) PURE
;
522 STDMETHOD(GetMaxVertexInfluences
)(THIS_ DWORD
* max_vertex_influences
) PURE
;
523 STDMETHOD_(DWORD
, GetNumBones
)(THIS
) PURE
;
524 STDMETHOD(FindBoneVertexInfluenceIndex
)(THIS_ DWORD bone_num
, DWORD vertex_num
, DWORD
* influence_index
) PURE
;
525 STDMETHOD(GetMaxFaceInfluences
)(THIS_
struct IDirect3DIndexBuffer9
*index_buffer
,
526 DWORD num_faces
, DWORD
*max_face_influences
) PURE
;
527 STDMETHOD(SetMinBoneInfluence
)(THIS_ FLOAT min_influence
) PURE
;
528 STDMETHOD_(FLOAT
, GetMinBoneInfluence
)(THIS
) PURE
;
529 STDMETHOD(SetBoneName
)(THIS_ DWORD bone
, LPCSTR name
) PURE
;
530 STDMETHOD_(LPCSTR
, GetBoneName
)(THIS_ DWORD bone
) PURE
;
531 STDMETHOD(SetBoneOffsetMatrix
)(THIS_ DWORD bone
, CONST D3DXMATRIX
* bone_transform
) PURE
;
532 STDMETHOD_(LPD3DXMATRIX
, GetBoneOffsetMatrix
)(THIS_ DWORD bone
) PURE
;
533 STDMETHOD(Clone
)(THIS_ ID3DXSkinInfo
**skin_info
) PURE
;
534 STDMETHOD(Remap
)(THIS_ DWORD num_vertices
, DWORD
* vertex_remap
) PURE
;
535 STDMETHOD(SetFVF
)(THIS_ DWORD FVF
) PURE
;
536 STDMETHOD(SetDeclaration
)(THIS_ CONST D3DVERTEXELEMENT9
* declaration
) PURE
;
537 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
538 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
539 STDMETHOD(UpdateSkinnedMesh
)(THIS_ CONST D3DXMATRIX
* bone_transforms
,
540 CONST D3DXMATRIX
* bone_inv_transpose_transforms
, LPCVOID vertices_src
, PVOID vertices_dest
) PURE
;
541 STDMETHOD(ConvertToBlendedMesh
)(THIS_ ID3DXMesh
*mesh_in
, DWORD options
, const DWORD
*adjacency_in
,
542 DWORD
*adjacency_out
, DWORD
*face_remap
, ID3DXBuffer
**vertex_remap
, DWORD
*max_face_infl
,
543 DWORD
*num_bone_combinations
, ID3DXBuffer
**bone_combination_table
, ID3DXMesh
**mesh_out
) PURE
;
544 STDMETHOD(ConvertToIndexedBlendedMesh
)(THIS_ ID3DXMesh
*mesh_in
, DWORD options
, const DWORD
*adjacency_in
,
545 DWORD
*adjacency_out
, DWORD
*face_remap
, ID3DXBuffer
**vertex_remap
, DWORD
*max_face_infl
,
546 DWORD
*num_bone_combinations
, ID3DXBuffer
**bone_combination_table
, ID3DXMesh
**mesh_out
) PURE
;
550 #define INTERFACE ID3DXPRTBuffer
551 DECLARE_INTERFACE_(ID3DXPRTBuffer
, IUnknown
)
553 /*** IUnknown methods ***/
554 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
555 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
556 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
557 /*** ID3DXPRTBuffer methods ***/
558 STDMETHOD_(UINT
, GetNumSamples
)(THIS
) PURE
;
559 STDMETHOD_(UINT
, GetNumCoeffs
)(THIS
) PURE
;
560 STDMETHOD_(UINT
, GetNumChannels
)(THIS
) PURE
;
561 STDMETHOD_(BOOL
, IsTexture
)(THIS
) PURE
;
562 STDMETHOD_(BOOL
, GetWidth
)(THIS
) PURE
;
563 STDMETHOD_(BOOL
, GetHeight
)(THIS
) PURE
;
564 STDMETHOD(Resize
)(THIS_ UINT new_size
) PURE
;
565 STDMETHOD(LockBuffer
)(THIS_ UINT start
, UINT num_samples
, FLOAT
**data
) PURE
;
566 STDMETHOD(UnlockBuffer
)(THIS
) PURE
;
567 STDMETHOD(ScaleBuffer
)(THIS_ FLOAT scale
) PURE
;
568 STDMETHOD(AddBuffer
)(THIS_ ID3DXPRTBuffer
*buffer
) PURE
;
569 STDMETHOD(AttachGH
)(THIS_
struct ID3DXTextureGutterHelper
*gh
) PURE
;
570 STDMETHOD(ReleaseGH
)(THIS
) PURE
;
571 STDMETHOD(EvalGH
)(THIS
) PURE
;
572 STDMETHOD(ExtractTexture
)(THIS_ UINT channel
, UINT start_coefficient
,
573 UINT num_coefficients
, struct IDirect3DTexture9
*texture
) PURE
;
574 STDMETHOD(ExtractToMesh
)(THIS_ UINT num_coefficients
, D3DDECLUSAGE usage
,
575 UINT usage_index_start
, ID3DXMesh
*scene
) PURE
;
579 #define INTERFACE ID3DXPRTCompBuffer
580 DECLARE_INTERFACE_(ID3DXPRTCompBuffer
, IUnknown
)
582 /*** IUnknown methods ***/
583 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
584 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
585 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
586 /*** ID3DXPRTCompBuffer methods ***/
587 STDMETHOD_(UINT
, GetNumSamples
)(THIS
) PURE
;
588 STDMETHOD_(UINT
, GetNumCoeffs
)(THIS
) PURE
;
589 STDMETHOD_(UINT
, GetNumChannels
)(THIS
) PURE
;
590 STDMETHOD_(BOOL
, IsTexture
)(THIS
) PURE
;
591 STDMETHOD_(UINT
, GetWidth
)(THIS
) PURE
;
592 STDMETHOD_(UINT
, GetHeight
)(THIS
) PURE
;
593 STDMETHOD_(UINT
, GetNumClusters
)(THIS
) PURE
;
594 STDMETHOD_(UINT
, GetNumPCA
)(THIS
) PURE
;
595 STDMETHOD(NormalizeData
)(THIS
) PURE
;
596 STDMETHOD(ExtractBasis
)(THIS_ UINT cluster
, FLOAT
*cluster_basis
) PURE
;
597 STDMETHOD(ExtractClusterIDs
)(THIS_ UINT
*cluster_ids
) PURE
;
598 STDMETHOD(ExtractPCA
)(THIS_ UINT start_pca
, UINT num_extract
, FLOAT
*pca_coefficients
) PURE
;
599 STDMETHOD(ExtractTexture
)(THIS_ UINT start_pca
, UINT num_pca
, struct IDirect3DTexture9
*texture
) PURE
;
600 STDMETHOD(ExtractToMesh
)(THIS_ UINT num_pca
, D3DDECLUSAGE usage
, UINT usage_index_start
, ID3DXMesh
*scene
) PURE
;
604 #define INTERFACE ID3DXTextureGutterHelper
605 DECLARE_INTERFACE_(ID3DXTextureGutterHelper
, IUnknown
)
607 /*** IUnknown methods ***/
608 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
609 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
610 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
611 /*** ID3DXTextureGutterHelper methods ***/
612 STDMETHOD_(UINT
, GetWidth
)(THIS
) PURE
;
613 STDMETHOD_(UINT
, GetHeight
)(THIS
) PURE
;
615 STDMETHOD(ApplyGuttersFloat
)(THIS_ FLOAT
*data_in
, UINT num_coeffs
, UINT width
, UINT height
) PURE
;
616 STDMETHOD(ApplyGuttersTex
)(THIS_
struct IDirect3DTexture9
*texture
) PURE
;
617 STDMETHOD(ApplyGuttersPRT
)(THIS_ ID3DXPRTBuffer
*buffer
) PURE
;
618 STDMETHOD(ResampleTex
)(THIS_
struct IDirect3DTexture9
*texture_in
, struct ID3DXMesh
*mesh_in
,
619 D3DDECLUSAGE usage
, UINT usage_index
, struct IDirect3DTexture9
*texture_out
) PURE
;
620 STDMETHOD(GetFaceMap
)(THIS_ UINT
*face_data
) PURE
;
621 STDMETHOD(GetBaryMap
)(THIS_ D3DXVECTOR2
*bary_data
) PURE
;
622 STDMETHOD(GetTexelMap
)(THIS_ D3DXVECTOR2
*texel_data
) PURE
;
623 STDMETHOD(GetGutterMap
)(THIS_ BYTE
*gutter_data
) PURE
;
624 STDMETHOD(SetFaceMap
)(THIS_ UINT
*face_data
) PURE
;
625 STDMETHOD(SetBaryMap
)(THIS_ D3DXVECTOR2
*bary_data
) PURE
;
626 STDMETHOD(SetTexelMap
)(THIS_ D3DXVECTOR2
*texel_data
) PURE
;
627 STDMETHOD(SetGutterMap
)(THIS_ BYTE
*gutter_data
) PURE
;
631 #define INTERFACE ID3DXPRTEngine
632 DECLARE_INTERFACE_(ID3DXPRTEngine
, IUnknown
)
634 /*** IUnknown methods ***/
635 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, LPVOID
* object
) PURE
;
636 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
637 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
638 /*** ID3DXPRTEngine methods ***/
639 STDMETHOD(SetMeshMaterials
)(THIS_ CONST D3DXSHMATERIAL
**materials
, UINT num_meshes
,
640 UINT num_channels
, BOOL set_albedo
, FLOAT length_scale
) PURE
;
641 STDMETHOD(SetPerVertexAlbedo
)(THIS_ CONST VOID
*data_in
, UINT num_channels
, UINT stride
) PURE
;
642 STDMETHOD(SetPerTexelAlbedo
)(THIS_
struct IDirect3DTexture9
*albedo_texture
,
643 UINT num_channels
, struct ID3DXTextureGutterHelper
*gh
) PURE
;
644 STDMETHOD(GetVertexAlbedo
)(THIS_ D3DXCOLOR
*vert_colors
, UINT num_verts
) PURE
;
645 STDMETHOD(SetPerTexelNormals
)(THIS_
struct IDirect3DTexture9
*normal_texture
) PURE
;
646 STDMETHOD(ExtractPerVertexAlbedo
)(THIS_ ID3DXMesh
*mesh
, D3DDECLUSAGE usage
, UINT num_channels
) PURE
;
647 STDMETHOD(ResampleBuffer
)(THIS_ ID3DXPRTBuffer
*buffer_in
, ID3DXPRTBuffer
*buffer_out
) PURE
;
648 STDMETHOD(GetAdaptedMesh
)(THIS_
struct IDirect3DDevice9
*device
, UINT
*face_remap
,
649 UINT
*vert_remap
, float *vert_weights
, struct ID3DXMesh
**mesh
) PURE
;
650 STDMETHOD_(UINT
, GetNumVerts
)(THIS
) PURE
;
651 STDMETHOD_(UINT
, GetNumFaces
)(THIS
) PURE
;
652 STDMETHOD(SetMinMaxIntersection
)(THIS_ FLOAT min
, FLOAT max
) PURE
;
653 STDMETHOD(RobustMeshRefine
)(THIS_ FLOAT min_edge_length
, UINT max_subdiv
) PURE
;
654 STDMETHOD(SetSamplingInfo
)(THIS_ UINT num_rays
, BOOL use_sphere
,
655 BOOL use_cosine
, BOOL adaptive
, FLOAT adpative_thresh
) PURE
;
656 STDMETHOD(ComputeDirectLightingSH
)(THIS_ UINT sh_order
, ID3DXPRTBuffer
*data_out
) PURE
;
657 STDMETHOD(ComputeDirectLightingSHAdaptive
)(THIS_ UINT sh_order
, float adaptive_thresh
,
658 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
) PURE
;
659 STDMETHOD(ComputeDirectLightingSHGPU
)(THIS_
struct IDirect3DDevice9
*device
, UINT flags
,
660 UINT sh_order
, float zbias
, float zangle_bias
, struct ID3DXPRTBuffer
*data_out
) PURE
;
661 STDMETHOD(ComputeSS
)(THIS_ ID3DXPRTBuffer
*data_in
, ID3DXPRTBuffer
*data_out
,
662 ID3DXPRTBuffer
*data_total
) PURE
;
663 STDMETHOD(ComputeSSAdaptive
)(THIS_ ID3DXPRTBuffer
*data_in
, float adaptive_thres
,
664 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
, ID3DXPRTBuffer
*data_total
) PURE
;
665 STDMETHOD(ComputeBounce
)(THIS_ ID3DXPRTBuffer
*data_in
, ID3DXPRTBuffer
*data_out
,
666 ID3DXPRTBuffer
*data_total
) PURE
;
667 STDMETHOD(ComputeBounceAdaptive
)(THIS_ ID3DXPRTBuffer
*data_in
, float adaptive_thres
,
668 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
, ID3DXPRTBuffer
*data_total
) PURE
;
669 STDMETHOD(ComputeVolumeSamplesDirectSH
)(THIS_ UINT sh_order_in
, UINT sh_order_out
,
670 UINT num_vol_samples
, const D3DXVECTOR3
*sample_locs
, ID3DXPRTBuffer
*data_out
) PURE
;
671 STDMETHOD(ComputeVolumeSamples
)(THIS_ ID3DXPRTBuffer
*surf_data_in
, UINT sh_order
,
672 UINT num_vol_samples
, const D3DXVECTOR3
*sample_locs
, ID3DXPRTBuffer
*data_out
) PURE
;
673 STDMETHOD(ComputeSurfSamplesDirectSH
)(THIS_ UINT sh_order
, UINT num_samples
,
674 const D3DXVECTOR3
*sample_locs
, const D3DXVECTOR3
*sample_norms
, ID3DXPRTBuffer
*data_out
) PURE
;
675 STDMETHOD(ComputeSurfSamplesBounce
)(THIS_ ID3DXPRTBuffer
*surf_data_in
, UINT num_samples
,
676 const D3DXVECTOR3
*sample_locs
, const D3DXVECTOR3
*sample_norms
, ID3DXPRTBuffer
*data_out
,
677 ID3DXPRTBuffer
*data_total
) PURE
;
678 STDMETHOD(FreeSSData
)(THIS
) PURE
;
679 STDMETHOD(FreeBounceData
)(THIS
) PURE
;
680 STDMETHOD(ComputeLDPRTCoeffs
)(THIS_ ID3DXPRTBuffer
*data_in
, UINT sh_order
, D3DXVECTOR3
*norm_out
,
681 ID3DXPRTBuffer
*data_out
) PURE
;
682 STDMETHOD(ScaleMeshChunk
)(THIS_ UINT mesh_chunk
, float scale
, ID3DXPRTBuffer
*data_out
) PURE
;
683 STDMETHOD(MultiplyAlbedo
)(THIS_ ID3DXPRTBuffer
*data_out
) PURE
;
684 STDMETHOD(SetCallback
)(THIS_ LPD3DXSHPRTSIMCB cb
, FLOAT frequency
, LPVOID user_context
) PURE
;
685 STDMETHOD_(BOOL
, ShadowRayIntersects
)(THIS_ CONST D3DXVECTOR3
*ray_pos
, CONST D3DXVECTOR3
*ray_dir
) PURE
;
686 STDMETHOD_(BOOL
, ClosestRayIntersects
)(THIS_ CONST D3DXVECTOR3
*ray_pos
, CONST D3DXVECTOR3
*ray_dir
,
687 DWORD
*face_index
, FLOAT
*u
, FLOAT
*v
, FLOAT
*dist
) PURE
;
695 HRESULT WINAPI
D3DXCreateMesh(DWORD face_count
, DWORD vertex_count
, DWORD flags
,
696 const D3DVERTEXELEMENT9
*declaration
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
697 HRESULT WINAPI
D3DXCreateMeshFVF(DWORD face_count
, DWORD vertex_count
, DWORD flags
,
698 DWORD fvf
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
699 HRESULT WINAPI
D3DXCreateBuffer(DWORD size
, ID3DXBuffer
**buffer
);
700 HRESULT WINAPI
D3DXCreateSPMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
,
701 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
, ID3DXSPMesh
**spmesh
);
702 HRESULT WINAPI
D3DXCreatePMeshFromStream(struct IStream
*stream
, DWORD flags
, struct IDirect3DDevice9
*device
,
703 struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
704 DWORD
*material_count
, struct ID3DXPMesh
**mesh
);
705 HRESULT WINAPI
D3DXCreateSkinInfo(DWORD vertex_count
, const D3DVERTEXELEMENT9
*declaration
,
706 DWORD bone_count
, ID3DXSkinInfo
**skin_info
);
707 HRESULT WINAPI
D3DXCreateSkinInfoFVF(DWORD vertex_count
, DWORD fvf
, DWORD bone_count
, ID3DXSkinInfo
**skin_info
);
708 HRESULT WINAPI
D3DXCreateSkinInfoFromBlendedMesh(ID3DXBaseMesh
*mesh
, DWORD bone_count
,
709 const D3DXBONECOMBINATION
*bone_combination_table
, ID3DXSkinInfo
**skin_info
);
710 HRESULT WINAPI
D3DXCreatePatchMesh(const D3DXPATCHINFO
*patch_info
, DWORD patch_count
,
711 DWORD vertex_count
, DWORD flags
, const D3DVERTEXELEMENT9
*declaration
,
712 struct IDirect3DDevice9
*device
, struct ID3DXPatchMesh
**mesh
);
713 HRESULT WINAPI
D3DXCreatePRTBuffer(UINT sample_count
, UINT coeff_count
, UINT channel_count
, ID3DXPRTBuffer
**buffer
);
714 HRESULT WINAPI
D3DXCreatePRTBufferTex(UINT width
, UINT height
, UINT coeff_count
,
715 UINT channel_count
, ID3DXPRTBuffer
**buffer
);
716 HRESULT WINAPI
D3DXCreatePRTCompBuffer(D3DXSHCOMPRESSQUALITYTYPE quality
, UINT cluster_count
, UINT pca_count
,
717 LPD3DXSHPRTSIMCB cb
, void *ctx
, ID3DXPRTBuffer
*input
, ID3DXPRTCompBuffer
**buffer
);
718 HRESULT WINAPI
D3DXCreateTextureGutterHelper(UINT width
, UINT height
, ID3DXMesh
*mesh
,
719 float gutter_size
, ID3DXTextureGutterHelper
**gh
);
720 HRESULT WINAPI
D3DXCreatePRTEngine(ID3DXMesh
*mesh
, DWORD
*adjacency
, BOOL extract_uv
,
721 ID3DXMesh
*blocker_mesh
, ID3DXPRTEngine
**engine
);
722 HRESULT WINAPI
D3DXLoadMeshFromXA(const char *filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
723 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
724 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
725 HRESULT WINAPI
D3DXLoadMeshFromXW(const WCHAR
*filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
726 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
727 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
728 #define D3DXLoadMeshFromX WINELIB_NAME_AW(D3DXLoadMeshFromX)
729 HRESULT WINAPI
D3DXLoadMeshFromXInMemory(const void *data
, DWORD data_size
, DWORD flags
,
730 struct IDirect3DDevice9
*device
, struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
,
731 struct ID3DXBuffer
**effect_instances
, DWORD
*material_count
, struct ID3DXMesh
**mesh
);
732 HRESULT WINAPI
D3DXLoadMeshFromXResource(HMODULE module
, const char *resource
, const char *resource_type
,
733 DWORD flags
, struct IDirect3DDevice9
*device
, struct ID3DXBuffer
**adjacency
,
734 struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
735 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
736 HRESULT WINAPI
D3DXLoadMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
737 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
738 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
739 HRESULT WINAPI
D3DXLoadPatchMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
740 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
741 DWORD
*material_count
, struct ID3DXPatchMesh
**mesh
);
742 HRESULT WINAPI
D3DXLoadSkinMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
743 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
744 DWORD
*material_count
, struct ID3DXSkinInfo
**skin_info
, struct ID3DXMesh
**mesh
);
745 HRESULT WINAPI
D3DXLoadPRTBufferFromFileA(const char *filename
, ID3DXPRTBuffer
**buffer
);
746 HRESULT WINAPI
D3DXLoadPRTBufferFromFileW(const WCHAR
*filename
, ID3DXPRTBuffer
**buffer
);
747 #define D3DXLoadPRTBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTBufferFromFile)
748 HRESULT WINAPI
D3DXLoadPRTCompBufferFromFileA(const char *filename
, ID3DXPRTCompBuffer
**buffer
);
749 HRESULT WINAPI
D3DXLoadPRTCompBufferFromFileW(const WCHAR
*filename
, ID3DXPRTCompBuffer
**buffer
);
750 #define D3DXLoadPRTCompBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTCompBufferFromFile)
751 HRESULT WINAPI
D3DXSaveMeshToXA(const char *filename
, ID3DXMesh
*mesh
, const DWORD
*adjacency
,
752 const D3DXMATERIAL
*materials
, const D3DXEFFECTINSTANCE
*effect_instances
, DWORD material_count
, DWORD format
);
753 HRESULT WINAPI
D3DXSaveMeshToXW(const WCHAR
*filename
, ID3DXMesh
*mesh
, const DWORD
*adjacency
,
754 const D3DXMATERIAL
*materials
, const D3DXEFFECTINSTANCE
*effect_instances
, DWORD material_count
, DWORD format
);
755 #define D3DXSaveMeshToX WINELIB_NAME_AW(D3DXSaveMeshToX)
756 HRESULT WINAPI
D3DXSavePRTBufferToFileA(const char *filename
, ID3DXPRTBuffer
*buffer
);
757 HRESULT WINAPI
D3DXSavePRTBufferToFileW(const WCHAR
*filename
, ID3DXPRTBuffer
*buffer
);
758 #define D3DXSavePRTBufferToFile WINELIB_NAME_AW(D3DXSavePRTBufferToFile)
759 HRESULT WINAPI
D3DXSavePRTCompBufferToFileA(const char *filename
, ID3DXPRTCompBuffer
*buffer
);
760 HRESULT WINAPI
D3DXSavePRTCompBufferToFileW(const WCHAR
*filename
, ID3DXPRTCompBuffer
*buffer
);
761 #define D3DXSavePRTCompBufferToFile WINELIB_NAME_AW(D3DXSavePRTCompBufferToFile)
762 UINT WINAPI
D3DXGetDeclLength(const D3DVERTEXELEMENT9
*decl
);
763 UINT WINAPI
D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9
*decl
, DWORD stream_idx
);
764 UINT WINAPI
D3DXGetFVFVertexSize(DWORD
);
765 BOOL WINAPI
D3DXBoxBoundProbe(CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*);
766 BOOL WINAPI
D3DXSphereBoundProbe(CONST D3DXVECTOR3
*,FLOAT
,CONST D3DXVECTOR3
*,CONST D3DXVECTOR3
*);
767 HRESULT WINAPI
D3DXCleanMesh(D3DXCLEANTYPE clean_type
, ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
,
768 ID3DXMesh
**mesh_out
, DWORD
*adjacency_out
, ID3DXBuffer
**errors
);
769 HRESULT WINAPI
D3DXConcatenateMeshes(struct ID3DXMesh
**meshes
, UINT mesh_count
, DWORD flags
,
770 const D3DXMATRIX
*geometry_matrices
, const D3DXMATRIX
*texture_matrices
,
771 const D3DVERTEXELEMENT9
*declaration
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
772 HRESULT WINAPI
D3DXComputeBoundingBox(CONST D3DXVECTOR3
*, DWORD
, DWORD
, D3DXVECTOR3
*, D3DXVECTOR3
*);
773 HRESULT WINAPI
D3DXComputeBoundingSphere(CONST D3DXVECTOR3
*, DWORD
, DWORD
, D3DXVECTOR3
*, FLOAT
*);
774 HRESULT WINAPI
D3DXComputeIMTFromPerTexelSignal(ID3DXMesh
*mesh
, DWORD texture_idx
, float *texel_signal
,
775 UINT width
, UINT height
, UINT signal_dimension
, UINT component_count
, DWORD flags
,
776 LPD3DXUVATLASCB cb
, void *ctx
, ID3DXBuffer
**buffer
);
777 HRESULT WINAPI
D3DXComputeIMTFromPerVertexSignal(ID3DXMesh
*mesh
, const float *vertex_signal
,
778 UINT signal_dimension
, UINT signal_stride
, DWORD flags
,
779 LPD3DXUVATLASCB cb
, void *ctx
, ID3DXBuffer
**buffer
);
780 HRESULT WINAPI
D3DXComputeIMTFromSignal(ID3DXMesh
*mesh
, DWORD texture_idx
, UINT signal_dimension
,
781 float max_uv_distance
, DWORD flags
, LPD3DXIMTSIGNALCALLBACK signal_cb
, void *signal_ctx
,
782 LPD3DXUVATLASCB status_cb
, void *status_ctx
, ID3DXBuffer
**buffer
);
783 HRESULT WINAPI
D3DXComputeIMTFromTexture(struct ID3DXMesh
*mesh
, struct IDirect3DTexture9
*texture
,
784 DWORD texture_idx
, DWORD options
, LPD3DXUVATLASCB cb
, void *ctx
, struct ID3DXBuffer
**out
);
785 HRESULT WINAPI
D3DXComputeNormals(ID3DXBaseMesh
*mesh
, const DWORD
*adjacency
);
786 HRESULT WINAPI
D3DXComputeTangentFrameEx(ID3DXMesh
*mesh_in
, DWORD texture_in_semantic
, DWORD texture_in_idx
,
787 DWORD u_partial_out_semantic
, DWORD u_partial_out_idx
, DWORD v_partial_out_semantic
,
788 DWORD v_partial_out_idx
, DWORD normal_out_semantic
, DWORD normal_out_idx
, DWORD flags
,
789 const DWORD
*adjacency
, float partial_edge_threshold
, float singular_point_threshold
,
790 float normal_edge_threshold
, ID3DXMesh
**mesh_out
, ID3DXBuffer
**buffer
);
791 HRESULT WINAPI
D3DXComputeTangent(ID3DXMesh
*mesh
, DWORD stage
, DWORD tangent_idx
,
792 DWORD binorm_idx
, DWORD wrap
, const DWORD
*adjacency
);
793 HRESULT WINAPI
D3DXConvertMeshSubsetToSingleStrip(struct ID3DXBaseMesh
*mesh_in
, DWORD attribute_id
,
794 DWORD ib_flags
, struct IDirect3DIndexBuffer9
**index_buffer
, DWORD
*index_count
);
795 HRESULT WINAPI
D3DXConvertMeshSubsetToStrips(struct ID3DXBaseMesh
*mesh_in
, DWORD attribute_id
,
796 DWORD ib_flags
, struct IDirect3DIndexBuffer9
**index_buffer
, DWORD
*index_count
,
797 struct ID3DXBuffer
**strip_lengths
, DWORD
*strip_count
);
798 HRESULT WINAPI
D3DXDeclaratorFromFVF(DWORD
, D3DVERTEXELEMENT9
[MAX_FVF_DECL_SIZE
]);
799 HRESULT WINAPI
D3DXFVFFromDeclarator(const D3DVERTEXELEMENT9
*decl
, DWORD
*fvf
);
800 HRESULT WINAPI
D3DXGenerateOutputDecl(D3DVERTEXELEMENT9
*, CONST D3DVERTEXELEMENT9
*);
801 HRESULT WINAPI
D3DXGeneratePMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
,
802 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
,
803 DWORD min_value
, DWORD flags
, ID3DXPMesh
**pmesh
);
804 HRESULT WINAPI
D3DXIntersect(ID3DXBaseMesh
*mesh
, const D3DXVECTOR3
*ray_position
, const D3DXVECTOR3
*ray_direction
,
805 BOOL
*hit
, DWORD
*face_idx
, float *u
, float *v
, float *distance
, ID3DXBuffer
**hits
, DWORD
*hit_count
);
806 HRESULT WINAPI
D3DXIntersectSubset(ID3DXBaseMesh
*mesh
, DWORD attribute_id
, const D3DXVECTOR3
*ray_position
,
807 const D3DXVECTOR3
*ray_direction
, BOOL
*hit
, DWORD
*face_idx
, float *u
, float *v
, float *distance
,
808 ID3DXBuffer
**hits
, DWORD
*hit_count
);
809 BOOL WINAPI
D3DXIntersectTri(CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, CONST D3DXVECTOR3
*, FLOAT
*, FLOAT
*, FLOAT
*);
810 HRESULT WINAPI
D3DXOptimizeFaces(LPCVOID
, UINT
, UINT
, BOOL
, DWORD
*);
811 HRESULT WINAPI
D3DXOptimizeVertices(LPCVOID
, UINT
, UINT
, BOOL
, DWORD
*);
812 HRESULT WINAPI
D3DXRectPatchSize(CONST FLOAT
*, DWORD
*, DWORD
*);
813 HRESULT WINAPI
D3DXSHPRTCompSuperCluster(UINT
*cluster_ids
, ID3DXMesh
*scene
, UINT max_cluster_count
,
814 UINT cluster_count
, UINT
*scluster_ids
, UINT
*scluster_count
);
815 HRESULT WINAPI
D3DXSHPRTCompSplitMeshSC(UINT
*cluster_idx
, UINT vertex_count
, UINT cluster_count
, UINT
*scluster_ids
,
816 UINT scluster_count
, void *index_buffer_in
, BOOL ib_in_32bit
, UINT face_count
, ID3DXBuffer
**index_buffer_out
,
817 UINT
*index_buffer_size
, BOOL ib_out_32bit
, ID3DXBuffer
**face_remap
, ID3DXBuffer
**vertex_data
,
818 UINT
*vertex_data_length
, UINT
*sc_cluster_list
, D3DXSHPRTSPLITMESHCLUSTERDATA
*sc_data
);
819 HRESULT WINAPI
D3DXSimplifyMesh(ID3DXMesh
*mesh_in
, const DWORD
*adjacency
,
820 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
, DWORD min_value
,
821 DWORD flags
, ID3DXMesh
**mesh_out
);
822 HRESULT WINAPI
D3DXSplitMesh(ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
, const DWORD max_size
,
823 const DWORD flags
, DWORD
*mesh_out_count
, ID3DXBuffer
**mesh_out
, ID3DXBuffer
**adjacency_out
,
824 ID3DXBuffer
**face_remap_out
, ID3DXBuffer
**vertex_remap_out
);
825 HRESULT WINAPI
D3DXTesselateNPatches(ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
, float segment_count
,
826 BOOL quad_interp
, ID3DXMesh
**mesh_out
, ID3DXBuffer
**adjacency_out
);
827 HRESULT WINAPI
D3DXTesselateRectPatch(struct IDirect3DVertexBuffer9
*buffer
, const float *segment_count
,
828 const D3DVERTEXELEMENT9
*declaration
, const D3DRECTPATCH_INFO
*patch_info
, struct ID3DXMesh
*mesh
);
829 HRESULT WINAPI
D3DXTesselateTriPatch(struct IDirect3DVertexBuffer9
*buffer
, const float *segment_count
,
830 const D3DVERTEXELEMENT9
*declaration
, const D3DTRIPATCH_INFO
*patch_info
, struct ID3DXMesh
*mesh
);
831 HRESULT WINAPI
D3DXTriPatchSize(CONST FLOAT
*, DWORD
*, DWORD
*);
832 HRESULT WINAPI
D3DXUVAtlasCreate(ID3DXMesh
*mesh_in
, UINT max_chart_count
, float max_stretch_in
,
833 UINT width
, UINT height
, float gutter
, DWORD texture_idx
, const DWORD
*adjacency
, const DWORD
*false_edges
,
834 const float *imt_array
, LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
, ID3DXMesh
**mesh_out
,
835 ID3DXBuffer
**face_partitioning_out
, ID3DXBuffer
**vertex_remap_out
, float *max_stretch_out
, UINT
*chart_count
);
836 HRESULT WINAPI
D3DXUVAtlasPack(ID3DXMesh
*mesh
, UINT width
, UINT height
, float gutter
, DWORD texture_idx
,
837 const DWORD
*partition_result_adjacency
, LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
,
838 ID3DXBuffer
*face_partitioning
);
839 HRESULT WINAPI
D3DXUVAtlasPartition(ID3DXMesh
*mesh_in
, UINT max_chart_count
, float max_stretch_in
,
840 DWORD texture_idx
, const DWORD
*adjacency
, const DWORD
*false_edges
, const float *imt_array
,
841 LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
, ID3DXMesh
**mesh_out
,
842 ID3DXBuffer
**face_partitioning_out
, ID3DXBuffer
**vertex_remap_out
, ID3DXBuffer
**adjacency_out
,
843 float *max_stretch_out
, UINT
*chart_count
);
844 HRESULT WINAPI
D3DXValidMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
, ID3DXBuffer
**errors
);
845 HRESULT WINAPI
D3DXValidPatchMesh(ID3DXPatchMesh
*mesh
, DWORD
*degenerate_vertex_count
,
846 DWORD
*degenerate_patch_count
, ID3DXBuffer
**errors
);
847 HRESULT WINAPI
D3DXWeldVertices(ID3DXMesh
*mesh
, DWORD flags
, const D3DXWELDEPSILONS
*epsilons
,
848 const DWORD
*adjacency_in
, DWORD
*adjacency_out
, DWORD
*face_remap_out
, ID3DXBuffer
**vertex_remap_out
);
854 DEFINE_GUID(DXFILEOBJ_XSkinMeshHeader
, 0x3cf169ce, 0xff7c, 0x44ab, 0x93, 0xc0, 0xf7, 0x8f, 0x62, 0xd1, 0x72, 0xe2);
855 DEFINE_GUID(DXFILEOBJ_VertexDuplicationIndices
, 0xb8d65549, 0xd7c9, 0x4995, 0x89, 0xcf, 0x53, 0xa9, 0xa8, 0xb0, 0x31, 0xe3);
856 DEFINE_GUID(DXFILEOBJ_FaceAdjacency
, 0xa64c844a, 0xe282, 0x4756, 0x8b, 0x80, 0x25, 0x0c, 0xde, 0x04, 0x39, 0x8c);
857 DEFINE_GUID(DXFILEOBJ_SkinWeights
, 0x6f0d123b, 0xbad2, 0x4167, 0xa0, 0xd0, 0x80, 0x22, 0x4f, 0x25, 0xfa, 0xbb);
858 DEFINE_GUID(DXFILEOBJ_Patch
, 0xa3eb5d44, 0xfc22, 0x429d, 0x9a, 0xfb, 0x32, 0x21, 0xcb, 0x97, 0x19, 0xa6);
859 DEFINE_GUID(DXFILEOBJ_PatchMesh
, 0xd02c95cc, 0xedba, 0x4305, 0x9b, 0x5d, 0x18, 0x20, 0xd7, 0x70, 0x4d, 0xbf);
860 DEFINE_GUID(DXFILEOBJ_PatchMesh9
, 0xb9ec94e1, 0xb9a6, 0x4251, 0xba, 0x18, 0x94, 0x89, 0x3f, 0x02, 0xc0, 0xea);
861 DEFINE_GUID(DXFILEOBJ_PMInfo
, 0xb6c3e656, 0xec8b, 0x4b92, 0x9b, 0x62, 0x68, 0x16, 0x59, 0x52, 0x29, 0x47);
862 DEFINE_GUID(DXFILEOBJ_PMAttributeRange
, 0x917e0427, 0xc61e, 0x4a14, 0x9c, 0x64, 0xaf, 0xe6, 0x5f, 0x9e, 0x98, 0x44);
863 DEFINE_GUID(DXFILEOBJ_PMVSplitRecord
, 0x574ccc14, 0xf0b3, 0x4333, 0x82, 0x2d, 0x93, 0xe8, 0xa8, 0xa0, 0x8e, 0x4c);
864 DEFINE_GUID(DXFILEOBJ_FVFData
, 0xb6e70a0e, 0x8ef9, 0x4e83, 0x94, 0xad, 0xec, 0xc8, 0xb0, 0xc0, 0x48, 0x97);
865 DEFINE_GUID(DXFILEOBJ_VertexElement
, 0xf752461c, 0x1e23, 0x48f6, 0xb9, 0xf8, 0x83, 0x50, 0x85, 0x0f, 0x33, 0x6f);
866 DEFINE_GUID(DXFILEOBJ_DeclData
, 0xbf22e553, 0x292c, 0x4781, 0x9f, 0xea, 0x62, 0xbd, 0x55, 0x4b, 0xdd, 0x93);
867 DEFINE_GUID(DXFILEOBJ_EffectFloats
, 0xf1cfe2b3, 0x0de3, 0x4e28, 0xaf, 0xa1, 0x15, 0x5a, 0x75, 0x0a, 0x28, 0x2d);
868 DEFINE_GUID(DXFILEOBJ_EffectString
, 0xd55b097e, 0xbdb6, 0x4c52, 0xb0, 0x3d, 0x60, 0x51, 0xc8, 0x9d, 0x0e, 0x42);
869 DEFINE_GUID(DXFILEOBJ_EffectDWord
, 0x622c0ed0, 0x956e, 0x4da9, 0x90, 0x8a, 0x2a, 0xf9, 0x4f, 0x3c, 0xe7, 0x16);
870 DEFINE_GUID(DXFILEOBJ_EffectParamFloats
, 0x3014b9a0, 0x62f5, 0x478c, 0x9b, 0x86, 0xe4, 0xac, 0x9f, 0x4e, 0x41, 0x8b);
871 DEFINE_GUID(DXFILEOBJ_EffectParamString
, 0x1dbc4c88, 0x94c1, 0x46ee, 0x90, 0x76, 0x2c, 0x28, 0x81, 0x8c, 0x94, 0x81);
872 DEFINE_GUID(DXFILEOBJ_EffectParamDWord
, 0xe13963bc, 0xae51, 0x4c5d, 0xb0, 0x0f, 0xcf, 0xa3, 0xa9, 0xd9, 0x7c, 0xe5);
873 DEFINE_GUID(DXFILEOBJ_EffectInstance
, 0xe331f7e4, 0x0559, 0x4cc2, 0x8e, 0x99, 0x1c, 0xec, 0x16, 0x57, 0x92, 0x8f);
874 DEFINE_GUID(DXFILEOBJ_AnimTicksPerSecond
, 0x9e415a43, 0x7ba6, 0x4a73, 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76);
875 DEFINE_GUID(DXFILEOBJ_CompressedAnimationSet
, 0x7f9b00b3, 0xf125, 0x4890, 0x87, 0x6e, 0x1c, 0x42, 0xbf, 0x69, 0x7c, 0x4d);
877 #define XSKINEXP_TEMPLATES \
879 template XSkinMeshHeader \
881 <3CF169CE-FF7C-44ab-93C0-F78F62D172E2> \
882 WORD nMaxSkinWeightsPerVertex; \
883 WORD nMaxSkinWeightsPerFace; \
886 template VertexDuplicationIndices \
888 <B8D65549-D7C9-4995-89CF-53A9A8B031E3> \
890 DWORD nOriginalVertices; \
891 array DWORD indices[nIndices]; \
893 template FaceAdjacency \
895 <A64C844A-E282-4756-8B80-250CDE04398C> \
897 array DWORD indices[nIndices]; \
899 template SkinWeights \
901 <6F0D123B-BAD2-4167-A0D0-80224F25FABB> \
902 STRING transformNodeName; \
904 array DWORD vertexIndices[nWeights]; \
905 array float weights[nWeights]; \
906 Matrix4x4 matrixOffset; \
910 <A3EB5D44-FC22-429D-9AFB-3221CB9719A6> \
911 DWORD nControlIndices; \
912 array DWORD controlIndices[nControlIndices]; \
916 <D02C95CC-EDBA-4305-9B5D-1820D7704BBF> \
918 array Vector vertices[nVertices]; \
920 array Patch patches[nPatches]; \
923 template PatchMesh9 \
925 <B9EC94E1-B9A6-4251-BA18-94893F02C0EA> \
930 array Vector vertices[nVertices]; \
932 array Patch patches[nPatches]; \
934 } template EffectFloats \
936 <F1CFE2B3-0DE3-4e28-AFA1-155A750A282D> \
938 array float Floats[nFloats]; \
940 template EffectString \
942 <D55B097E-BDB6-4c52-B03D-6051C89D0E42> \
945 template EffectDWord \
947 <622C0ED0-956E-4da9-908A-2AF94F3CE716> \
949 } template EffectParamFloats \
951 <3014B9A0-62F5-478c-9B86-E4AC9F4E418B> \
954 array float Floats[nFloats]; \
955 } template EffectParamString \
957 <1DBC4C88-94C1-46ee-9076-2C28818C9481> \
961 template EffectParamDWord \
963 <E13963BC-AE51-4c5d-B00F-CFA3A9D97CE5> \
967 template EffectInstance \
969 <E331F7E4-0559-4cc2-8E99-1CEC1657928F> \
970 STRING EffectFilename; \
972 } template AnimTicksPerSecond \
974 <9E415A43-7BA6-4a73-8743-B73D47E88476> \
975 DWORD AnimTicksPerSecond; \
977 template CompressedAnimationSet \
979 <7F9B00B3-F125-4890-876E-1C42BF697C4D> \
980 DWORD CompressedBlockSize; \
982 DWORD PlaybackType; \
983 DWORD BufferLength; \
984 array DWORD CompressedData[BufferLength]; \
987 #define XEXTENSIONS_TEMPLATES \
991 <B6E70A0E-8EF9-4e83-94AD-ECC8B0C04897> \
994 array DWORD data[nDWords]; \
996 template VertexElement \
998 <F752461C-1E23-48f6-B9F8-8350850F336F> \
1006 <BF22E553-292C-4781-9FEA-62BD554BDD93> \
1008 array VertexElement Elements[nElements]; \
1010 array DWORD data[nDWords]; \
1012 template PMAttributeRange \
1014 <917E0427-C61E-4a14-9C64-AFE65F9E9844> \
1015 DWORD iFaceOffset; \
1018 DWORD iVertexOffset; \
1019 DWORD nVerticesMin; \
1020 DWORD nVerticesMax; \
1022 template PMVSplitRecord \
1024 <574CCC14-F0B3-4333-822D-93E8A8A08E4C> \
1031 <B6C3E656-EC8B-4b92-9B62-681659522947> \
1032 DWORD nAttributes; \
1033 array PMAttributeRange attributeRanges[nAttributes]; \
1034 DWORD nMaxValence; \
1035 DWORD nMinLogicalVertices; \
1036 DWORD nMaxLogicalVertices; \
1038 array PMVSplitRecord splitRecords[nVSplits]; \
1039 DWORD nAttributeMispredicts; \
1040 array DWORD attributeMispredicts[nAttributeMispredicts]; \
1043 #endif /* __WINE_D3DX9MESH_H */