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 char *pTextureFilename
;
197 } D3DXMATERIAL
, *LPD3DXMATERIAL
;
199 typedef struct _D3DXEFFECTDEFAULT
202 D3DXEFFECTDEFAULTTYPE Type
;
205 } D3DXEFFECTDEFAULT
, *LPD3DXEFFECTDEFAULT
;
207 typedef struct _D3DXEFFECTINSTANCE
209 char *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 complete
, void *ctx
);
301 typedef HRESULT (WINAPI
*LPD3DXIMTSIGNALCALLBACK
)(const D3DXVECTOR2
*, UINT
, UINT
, void *, FLOAT
*);
302 typedef HRESULT (WINAPI
*LPD3DXSHPRTSIMCB
)(float complete
, void *ctx
);
305 #define INTERFACE ID3DXBaseMesh
307 DECLARE_INTERFACE_(ID3DXBaseMesh
, IUnknown
)
309 /*** IUnknown methods ***/
310 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) 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
, void **data
) PURE
;
329 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
330 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, void **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
, void **out
) 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
, void **data
) PURE
;
363 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
364 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, void **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
,
379 DWORD attrib_table_size
) PURE
;
383 #define INTERFACE ID3DXPMesh
384 DECLARE_INTERFACE_(ID3DXPMesh
, ID3DXBaseMesh
)
386 /*** IUnknown methods ***/
387 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
388 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
389 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
390 /*** ID3DXBaseMesh ***/
391 STDMETHOD(DrawSubset
)(THIS_ DWORD attrib_id
) PURE
;
392 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
393 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
394 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
395 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
396 STDMETHOD_(DWORD
, GetNumBytesPerVertex
)(THIS
) PURE
;
397 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
398 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
399 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
400 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
401 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
402 struct IDirect3DDevice9
*device
, struct ID3DXMesh
**clone_mesh
) PURE
;
403 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
404 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
405 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, void **data
) PURE
;
406 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
407 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, void **data
) PURE
;
408 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
409 STDMETHOD(GetAttributeTable
)(THIS_ D3DXATTRIBUTERANGE
* attrib_table
, DWORD
* attrib_table_size
) PURE
;
410 STDMETHOD(ConvertPointRepsToAdjacency
)(THIS_
const DWORD
*point_reps
, DWORD
*adjacency
) PURE
;
411 STDMETHOD(ConvertAdjacencyToPointReps
)(THIS_
const DWORD
*adjacency
, DWORD
*point_reps
) PURE
;
412 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT epsilon
, DWORD
* adjacency
) PURE
;
413 STDMETHOD(UpdateSemantics
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
415 STDMETHOD(ClonePMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
416 struct IDirect3DDevice9
*device
, struct ID3DXPMesh
**clone_mesh
) PURE
;
417 STDMETHOD(ClonePMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
418 struct IDirect3DDevice9
*device
, struct ID3DXPMesh
**clone_mesh
) PURE
;
419 STDMETHOD(SetNumFaces
)(THIS_ DWORD faces
) PURE
;
420 STDMETHOD(SetNumVertices
)(THIS_ DWORD vertices
) PURE
;
421 STDMETHOD_(DWORD
, GetMaxFaces
)(THIS
) PURE
;
422 STDMETHOD_(DWORD
, GetMinFaces
)(THIS
) PURE
;
423 STDMETHOD_(DWORD
, GetMaxVertices
)(THIS
) PURE
;
424 STDMETHOD_(DWORD
, GetMinVertices
)(THIS
) PURE
;
425 STDMETHOD(Save
)(THIS_ IStream
*stream
, const D3DXMATERIAL
*material
,
426 const D3DXEFFECTINSTANCE
*effect_instance
, DWORD num_materials
) PURE
;
427 STDMETHOD(Optimize
)(THIS_ DWORD flags
, DWORD
*adjacency_out
, DWORD
*face_remap
,
428 ID3DXBuffer
**vertex_remap
, ID3DXMesh
**opt_mesh
) PURE
;
429 STDMETHOD(OptimizeBaseLOD
)(THIS_ DWORD flags
, DWORD
* face_remap
) PURE
;
430 STDMETHOD(TrimByFaces
)(THIS_ DWORD new_faces_min
, DWORD new_faces_max
, DWORD
* face_remap
, DWORD
* vertex_remap
) PURE
;
431 STDMETHOD(TrimByVertices
)(THIS_ DWORD new_vertices_min
, DWORD new_vertices_max
, DWORD
* face_remap
, DWORD
* vertex_remap
) PURE
;
432 STDMETHOD(GetAdjacency
)(THIS_ DWORD
* adjacency
) PURE
;
433 STDMETHOD(GenerateVertexHistory
)(THIS_ DWORD
* vertex_history
) PURE
;
437 #define INTERFACE ID3DXSPMesh
438 DECLARE_INTERFACE_(ID3DXSPMesh
, IUnknown
)
440 /*** IUnknown methods ***/
441 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
442 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
443 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
444 /*** ID3DXSPMesh ***/
445 STDMETHOD_(DWORD
, GetNumFaces
)(THIS
) PURE
;
446 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
447 STDMETHOD_(DWORD
, GetNumFVF
)(THIS
) PURE
;
448 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
449 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
450 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
451 STDMETHOD(CloneMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
452 struct IDirect3DDevice9
*device
, DWORD
*adjacency_out
,
453 DWORD
*vertex_remap_out
, struct ID3DXMesh
**clone_mesh
) PURE
;
454 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
455 struct IDirect3DDevice9
*device
, DWORD
*adjacency_out
,
456 DWORD
*vertex_remap_out
, struct ID3DXMesh
**clone_mesh
) PURE
;
457 STDMETHOD(ClonePMeshFVF
)(THIS_ DWORD options
, DWORD fvf
,
458 struct IDirect3DDevice9
*device
, DWORD
*vertex_remap_out
,
459 float *errors_by_face
, struct ID3DXPMesh
**clone_mesh
) PURE
;
460 STDMETHOD(ClonePMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
,
461 struct IDirect3DDevice9
*device
, DWORD
*vertex_remap_out
,
462 float *errors_by_face
, struct ID3DXPMesh
**clone_mesh
) PURE
;
463 STDMETHOD(ReduceFaces
)(THIS_ DWORD faces
) PURE
;
464 STDMETHOD(ReduceVertices
)(THIS_ DWORD vertices
) PURE
;
465 STDMETHOD_(DWORD
, GetMaxFaces
)(THIS
) PURE
;
466 STDMETHOD_(DWORD
, GetMaxVertices
)(THIS
) PURE
;
467 STDMETHOD(GetVertexAttributeWeights
)(THIS_ LPD3DXATTRIBUTEWEIGHTS vertex_attribute_weights
) PURE
;
468 STDMETHOD(GetVertexWeights
)(THIS_ FLOAT
* vertex_weights
) PURE
;
472 #define INTERFACE ID3DXPatchMesh
473 DECLARE_INTERFACE_(ID3DXPatchMesh
, IUnknown
)
475 /*** IUnknown methods ***/
476 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
477 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
478 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
479 /*** ID3DXPatchMesh ***/
480 STDMETHOD_(DWORD
, GetNumPatches
)(THIS
) PURE
;
481 STDMETHOD_(DWORD
, GetNumVertices
)(THIS
) PURE
;
482 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
483 STDMETHOD_(DWORD
, GetControlVerticesPerPatch
)(THIS
) PURE
;
484 STDMETHOD_(DWORD
, GetOptions
)(THIS
) PURE
;
485 STDMETHOD(GetDevice
)(THIS_
struct IDirect3DDevice9
**device
) PURE
;
486 STDMETHOD(GetPatchInfo
)(THIS_ LPD3DXPATCHINFO patch_info
) PURE
;
487 STDMETHOD(GetVertexBuffer
)(THIS_
struct IDirect3DVertexBuffer9
**vertex_buffer
) PURE
;
488 STDMETHOD(GetIndexBuffer
)(THIS_
struct IDirect3DIndexBuffer9
**index_buffer
) PURE
;
489 STDMETHOD(LockVertexBuffer
)(THIS_ DWORD flags
, void **data
) PURE
;
490 STDMETHOD(UnlockVertexBuffer
)(THIS
) PURE
;
491 STDMETHOD(LockIndexBuffer
)(THIS_ DWORD flags
, void **data
) PURE
;
492 STDMETHOD(UnlockIndexBuffer
)(THIS
) PURE
;
493 STDMETHOD(LockAttributeBuffer
)(THIS_ DWORD flags
, DWORD
** data
) PURE
;
494 STDMETHOD(UnlockAttributeBuffer
)(THIS
) PURE
;
495 STDMETHOD(GetTessSize
)(THIS_ FLOAT tess_level
, DWORD adaptive
, DWORD
* num_triangles
, DWORD
* num_vertices
) PURE
;
496 STDMETHOD(GenerateAdjacency
)(THIS_ FLOAT tolerance
) PURE
;
497 STDMETHOD(CloneMesh
)(THIS_ DWORD options
, const D3DVERTEXELEMENT9
*declaration
, ID3DXPatchMesh
**clone_mesh
) PURE
;
498 STDMETHOD(Optimize
)(THIS_ DWORD flags
) PURE
;
499 STDMETHOD(SetDisplaceParam
)(THIS_
struct IDirect3DBaseTexture9
*texture
, D3DTEXTUREFILTERTYPE min_filter
,
500 D3DTEXTUREFILTERTYPE mag_filter
, D3DTEXTUREFILTERTYPE mip_filter
, D3DTEXTUREADDRESS wrap
,
501 DWORD lod_bias
) PURE
;
502 STDMETHOD(GetDisplaceParam
)(THIS_
struct IDirect3DBaseTexture9
**texture
, D3DTEXTUREFILTERTYPE
*min_filter
,
503 D3DTEXTUREFILTERTYPE
*mag_filter
, D3DTEXTUREFILTERTYPE
*mip_filter
, D3DTEXTUREADDRESS
*wrap
,
504 DWORD
*lod_bias
) PURE
;
505 STDMETHOD(Tessellate
)(THIS_
float tess_level
, ID3DXMesh
*mesh
) PURE
;
506 STDMETHOD(TessellateAdaptive
)(THIS_
const D3DXVECTOR4
*trans
, DWORD max_tess_level
,
507 DWORD min_tess_level
, ID3DXMesh
*mesh
) PURE
;
511 #define INTERFACE ID3DXSkinInfo
512 DECLARE_INTERFACE_(ID3DXSkinInfo
, IUnknown
)
514 /*** IUnknown methods ***/
515 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
516 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
517 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
518 /*** ID3DXSkinInfo ***/
519 STDMETHOD(SetBoneInfluence
)(THIS_ DWORD bone
, DWORD num_influences
, const DWORD
*vertices
,
520 const FLOAT
*weights
) PURE
;
521 STDMETHOD(SetBoneVertexInfluence
)(THIS_ DWORD bone_num
, DWORD influence_num
, float weight
) PURE
;
522 STDMETHOD_(DWORD
, GetNumBoneInfluences
)(THIS_ DWORD bone
) PURE
;
523 STDMETHOD(GetBoneInfluence
)(THIS_ DWORD bone
, DWORD
* vertices
, FLOAT
* weights
) PURE
;
524 STDMETHOD(GetBoneVertexInfluence
)(THIS_ DWORD bone_num
, DWORD influence_num
, float *weight
, DWORD
* vertex_num
) PURE
;
525 STDMETHOD(GetMaxVertexInfluences
)(THIS_ DWORD
* max_vertex_influences
) PURE
;
526 STDMETHOD_(DWORD
, GetNumBones
)(THIS
) PURE
;
527 STDMETHOD(FindBoneVertexInfluenceIndex
)(THIS_ DWORD bone_num
, DWORD vertex_num
, DWORD
* influence_index
) PURE
;
528 STDMETHOD(GetMaxFaceInfluences
)(THIS_
struct IDirect3DIndexBuffer9
*index_buffer
,
529 DWORD num_faces
, DWORD
*max_face_influences
) PURE
;
530 STDMETHOD(SetMinBoneInfluence
)(THIS_ FLOAT min_influence
) PURE
;
531 STDMETHOD_(FLOAT
, GetMinBoneInfluence
)(THIS
) PURE
;
532 STDMETHOD(SetBoneName
)(THIS_ DWORD bone_idx
, const char *name
) PURE
;
533 STDMETHOD_(const char *, GetBoneName
)(THIS_ DWORD bone_idx
) PURE
;
534 STDMETHOD(SetBoneOffsetMatrix
)(THIS_ DWORD bone
, const D3DXMATRIX
*bone_transform
) PURE
;
535 STDMETHOD_(D3DXMATRIX
*, GetBoneOffsetMatrix
)(THIS_ DWORD bone
) PURE
;
536 STDMETHOD(Clone
)(THIS_ ID3DXSkinInfo
**skin_info
) PURE
;
537 STDMETHOD(Remap
)(THIS_ DWORD num_vertices
, DWORD
* vertex_remap
) PURE
;
538 STDMETHOD(SetFVF
)(THIS_ DWORD FVF
) PURE
;
539 STDMETHOD(SetDeclaration
)(THIS_
const D3DVERTEXELEMENT9
*declaration
) PURE
;
540 STDMETHOD_(DWORD
, GetFVF
)(THIS
) PURE
;
541 STDMETHOD(GetDeclaration
)(THIS_ D3DVERTEXELEMENT9 declaration
[MAX_FVF_DECL_SIZE
]) PURE
;
542 STDMETHOD(UpdateSkinnedMesh
)(THIS_
const D3DXMATRIX
*bone_transforms
,
543 const D3DXMATRIX
*bone_inv_transpose_transforms
, const void *src_vertices
, void *dst_vertices
) PURE
;
544 STDMETHOD(ConvertToBlendedMesh
)(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
;
547 STDMETHOD(ConvertToIndexedBlendedMesh
)(THIS_ ID3DXMesh
*mesh_in
, DWORD options
, DWORD palette_size
,
548 const DWORD
*adjacency_in
, DWORD
*adjacency_out
, DWORD
*face_remap
, ID3DXBuffer
**vertex_remap
,
549 DWORD
*max_face_infl
, DWORD
*num_bone_combinations
, ID3DXBuffer
**bone_combination_table
,
550 ID3DXMesh
**mesh_out
) PURE
;
554 #define INTERFACE ID3DXPRTBuffer
555 DECLARE_INTERFACE_(ID3DXPRTBuffer
, IUnknown
)
557 /*** IUnknown methods ***/
558 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
559 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
560 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
561 /*** ID3DXPRTBuffer methods ***/
562 STDMETHOD_(UINT
, GetNumSamples
)(THIS
) PURE
;
563 STDMETHOD_(UINT
, GetNumCoeffs
)(THIS
) PURE
;
564 STDMETHOD_(UINT
, GetNumChannels
)(THIS
) PURE
;
565 STDMETHOD_(BOOL
, IsTexture
)(THIS
) PURE
;
566 STDMETHOD_(BOOL
, GetWidth
)(THIS
) PURE
;
567 STDMETHOD_(BOOL
, GetHeight
)(THIS
) PURE
;
568 STDMETHOD(Resize
)(THIS_ UINT new_size
) PURE
;
569 STDMETHOD(LockBuffer
)(THIS_ UINT start
, UINT num_samples
, FLOAT
**data
) PURE
;
570 STDMETHOD(UnlockBuffer
)(THIS
) PURE
;
571 STDMETHOD(ScaleBuffer
)(THIS_ FLOAT scale
) PURE
;
572 STDMETHOD(AddBuffer
)(THIS_ ID3DXPRTBuffer
*buffer
) PURE
;
573 STDMETHOD(AttachGH
)(THIS_
struct ID3DXTextureGutterHelper
*gh
) PURE
;
574 STDMETHOD(ReleaseGH
)(THIS
) PURE
;
575 STDMETHOD(EvalGH
)(THIS
) PURE
;
576 STDMETHOD(ExtractTexture
)(THIS_ UINT channel
, UINT start_coefficient
,
577 UINT num_coefficients
, struct IDirect3DTexture9
*texture
) PURE
;
578 STDMETHOD(ExtractToMesh
)(THIS_ UINT num_coefficients
, D3DDECLUSAGE usage
,
579 UINT usage_index_start
, ID3DXMesh
*scene
) PURE
;
583 #define INTERFACE ID3DXPRTCompBuffer
584 DECLARE_INTERFACE_(ID3DXPRTCompBuffer
, IUnknown
)
586 /*** IUnknown methods ***/
587 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
588 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
589 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
590 /*** ID3DXPRTCompBuffer methods ***/
591 STDMETHOD_(UINT
, GetNumSamples
)(THIS
) PURE
;
592 STDMETHOD_(UINT
, GetNumCoeffs
)(THIS
) PURE
;
593 STDMETHOD_(UINT
, GetNumChannels
)(THIS
) PURE
;
594 STDMETHOD_(BOOL
, IsTexture
)(THIS
) PURE
;
595 STDMETHOD_(UINT
, GetWidth
)(THIS
) PURE
;
596 STDMETHOD_(UINT
, GetHeight
)(THIS
) PURE
;
597 STDMETHOD_(UINT
, GetNumClusters
)(THIS
) PURE
;
598 STDMETHOD_(UINT
, GetNumPCA
)(THIS
) PURE
;
599 STDMETHOD(NormalizeData
)(THIS
) PURE
;
600 STDMETHOD(ExtractBasis
)(THIS_ UINT cluster
, FLOAT
*cluster_basis
) PURE
;
601 STDMETHOD(ExtractClusterIDs
)(THIS_ UINT
*cluster_ids
) PURE
;
602 STDMETHOD(ExtractPCA
)(THIS_ UINT start_pca
, UINT num_extract
, FLOAT
*pca_coefficients
) PURE
;
603 STDMETHOD(ExtractTexture
)(THIS_ UINT start_pca
, UINT num_pca
, struct IDirect3DTexture9
*texture
) PURE
;
604 STDMETHOD(ExtractToMesh
)(THIS_ UINT num_pca
, D3DDECLUSAGE usage
, UINT usage_index_start
, ID3DXMesh
*scene
) PURE
;
608 #define INTERFACE ID3DXTextureGutterHelper
609 DECLARE_INTERFACE_(ID3DXTextureGutterHelper
, IUnknown
)
611 /*** IUnknown methods ***/
612 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
613 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
614 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
615 /*** ID3DXTextureGutterHelper methods ***/
616 STDMETHOD_(UINT
, GetWidth
)(THIS
) PURE
;
617 STDMETHOD_(UINT
, GetHeight
)(THIS
) PURE
;
619 STDMETHOD(ApplyGuttersFloat
)(THIS_ FLOAT
*data_in
, UINT num_coeffs
, UINT width
, UINT height
) PURE
;
620 STDMETHOD(ApplyGuttersTex
)(THIS_
struct IDirect3DTexture9
*texture
) PURE
;
621 STDMETHOD(ApplyGuttersPRT
)(THIS_ ID3DXPRTBuffer
*buffer
) PURE
;
622 STDMETHOD(ResampleTex
)(THIS_
struct IDirect3DTexture9
*texture_in
, struct ID3DXMesh
*mesh_in
,
623 D3DDECLUSAGE usage
, UINT usage_index
, struct IDirect3DTexture9
*texture_out
) PURE
;
624 STDMETHOD(GetFaceMap
)(THIS_ UINT
*face_data
) PURE
;
625 STDMETHOD(GetBaryMap
)(THIS_ D3DXVECTOR2
*bary_data
) PURE
;
626 STDMETHOD(GetTexelMap
)(THIS_ D3DXVECTOR2
*texel_data
) PURE
;
627 STDMETHOD(GetGutterMap
)(THIS_ BYTE
*gutter_data
) PURE
;
628 STDMETHOD(SetFaceMap
)(THIS_ UINT
*face_data
) PURE
;
629 STDMETHOD(SetBaryMap
)(THIS_ D3DXVECTOR2
*bary_data
) PURE
;
630 STDMETHOD(SetTexelMap
)(THIS_ D3DXVECTOR2
*texel_data
) PURE
;
631 STDMETHOD(SetGutterMap
)(THIS_ BYTE
*gutter_data
) PURE
;
635 #define INTERFACE ID3DXPRTEngine
636 DECLARE_INTERFACE_(ID3DXPRTEngine
, IUnknown
)
638 /*** IUnknown methods ***/
639 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
640 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
641 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
642 /*** ID3DXPRTEngine methods ***/
643 STDMETHOD(SetMeshMaterials
)(THIS_
const D3DXSHMATERIAL
**materials
, UINT num_meshes
,
644 UINT num_channels
, BOOL set_albedo
, FLOAT length_scale
) PURE
;
645 STDMETHOD(SetPerVertexAlbedo
)(THIS_
const void *data_in
, UINT num_channels
, UINT stride
) PURE
;
646 STDMETHOD(SetPerTexelAlbedo
)(THIS_
struct IDirect3DTexture9
*albedo_texture
,
647 UINT num_channels
, struct ID3DXTextureGutterHelper
*gh
) PURE
;
648 STDMETHOD(GetVertexAlbedo
)(THIS_ D3DXCOLOR
*vert_colors
, UINT num_verts
) PURE
;
649 STDMETHOD(SetPerTexelNormals
)(THIS_
struct IDirect3DTexture9
*normal_texture
) PURE
;
650 STDMETHOD(ExtractPerVertexAlbedo
)(THIS_ ID3DXMesh
*mesh
, D3DDECLUSAGE usage
, UINT num_channels
) PURE
;
651 STDMETHOD(ResampleBuffer
)(THIS_ ID3DXPRTBuffer
*buffer_in
, ID3DXPRTBuffer
*buffer_out
) PURE
;
652 STDMETHOD(GetAdaptedMesh
)(THIS_
struct IDirect3DDevice9
*device
, UINT
*face_remap
,
653 UINT
*vert_remap
, float *vert_weights
, struct ID3DXMesh
**mesh
) PURE
;
654 STDMETHOD_(UINT
, GetNumVerts
)(THIS
) PURE
;
655 STDMETHOD_(UINT
, GetNumFaces
)(THIS
) PURE
;
656 STDMETHOD(SetMinMaxIntersection
)(THIS_ FLOAT min
, FLOAT max
) PURE
;
657 STDMETHOD(RobustMeshRefine
)(THIS_ FLOAT min_edge_length
, UINT max_subdiv
) PURE
;
658 STDMETHOD(SetSamplingInfo
)(THIS_ UINT num_rays
, BOOL use_sphere
,
659 BOOL use_cosine
, BOOL adaptive
, FLOAT adpative_thresh
) PURE
;
660 STDMETHOD(ComputeDirectLightingSH
)(THIS_ UINT sh_order
, ID3DXPRTBuffer
*data_out
) PURE
;
661 STDMETHOD(ComputeDirectLightingSHAdaptive
)(THIS_ UINT sh_order
, float adaptive_thresh
,
662 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
) PURE
;
663 STDMETHOD(ComputeDirectLightingSHGPU
)(THIS_
struct IDirect3DDevice9
*device
, UINT flags
,
664 UINT sh_order
, float zbias
, float zangle_bias
, struct ID3DXPRTBuffer
*data_out
) PURE
;
665 STDMETHOD(ComputeSS
)(THIS_ ID3DXPRTBuffer
*data_in
, ID3DXPRTBuffer
*data_out
,
666 ID3DXPRTBuffer
*data_total
) PURE
;
667 STDMETHOD(ComputeSSAdaptive
)(THIS_ ID3DXPRTBuffer
*data_in
, float adaptive_thres
,
668 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
, ID3DXPRTBuffer
*data_total
) PURE
;
669 STDMETHOD(ComputeBounce
)(THIS_ ID3DXPRTBuffer
*data_in
, ID3DXPRTBuffer
*data_out
,
670 ID3DXPRTBuffer
*data_total
) PURE
;
671 STDMETHOD(ComputeBounceAdaptive
)(THIS_ ID3DXPRTBuffer
*data_in
, float adaptive_thres
,
672 float min_edge_length
, UINT max_subdiv
, ID3DXPRTBuffer
*data_out
, ID3DXPRTBuffer
*data_total
) PURE
;
673 STDMETHOD(ComputeVolumeSamplesDirectSH
)(THIS_ UINT sh_order_in
, UINT sh_order_out
,
674 UINT num_vol_samples
, const D3DXVECTOR3
*sample_locs
, ID3DXPRTBuffer
*data_out
) PURE
;
675 STDMETHOD(ComputeVolumeSamples
)(THIS_ ID3DXPRTBuffer
*surf_data_in
, UINT sh_order
,
676 UINT num_vol_samples
, const D3DXVECTOR3
*sample_locs
, ID3DXPRTBuffer
*data_out
) PURE
;
677 STDMETHOD(ComputeSurfSamplesDirectSH
)(THIS_ UINT sh_order
, UINT num_samples
,
678 const D3DXVECTOR3
*sample_locs
, const D3DXVECTOR3
*sample_norms
, ID3DXPRTBuffer
*data_out
) PURE
;
679 STDMETHOD(ComputeSurfSamplesBounce
)(THIS_ ID3DXPRTBuffer
*surf_data_in
, UINT num_samples
,
680 const D3DXVECTOR3
*sample_locs
, const D3DXVECTOR3
*sample_norms
, ID3DXPRTBuffer
*data_out
,
681 ID3DXPRTBuffer
*data_total
) PURE
;
682 STDMETHOD(FreeSSData
)(THIS
) PURE
;
683 STDMETHOD(FreeBounceData
)(THIS
) PURE
;
684 STDMETHOD(ComputeLDPRTCoeffs
)(THIS_ ID3DXPRTBuffer
*data_in
, UINT sh_order
, D3DXVECTOR3
*norm_out
,
685 ID3DXPRTBuffer
*data_out
) PURE
;
686 STDMETHOD(ScaleMeshChunk
)(THIS_ UINT mesh_chunk
, float scale
, ID3DXPRTBuffer
*data_out
) PURE
;
687 STDMETHOD(MultiplyAlbedo
)(THIS_ ID3DXPRTBuffer
*data_out
) PURE
;
688 STDMETHOD(SetCallback
)(THIS_ LPD3DXSHPRTSIMCB cb
, float frequency
, void *user_context
) PURE
;
689 STDMETHOD_(BOOL
, ShadowRayIntersects
)(THIS_
const D3DXVECTOR3
*ray_pos
,
690 const D3DXVECTOR3
*ray_dir
) PURE
;
691 STDMETHOD_(BOOL
, ClosestRayIntersects
)(THIS_
const D3DXVECTOR3
*ray_pos
,
692 const D3DXVECTOR3
*ray_dir
, DWORD
*face_index
, FLOAT
*u
, FLOAT
*v
, FLOAT
*dist
) PURE
;
700 HRESULT WINAPI
D3DXCreateMesh(DWORD face_count
, DWORD vertex_count
, DWORD flags
,
701 const D3DVERTEXELEMENT9
*declaration
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
702 HRESULT WINAPI
D3DXCreateMeshFVF(DWORD face_count
, DWORD vertex_count
, DWORD flags
,
703 DWORD fvf
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
704 HRESULT WINAPI
D3DXCreateBuffer(DWORD size
, ID3DXBuffer
**buffer
);
705 HRESULT WINAPI
D3DXCreateSPMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
,
706 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
, ID3DXSPMesh
**spmesh
);
707 HRESULT WINAPI
D3DXCreatePMeshFromStream(struct IStream
*stream
, DWORD flags
, struct IDirect3DDevice9
*device
,
708 struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
709 DWORD
*material_count
, struct ID3DXPMesh
**mesh
);
710 HRESULT WINAPI
D3DXCreateSkinInfo(DWORD vertex_count
, const D3DVERTEXELEMENT9
*declaration
,
711 DWORD bone_count
, ID3DXSkinInfo
**skin_info
);
712 HRESULT WINAPI
D3DXCreateSkinInfoFVF(DWORD vertex_count
, DWORD fvf
, DWORD bone_count
, ID3DXSkinInfo
**skin_info
);
713 HRESULT WINAPI
D3DXCreateSkinInfoFromBlendedMesh(ID3DXBaseMesh
*mesh
, DWORD bone_count
,
714 const D3DXBONECOMBINATION
*bone_combination_table
, ID3DXSkinInfo
**skin_info
);
715 HRESULT WINAPI
D3DXCreatePatchMesh(const D3DXPATCHINFO
*patch_info
, DWORD patch_count
,
716 DWORD vertex_count
, DWORD flags
, const D3DVERTEXELEMENT9
*declaration
,
717 struct IDirect3DDevice9
*device
, struct ID3DXPatchMesh
**mesh
);
718 HRESULT WINAPI
D3DXCreatePRTBuffer(UINT sample_count
, UINT coeff_count
, UINT channel_count
, ID3DXPRTBuffer
**buffer
);
719 HRESULT WINAPI
D3DXCreatePRTBufferTex(UINT width
, UINT height
, UINT coeff_count
,
720 UINT channel_count
, ID3DXPRTBuffer
**buffer
);
721 HRESULT WINAPI
D3DXCreatePRTCompBuffer(D3DXSHCOMPRESSQUALITYTYPE quality
, UINT cluster_count
, UINT pca_count
,
722 LPD3DXSHPRTSIMCB cb
, void *ctx
, ID3DXPRTBuffer
*input
, ID3DXPRTCompBuffer
**buffer
);
723 HRESULT WINAPI
D3DXCreateTextureGutterHelper(UINT width
, UINT height
, ID3DXMesh
*mesh
,
724 float gutter_size
, ID3DXTextureGutterHelper
**gh
);
725 HRESULT WINAPI
D3DXCreatePRTEngine(ID3DXMesh
*mesh
, DWORD
*adjacency
, BOOL extract_uv
,
726 ID3DXMesh
*blocker_mesh
, ID3DXPRTEngine
**engine
);
727 HRESULT WINAPI
D3DXLoadMeshFromXA(const char *filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
728 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
729 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
730 HRESULT WINAPI
D3DXLoadMeshFromXW(const WCHAR
*filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
731 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
732 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
733 #define D3DXLoadMeshFromX WINELIB_NAME_AW(D3DXLoadMeshFromX)
734 HRESULT WINAPI
D3DXLoadMeshFromXInMemory(const void *data
, DWORD data_size
, DWORD flags
,
735 struct IDirect3DDevice9
*device
, struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
,
736 struct ID3DXBuffer
**effect_instances
, DWORD
*material_count
, struct ID3DXMesh
**mesh
);
737 HRESULT WINAPI
D3DXLoadMeshFromXResource(HMODULE module
, const char *resource
, const char *resource_type
,
738 DWORD flags
, struct IDirect3DDevice9
*device
, struct ID3DXBuffer
**adjacency
,
739 struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
740 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
741 HRESULT WINAPI
D3DXLoadMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
742 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
743 DWORD
*material_count
, struct ID3DXMesh
**mesh
);
744 HRESULT WINAPI
D3DXLoadPatchMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
745 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
746 DWORD
*material_count
, struct ID3DXPatchMesh
**mesh
);
747 HRESULT WINAPI
D3DXLoadSkinMeshFromXof(struct ID3DXFileData
*file_data
, DWORD flags
, struct IDirect3DDevice9
*device
,
748 struct ID3DXBuffer
**adjacency
, struct ID3DXBuffer
**materials
, struct ID3DXBuffer
**effect_instances
,
749 DWORD
*material_count
, struct ID3DXSkinInfo
**skin_info
, struct ID3DXMesh
**mesh
);
750 HRESULT WINAPI
D3DXLoadPRTBufferFromFileA(const char *filename
, ID3DXPRTBuffer
**buffer
);
751 HRESULT WINAPI
D3DXLoadPRTBufferFromFileW(const WCHAR
*filename
, ID3DXPRTBuffer
**buffer
);
752 #define D3DXLoadPRTBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTBufferFromFile)
753 HRESULT WINAPI
D3DXLoadPRTCompBufferFromFileA(const char *filename
, ID3DXPRTCompBuffer
**buffer
);
754 HRESULT WINAPI
D3DXLoadPRTCompBufferFromFileW(const WCHAR
*filename
, ID3DXPRTCompBuffer
**buffer
);
755 #define D3DXLoadPRTCompBufferFromFile WINELIB_NAME_AW(D3DXLoadPRTCompBufferFromFile)
756 HRESULT WINAPI
D3DXSaveMeshToXA(const char *filename
, ID3DXMesh
*mesh
, const DWORD
*adjacency
,
757 const D3DXMATERIAL
*materials
, const D3DXEFFECTINSTANCE
*effect_instances
, DWORD material_count
, DWORD format
);
758 HRESULT WINAPI
D3DXSaveMeshToXW(const WCHAR
*filename
, ID3DXMesh
*mesh
, const DWORD
*adjacency
,
759 const D3DXMATERIAL
*materials
, const D3DXEFFECTINSTANCE
*effect_instances
, DWORD material_count
, DWORD format
);
760 #define D3DXSaveMeshToX WINELIB_NAME_AW(D3DXSaveMeshToX)
761 HRESULT WINAPI
D3DXSavePRTBufferToFileA(const char *filename
, ID3DXPRTBuffer
*buffer
);
762 HRESULT WINAPI
D3DXSavePRTBufferToFileW(const WCHAR
*filename
, ID3DXPRTBuffer
*buffer
);
763 #define D3DXSavePRTBufferToFile WINELIB_NAME_AW(D3DXSavePRTBufferToFile)
764 HRESULT WINAPI
D3DXSavePRTCompBufferToFileA(const char *filename
, ID3DXPRTCompBuffer
*buffer
);
765 HRESULT WINAPI
D3DXSavePRTCompBufferToFileW(const WCHAR
*filename
, ID3DXPRTCompBuffer
*buffer
);
766 #define D3DXSavePRTCompBufferToFile WINELIB_NAME_AW(D3DXSavePRTCompBufferToFile)
767 UINT WINAPI
D3DXGetDeclLength(const D3DVERTEXELEMENT9
*decl
);
768 UINT WINAPI
D3DXGetDeclVertexSize(const D3DVERTEXELEMENT9
*decl
, DWORD stream_idx
);
769 UINT WINAPI
D3DXGetFVFVertexSize(DWORD
);
770 BOOL WINAPI
D3DXBoxBoundProbe(const D3DXVECTOR3
*vmin
, const D3DXVECTOR3
*vmax
,
771 const D3DXVECTOR3
*ray_pos
, const D3DXVECTOR3
*ray_dir
);
772 BOOL WINAPI
D3DXSphereBoundProbe(const D3DXVECTOR3
*center
, FLOAT radius
,
773 const D3DXVECTOR3
*ray_pos
, const D3DXVECTOR3
*ray_dir
);
774 HRESULT WINAPI
D3DXCleanMesh(D3DXCLEANTYPE clean_type
, ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
,
775 ID3DXMesh
**mesh_out
, DWORD
*adjacency_out
, ID3DXBuffer
**errors
);
776 HRESULT WINAPI
D3DXConcatenateMeshes(struct ID3DXMesh
**meshes
, UINT mesh_count
, DWORD flags
,
777 const D3DXMATRIX
*geometry_matrices
, const D3DXMATRIX
*texture_matrices
,
778 const D3DVERTEXELEMENT9
*declaration
, struct IDirect3DDevice9
*device
, struct ID3DXMesh
**mesh
);
779 HRESULT WINAPI
D3DXComputeBoundingBox(const D3DXVECTOR3
*first_pos
, DWORD num_vertices
,
780 DWORD stride
, D3DXVECTOR3
*vmin
, D3DXVECTOR3
*vmax
);
781 HRESULT WINAPI
D3DXComputeBoundingSphere(const D3DXVECTOR3
*first_pos
, DWORD num_vertices
,
782 DWORD stride
, D3DXVECTOR3
*center
, FLOAT
*radius
);
783 HRESULT WINAPI
D3DXComputeIMTFromPerTexelSignal(ID3DXMesh
*mesh
, DWORD texture_idx
, float *texel_signal
,
784 UINT width
, UINT height
, UINT signal_dimension
, UINT component_count
, DWORD flags
,
785 LPD3DXUVATLASCB cb
, void *ctx
, ID3DXBuffer
**buffer
);
786 HRESULT WINAPI
D3DXComputeIMTFromPerVertexSignal(ID3DXMesh
*mesh
, const float *vertex_signal
,
787 UINT signal_dimension
, UINT signal_stride
, DWORD flags
,
788 LPD3DXUVATLASCB cb
, void *ctx
, ID3DXBuffer
**buffer
);
789 HRESULT WINAPI
D3DXComputeIMTFromSignal(ID3DXMesh
*mesh
, DWORD texture_idx
, UINT signal_dimension
,
790 float max_uv_distance
, DWORD flags
, LPD3DXIMTSIGNALCALLBACK signal_cb
, void *signal_ctx
,
791 LPD3DXUVATLASCB status_cb
, void *status_ctx
, ID3DXBuffer
**buffer
);
792 HRESULT WINAPI
D3DXComputeIMTFromTexture(struct ID3DXMesh
*mesh
, struct IDirect3DTexture9
*texture
,
793 DWORD texture_idx
, DWORD options
, LPD3DXUVATLASCB cb
, void *ctx
, struct ID3DXBuffer
**out
);
794 HRESULT WINAPI
D3DXComputeNormals(ID3DXBaseMesh
*mesh
, const DWORD
*adjacency
);
795 HRESULT WINAPI
D3DXComputeTangentFrameEx(ID3DXMesh
*mesh_in
, DWORD texture_in_semantic
, DWORD texture_in_idx
,
796 DWORD u_partial_out_semantic
, DWORD u_partial_out_idx
, DWORD v_partial_out_semantic
,
797 DWORD v_partial_out_idx
, DWORD normal_out_semantic
, DWORD normal_out_idx
, DWORD flags
,
798 const DWORD
*adjacency
, float partial_edge_threshold
, float singular_point_threshold
,
799 float normal_edge_threshold
, ID3DXMesh
**mesh_out
, ID3DXBuffer
**buffer
);
800 HRESULT WINAPI
D3DXComputeTangent(ID3DXMesh
*mesh
, DWORD stage
, DWORD tangent_idx
,
801 DWORD binorm_idx
, DWORD wrap
, const DWORD
*adjacency
);
802 HRESULT WINAPI
D3DXConvertMeshSubsetToSingleStrip(struct ID3DXBaseMesh
*mesh_in
, DWORD attribute_id
,
803 DWORD ib_flags
, struct IDirect3DIndexBuffer9
**index_buffer
, DWORD
*index_count
);
804 HRESULT WINAPI
D3DXConvertMeshSubsetToStrips(struct ID3DXBaseMesh
*mesh_in
, DWORD attribute_id
,
805 DWORD ib_flags
, struct IDirect3DIndexBuffer9
**index_buffer
, DWORD
*index_count
,
806 struct ID3DXBuffer
**strip_lengths
, DWORD
*strip_count
);
807 HRESULT WINAPI
D3DXDeclaratorFromFVF(DWORD
, D3DVERTEXELEMENT9
[MAX_FVF_DECL_SIZE
]);
808 HRESULT WINAPI
D3DXFVFFromDeclarator(const D3DVERTEXELEMENT9
*decl
, DWORD
*fvf
);
809 HRESULT WINAPI
D3DXGenerateOutputDecl(D3DVERTEXELEMENT9
*decl_out
, const D3DVERTEXELEMENT9
*decl_in
);
810 HRESULT WINAPI
D3DXGeneratePMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
,
811 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
,
812 DWORD min_value
, DWORD flags
, ID3DXPMesh
**pmesh
);
813 HRESULT WINAPI
D3DXIntersect(ID3DXBaseMesh
*mesh
, const D3DXVECTOR3
*ray_position
, const D3DXVECTOR3
*ray_direction
,
814 BOOL
*hit
, DWORD
*face_idx
, float *u
, float *v
, float *distance
, ID3DXBuffer
**hits
, DWORD
*hit_count
);
815 HRESULT WINAPI
D3DXIntersectSubset(ID3DXBaseMesh
*mesh
, DWORD attribute_id
, const D3DXVECTOR3
*ray_position
,
816 const D3DXVECTOR3
*ray_direction
, BOOL
*hit
, DWORD
*face_idx
, float *u
, float *v
, float *distance
,
817 ID3DXBuffer
**hits
, DWORD
*hit_count
);
818 BOOL WINAPI
D3DXIntersectTri(const D3DXVECTOR3
*vtx0
, const D3DXVECTOR3
*vtx1
,
819 const D3DXVECTOR3
*vtx2
, const D3DXVECTOR3
*ray_pos
, const D3DXVECTOR3
*ray_dir
, FLOAT
*u
,
820 FLOAT
*v
, FLOAT
*dist
);
821 HRESULT WINAPI
D3DXOptimizeFaces(const void *indices
, UINT face_count
,
822 UINT vertex_count
, BOOL idx_32bit
, DWORD
*face_remap
);
823 HRESULT WINAPI
D3DXOptimizeVertices(const void *indices
, UINT face_count
,
824 UINT vertex_count
, BOOL idx_32bit
, DWORD
*vertex_remap
);
825 HRESULT WINAPI
D3DXRectPatchSize(const FLOAT
*segment_count
, DWORD
*num_triangles
,
826 DWORD
*num_vertices
);
827 HRESULT WINAPI
D3DXSHPRTCompSuperCluster(UINT
*cluster_ids
, ID3DXMesh
*scene
, UINT max_cluster_count
,
828 UINT cluster_count
, UINT
*scluster_ids
, UINT
*scluster_count
);
829 HRESULT WINAPI
D3DXSHPRTCompSplitMeshSC(UINT
*cluster_idx
, UINT vertex_count
, UINT cluster_count
, UINT
*scluster_ids
,
830 UINT scluster_count
, void *index_buffer_in
, BOOL ib_in_32bit
, UINT face_count
, ID3DXBuffer
**index_buffer_out
,
831 UINT
*index_buffer_size
, BOOL ib_out_32bit
, ID3DXBuffer
**face_remap
, ID3DXBuffer
**vertex_data
,
832 UINT
*vertex_data_length
, UINT
*sc_cluster_list
, D3DXSHPRTSPLITMESHCLUSTERDATA
*sc_data
);
833 HRESULT WINAPI
D3DXSimplifyMesh(ID3DXMesh
*mesh_in
, const DWORD
*adjacency
,
834 const D3DXATTRIBUTEWEIGHTS
*attribute_weights
, const float *vertex_weights
, DWORD min_value
,
835 DWORD flags
, ID3DXMesh
**mesh_out
);
836 HRESULT WINAPI
D3DXSplitMesh(ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
, const DWORD max_size
,
837 const DWORD flags
, DWORD
*mesh_out_count
, ID3DXBuffer
**mesh_out
, ID3DXBuffer
**adjacency_out
,
838 ID3DXBuffer
**face_remap_out
, ID3DXBuffer
**vertex_remap_out
);
839 HRESULT WINAPI
D3DXTessellateNPatches(ID3DXMesh
*mesh_in
, const DWORD
*adjacency_in
, float segment_count
,
840 BOOL quad_interp
, ID3DXMesh
**mesh_out
, ID3DXBuffer
**adjacency_out
);
841 HRESULT WINAPI
D3DXTessellateRectPatch(struct IDirect3DVertexBuffer9
*buffer
, const float *segment_count
,
842 const D3DVERTEXELEMENT9
*declaration
, const D3DRECTPATCH_INFO
*patch_info
, struct ID3DXMesh
*mesh
);
843 HRESULT WINAPI
D3DXTessellateTriPatch(struct IDirect3DVertexBuffer9
*buffer
, const float *segment_count
,
844 const D3DVERTEXELEMENT9
*declaration
, const D3DTRIPATCH_INFO
*patch_info
, struct ID3DXMesh
*mesh
);
845 HRESULT WINAPI
D3DXTriPatchSize(const FLOAT
*segment_count
, DWORD
*num_triangles
,
846 DWORD
*num_vertices
);
847 HRESULT WINAPI
D3DXUVAtlasCreate(ID3DXMesh
*mesh_in
, UINT max_chart_count
, float max_stretch_in
,
848 UINT width
, UINT height
, float gutter
, DWORD texture_idx
, const DWORD
*adjacency
, const DWORD
*false_edges
,
849 const float *imt_array
, LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
, ID3DXMesh
**mesh_out
,
850 ID3DXBuffer
**face_partitioning_out
, ID3DXBuffer
**vertex_remap_out
, float *max_stretch_out
, UINT
*chart_count
);
851 HRESULT WINAPI
D3DXUVAtlasPack(ID3DXMesh
*mesh
, UINT width
, UINT height
, float gutter
, DWORD texture_idx
,
852 const DWORD
*partition_result_adjacency
, LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
,
853 ID3DXBuffer
*face_partitioning
);
854 HRESULT WINAPI
D3DXUVAtlasPartition(ID3DXMesh
*mesh_in
, UINT max_chart_count
, float max_stretch_in
,
855 DWORD texture_idx
, const DWORD
*adjacency
, const DWORD
*false_edges
, const float *imt_array
,
856 LPD3DXUVATLASCB cb
, float cb_freq
, void *ctx
, DWORD flags
, ID3DXMesh
**mesh_out
,
857 ID3DXBuffer
**face_partitioning_out
, ID3DXBuffer
**vertex_remap_out
, ID3DXBuffer
**adjacency_out
,
858 float *max_stretch_out
, UINT
*chart_count
);
859 HRESULT WINAPI
D3DXValidMesh(ID3DXMesh
*mesh
, const DWORD
*adjacency
, ID3DXBuffer
**errors
);
860 HRESULT WINAPI
D3DXValidPatchMesh(ID3DXPatchMesh
*mesh
, DWORD
*degenerate_vertex_count
,
861 DWORD
*degenerate_patch_count
, ID3DXBuffer
**errors
);
862 HRESULT WINAPI
D3DXWeldVertices(ID3DXMesh
*mesh
, DWORD flags
, const D3DXWELDEPSILONS
*epsilons
,
863 const DWORD
*adjacency_in
, DWORD
*adjacency_out
, DWORD
*face_remap_out
, ID3DXBuffer
**vertex_remap_out
);
869 DEFINE_GUID(DXFILEOBJ_XSkinMeshHeader
, 0x3cf169ce, 0xff7c, 0x44ab, 0x93, 0xc0, 0xf7, 0x8f, 0x62, 0xd1, 0x72, 0xe2);
870 DEFINE_GUID(DXFILEOBJ_VertexDuplicationIndices
, 0xb8d65549, 0xd7c9, 0x4995, 0x89, 0xcf, 0x53, 0xa9, 0xa8, 0xb0, 0x31, 0xe3);
871 DEFINE_GUID(DXFILEOBJ_FaceAdjacency
, 0xa64c844a, 0xe282, 0x4756, 0x8b, 0x80, 0x25, 0x0c, 0xde, 0x04, 0x39, 0x8c);
872 DEFINE_GUID(DXFILEOBJ_SkinWeights
, 0x6f0d123b, 0xbad2, 0x4167, 0xa0, 0xd0, 0x80, 0x22, 0x4f, 0x25, 0xfa, 0xbb);
873 DEFINE_GUID(DXFILEOBJ_Patch
, 0xa3eb5d44, 0xfc22, 0x429d, 0x9a, 0xfb, 0x32, 0x21, 0xcb, 0x97, 0x19, 0xa6);
874 DEFINE_GUID(DXFILEOBJ_PatchMesh
, 0xd02c95cc, 0xedba, 0x4305, 0x9b, 0x5d, 0x18, 0x20, 0xd7, 0x70, 0x4d, 0xbf);
875 DEFINE_GUID(DXFILEOBJ_PatchMesh9
, 0xb9ec94e1, 0xb9a6, 0x4251, 0xba, 0x18, 0x94, 0x89, 0x3f, 0x02, 0xc0, 0xea);
876 DEFINE_GUID(DXFILEOBJ_PMInfo
, 0xb6c3e656, 0xec8b, 0x4b92, 0x9b, 0x62, 0x68, 0x16, 0x59, 0x52, 0x29, 0x47);
877 DEFINE_GUID(DXFILEOBJ_PMAttributeRange
, 0x917e0427, 0xc61e, 0x4a14, 0x9c, 0x64, 0xaf, 0xe6, 0x5f, 0x9e, 0x98, 0x44);
878 DEFINE_GUID(DXFILEOBJ_PMVSplitRecord
, 0x574ccc14, 0xf0b3, 0x4333, 0x82, 0x2d, 0x93, 0xe8, 0xa8, 0xa0, 0x8e, 0x4c);
879 DEFINE_GUID(DXFILEOBJ_FVFData
, 0xb6e70a0e, 0x8ef9, 0x4e83, 0x94, 0xad, 0xec, 0xc8, 0xb0, 0xc0, 0x48, 0x97);
880 DEFINE_GUID(DXFILEOBJ_VertexElement
, 0xf752461c, 0x1e23, 0x48f6, 0xb9, 0xf8, 0x83, 0x50, 0x85, 0x0f, 0x33, 0x6f);
881 DEFINE_GUID(DXFILEOBJ_DeclData
, 0xbf22e553, 0x292c, 0x4781, 0x9f, 0xea, 0x62, 0xbd, 0x55, 0x4b, 0xdd, 0x93);
882 DEFINE_GUID(DXFILEOBJ_EffectFloats
, 0xf1cfe2b3, 0x0de3, 0x4e28, 0xaf, 0xa1, 0x15, 0x5a, 0x75, 0x0a, 0x28, 0x2d);
883 DEFINE_GUID(DXFILEOBJ_EffectString
, 0xd55b097e, 0xbdb6, 0x4c52, 0xb0, 0x3d, 0x60, 0x51, 0xc8, 0x9d, 0x0e, 0x42);
884 DEFINE_GUID(DXFILEOBJ_EffectDWord
, 0x622c0ed0, 0x956e, 0x4da9, 0x90, 0x8a, 0x2a, 0xf9, 0x4f, 0x3c, 0xe7, 0x16);
885 DEFINE_GUID(DXFILEOBJ_EffectParamFloats
, 0x3014b9a0, 0x62f5, 0x478c, 0x9b, 0x86, 0xe4, 0xac, 0x9f, 0x4e, 0x41, 0x8b);
886 DEFINE_GUID(DXFILEOBJ_EffectParamString
, 0x1dbc4c88, 0x94c1, 0x46ee, 0x90, 0x76, 0x2c, 0x28, 0x81, 0x8c, 0x94, 0x81);
887 DEFINE_GUID(DXFILEOBJ_EffectParamDWord
, 0xe13963bc, 0xae51, 0x4c5d, 0xb0, 0x0f, 0xcf, 0xa3, 0xa9, 0xd9, 0x7c, 0xe5);
888 DEFINE_GUID(DXFILEOBJ_EffectInstance
, 0xe331f7e4, 0x0559, 0x4cc2, 0x8e, 0x99, 0x1c, 0xec, 0x16, 0x57, 0x92, 0x8f);
889 DEFINE_GUID(DXFILEOBJ_AnimTicksPerSecond
, 0x9e415a43, 0x7ba6, 0x4a73, 0x87, 0x43, 0xb7, 0x3d, 0x47, 0xe8, 0x84, 0x76);
890 DEFINE_GUID(DXFILEOBJ_CompressedAnimationSet
, 0x7f9b00b3, 0xf125, 0x4890, 0x87, 0x6e, 0x1c, 0x42, 0xbf, 0x69, 0x7c, 0x4d);
892 #define XSKINEXP_TEMPLATES \
894 template XSkinMeshHeader \
896 <3CF169CE-FF7C-44ab-93C0-F78F62D172E2> \
897 WORD nMaxSkinWeightsPerVertex; \
898 WORD nMaxSkinWeightsPerFace; \
901 template VertexDuplicationIndices \
903 <B8D65549-D7C9-4995-89CF-53A9A8B031E3> \
905 DWORD nOriginalVertices; \
906 array DWORD indices[nIndices]; \
908 template FaceAdjacency \
910 <A64C844A-E282-4756-8B80-250CDE04398C> \
912 array DWORD indices[nIndices]; \
914 template SkinWeights \
916 <6F0D123B-BAD2-4167-A0D0-80224F25FABB> \
917 STRING transformNodeName; \
919 array DWORD vertexIndices[nWeights]; \
920 array float weights[nWeights]; \
921 Matrix4x4 matrixOffset; \
925 <A3EB5D44-FC22-429D-9AFB-3221CB9719A6> \
926 DWORD nControlIndices; \
927 array DWORD controlIndices[nControlIndices]; \
931 <D02C95CC-EDBA-4305-9B5D-1820D7704BBF> \
933 array Vector vertices[nVertices]; \
935 array Patch patches[nPatches]; \
938 template PatchMesh9 \
940 <B9EC94E1-B9A6-4251-BA18-94893F02C0EA> \
945 array Vector vertices[nVertices]; \
947 array Patch patches[nPatches]; \
949 } template EffectFloats \
951 <F1CFE2B3-0DE3-4e28-AFA1-155A750A282D> \
953 array float Floats[nFloats]; \
955 template EffectString \
957 <D55B097E-BDB6-4c52-B03D-6051C89D0E42> \
960 template EffectDWord \
962 <622C0ED0-956E-4da9-908A-2AF94F3CE716> \
964 } template EffectParamFloats \
966 <3014B9A0-62F5-478c-9B86-E4AC9F4E418B> \
969 array float Floats[nFloats]; \
970 } template EffectParamString \
972 <1DBC4C88-94C1-46ee-9076-2C28818C9481> \
976 template EffectParamDWord \
978 <E13963BC-AE51-4c5d-B00F-CFA3A9D97CE5> \
982 template EffectInstance \
984 <E331F7E4-0559-4cc2-8E99-1CEC1657928F> \
985 STRING EffectFilename; \
987 } template AnimTicksPerSecond \
989 <9E415A43-7BA6-4a73-8743-B73D47E88476> \
990 DWORD AnimTicksPerSecond; \
992 template CompressedAnimationSet \
994 <7F9B00B3-F125-4890-876E-1C42BF697C4D> \
995 DWORD CompressedBlockSize; \
997 DWORD PlaybackType; \
998 DWORD BufferLength; \
999 array DWORD CompressedData[BufferLength]; \
1002 #define XEXTENSIONS_TEMPLATES \
1006 <B6E70A0E-8EF9-4e83-94AD-ECC8B0C04897> \
1009 array DWORD data[nDWords]; \
1011 template VertexElement \
1013 <F752461C-1E23-48f6-B9F8-8350850F336F> \
1021 <BF22E553-292C-4781-9FEA-62BD554BDD93> \
1023 array VertexElement Elements[nElements]; \
1025 array DWORD data[nDWords]; \
1027 template PMAttributeRange \
1029 <917E0427-C61E-4a14-9C64-AFE65F9E9844> \
1030 DWORD iFaceOffset; \
1033 DWORD iVertexOffset; \
1034 DWORD nVerticesMin; \
1035 DWORD nVerticesMax; \
1037 template PMVSplitRecord \
1039 <574CCC14-F0B3-4333-822D-93E8A8A08E4C> \
1046 <B6C3E656-EC8B-4b92-9B62-681659522947> \
1047 DWORD nAttributes; \
1048 array PMAttributeRange attributeRanges[nAttributes]; \
1049 DWORD nMaxValence; \
1050 DWORD nMinLogicalVertices; \
1051 DWORD nMaxLogicalVertices; \
1053 array PMVSplitRecord splitRecords[nVSplits]; \
1054 DWORD nAttributeMispredicts; \
1055 array DWORD attributeMispredicts[nAttributeMispredicts]; \
1058 #endif /* __WINE_D3DX9MESH_H */