' ########################################################################################
' Microsoft Windows
' File: d3dx9effect.inc
' Contents: D3DX effect types and Shaders
' Copyright (c) 2011 Jos? Roca
' Portions Copyright (c) Microsoft Corporation.
' All Rights Reserved.
' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
' ########################################################################################
#IF NOT %DEF(PBX_d3dx9effect_PBI)
#DEFINE PBX_d3dx9effect_PBI
%EQUATE `D3DX9EFFECT_INC = 1
#INCLUDE ONCE "Legacy/Graphics/d3dx9.inc"
'//----------------------------------------------------------------------------
'// D3DXFX_DONOTSAVESTATE
'// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
'// is specified, device state is not saved or restored in Begin/End.
'// D3DXFX_DONOTSAVESHADERSTATE
'// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
'// is specified, shader device state is not saved or restored in Begin/End.
'// This includes pixel/vertex shaders and shader constants
'// D3DXFX_DONOTSAVESAMPLERSTATE
'// This flag is used as a parameter to ID3DXEffect::Begin(). When this flag
'// is specified, sampler device state is not saved or restored in Begin/End.
'// D3DXFX_NOT_CLONEABLE
'// This flag is used as a parameter to the D3DXCreateEffect family of APIs.
'// When this flag is specified, the effect will be non-cloneable and will not
'// contain any shader binary data.
'// Furthermore, GetPassDesc will not return shader function pointers.
'// Setting this flag reduces effect memory usage by about 50%.
'//----------------------------------------------------------------------------
%EQUATE `D3DXFX_DONOTSAVESTATE = 1 ' (1 << 0)
%EQUATE `D3DXFX_DONOTSAVESHADERSTATE = 2 ' (1 << 1)
%EQUATE `D3DXFX_DONOTSAVESAMPLERSTATE = 4 ' (1 << 2)
%EQUATE `D3DXFX_NOT_CLONEABLE = &H800 ' (1 << 11)
%EQUATE `D3DXFX_LARGEADDRESSAWARE = &H20000 ' (1 << 17)
'//----------------------------------------------------------------------------
'// D3DX_PARAMETER_SHARED
'// Indicates that the value of a parameter will be shared with all effects
'// which share the same namespace. Changing the value in one effect will
'// change it in all.
'//
'// D3DX_PARAMETER_LITERAL
'// Indicates that the value of this parameter can be treated as literal.
'// Literal parameters can be marked when the effect is compiled, and their
'// cannot be changed after the effect is compiled. Shared parameters cannot
'// be literal.
'//----------------------------------------------------------------------------
%EQUATE `D3DX_PARAMETER_SHARED = 1 ' (1 << 0)
%EQUATE `D3DX_PARAMETER_LITERAL = 2 ' (1 << 1)
%EQUATE `D3DX_PARAMETER_ANNOTATION = 4 ' (1 << 2)
'//----------------------------------------------------------------------------
'// D3DXEFFECT_DESC:
'//----------------------------------------------------------------------------
' // Size = 16 bytes
TYPE D3DXEFFECT_DESC DWORD
 Creator AS ASCIIZ PTR ' LPCSTR // Creator string
 Parameters AS DWORD ' UINT // Number of parameters
 Techniques AS DWORD ' UINT // Number of techniques
 Functions AS DWORD ' UINT // Number of function entrypoints
END TYPE
'//----------------------------------------------------------------------------
'// D3DXPARAMETER_DESC:
'//----------------------------------------------------------------------------
' // Size = 44 bytes
TYPE D3DXPARAMETER_DESC DWORD
 Name AS ASCIIZ PTR ' LPCSTR // Parameter name
 Semantic AS ASCIIZ PTR ' LPCSTR // Parameter semantic
 Class AS DWORD ' D3DXPARAMETER_CLASS // Class
 Type AS DWORD ' D3DXPARAMETER_TYPE // Component type
 Rows AS DWORD ' UINT // Number of rows
 Columns AS DWORD ' UINT // Number of columns
 Elements AS DWORD ' UINT // Number of array elements
 Annotations AS DWORD ' UINT // Number of annotations
 StructMembers AS DWORD ' UINT // Number of structure member sub-parameters
 Flags AS DWORD ' DWORD // D3DX_PARAMETER_* flags
 Bytes AS DWORD ' UINT // Parameter size, in bytes
END TYPE
'//----------------------------------------------------------------------------
'// D3DXTECHNIQUE_DESC:
'//----------------------------------------------------------------------------
' // Size = 12 bytes
TYPE D3DXTECHNIQUE_DESC DWORD
 Name AS ASCIIZ PTR ' LPCSTR // Technique name
 Passes AS DWORD ' UINT // Number of passes
 Annotations AS DWORD ' UINT // Number of annotations
END TYPE
'//----------------------------------------------------------------------------
'// D3DXPASS_DESC:
'//----------------------------------------------------------------------------
' // Size = 16 bytes
TYPE D3DXPASS_DESC DWORD
 Name AS ASCIIZ PTR ' LPCSTR // Pass name
 Annotations AS DWORD ' UINT // Number of annotations
 pVertexShaderFunction AS DWORD ' CONST DWORD * // Vertex shader function
 pPixelShaderFunction AS DWORD ' CONST DWORD * // Pixel shader function
END TYPE
'//----------------------------------------------------------------------------
'// D3DXFUNCTION_DESC:
'//----------------------------------------------------------------------------
' // Size = 8 bytes
TYPE D3DXFUNCTION_DESC DWORD
 Name AS ASCIIZ PTR ' LPCSTR // Function name
 Annotations AS DWORD ' UINT // Number of annotations
END TYPE
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXEffectPool ///////////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////
$IID_ID3DXEffectPool = GUID$("{9537AB04-3250-412e-8213-FCD2F8677933}")
INTERFACE ID3DXEffectPool $IID_ID3DXEffectPool
 INHERIT IUnknown
 ' // No public methods
END INTERFACE
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXBaseEffect ///////////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////
$IID_ID3DXBaseEffect = GUID$("{3B7A6FFB-3A69-46d7-BC01-A6B2AD4C2BB0}")
INTERFACE ID3DXBaseEffect $IID_ID3DXBaseEffect
 INHERIT IUnknown
 ' =====================================================================================
 METHOD GetDesc ( ' VTable offset = 12
 BYREF pDesc AS D3DXEFFECT_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameterDesc ( ' VTable offset = 16
 BYVAL hParameter AS DWORD
 , BYREF pDesc AS D3DXPARAMETER_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetTechniqueDesc ( ' VTable offset = 20
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXTECHNIQUE_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetPassDesc ( ' VTable offset = 24
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXPASS_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetFunctionDesc ( ' VTable offset = 28
 BYVAL hShader AS DWORD
 , BYREF pDesc AS D3DXFUNCTION_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameter ( ' VTable offset = 32
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterByName ( ' VTable offset = 36
 BYVAL hParameter AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterBySemantic ( ' VTable offset = 40
 BYVAL hParameter AS DWORD
 , BYREF pSemantic AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterElement ( ' VTable offset = 44
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechnique ( ' VTable offset = 48
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechniqueByName ( ' VTable offset = 52
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPass ( ' VTable offset = 56
 BYVAL hTechnique AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPassByName ( ' VTable offset = 60
 BYVAL hTechnique AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunction ( ' VTable offset = 64
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunctionByName ( ' VTable offset = 68
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotation ( ' VTable offset = 72
 BYVAL hObject AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotationByName ( ' VTable offset = 76
 BYVAL hObject AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD SetValue ( ' VTable offset = 80
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetValue ( ' VTable offset = 84
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetBool ( ' VTable offset = 88
 BYVAL hParameter AS DWORD
 , BYVAL b AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetBool ( ' VTable offset = 92
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetBoolArray ( ' VTable offset = 96
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetBoolArray ( ' VTable offset = 100
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetInt ( ' VTable offset = 104
 BYVAL hParameter AS DWORD
 , BYVAL n AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetInt ( ' VTable offset = 108
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetIntArray ( ' VTable offset = 112
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetIntArray ( ' VTable offset = 116
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloat ( ' VTable offset = 120
 BYVAL hParameter AS DWORD
 , BYVAL f AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloat ( ' VTable offset = 124
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloatArray ( ' VTable offset = 128
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloatArray ( ' VTable offset = 132
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetVector ( ' VTable offset = 136
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD GetVector ( ' VTable offset = 140
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD SetVectorArray ( ' VTable offset = 144
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetVectorArray ( ' VTable offset = 148
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrix ( ' VTable offset = 152
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrix ( ' VTable offset = 156
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixArray ( ' VTable offset = 160
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixArray ( ' VTable offset = 164
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixPointerArray ( ' VTable offset = 168
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixPointerArray ( ' VTable offset = 172
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTranspose ( ' VTable offset = 176
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTranspose ( ' VTable offset = 180
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposeArray ( ' VTable offset = 184
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposeArray ( ' VTable offset = 188
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposePointerArray ( ' VTable offset = 192
 BYVAL hParameter AS DWORD
 , BYVAL ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposePointerArray ( ' VTable offset = 196
 BYVAL hParameter AS DWORD
 , BYREF ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetString ( ' VTable offset = 200
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetString ( ' VTable offset = 204
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD SetTexture ( ' VTable offset = 208
 BYVAL hParameter AS DWORD
 , BYVAL pTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD GetTexture ( ' VTable offset = 212
 BYVAL hParameter AS DWORD
 , BYREF ppTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD SetPixelShader ( ' VTable offset = 216
 BYVAL hParameter AS DWORD
 , BYVAL pPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetPixelShader ( ' VTable offset = 220
 BYVAL hParameter AS DWORD
 , BYREF ppPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetVertexShader ( ' VTable offset = 224
 BYVAL hParameter AS DWORD
 , BYVAL pVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetVertexShader ( ' VTable offset = 228
 BYVAL hParameter AS DWORD
 , BYREF ppVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetArrayRange ( ' VTable offset = 232
 BYVAL hParameter AS DWORD
 , BYVAL uStart AS DWORD
 , BYVAL uEnd AS DWORD
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'//----------------------------------------------------------------------------
'// ID3DXEffectStateManager:
'// ------------------------
'// This is a user implemented interface that can be used to manage device
'// state changes made by an Effect.
'//----------------------------------------------------------------------------
$IID_ID3DXEffectStateManager = GUID$("{79AAB587-6DBC-4fa7-82DE-37FA1781C5CE}")
'DECLARE_INTERFACE_(ID3DXEffectStateManager, IUnknown)
'{
' // The user must correctly implement QueryInterface, AddRef, and Release.
' // IUnknown
' STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
' STDMETHOD_(ULONG, AddRef)(THIS) PURE;
' STDMETHOD_(ULONG, Release)(THIS) PURE;
' // The following methods are called by the Effect when it wants to make
' // the corresponding device call. Note that:
' // 1. Users manage the state and are therefore responsible for making the
' // the corresponding device calls themselves inside their callbacks.
' // 2. Effects pay attention to the return values of the callbacks, and so
' // users must pay attention to what they return in their callbacks.
' STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix) PURE;
' STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9 *pMaterial) PURE;
' STDMETHOD(SetLight)(THIS_ DWORD Index, CONST D3DLIGHT9 *pLight) PURE;
' STDMETHOD(LightEnable)(THIS_ DWORD Index, BOOL Enable) PURE;
' STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE State, DWORD Value) PURE;
' STDMETHOD(SetTexture)(THIS_ DWORD Stage, LPDIRECT3DBASETEXTURE9 pTexture) PURE;
' STDMETHOD(SetTextureStageState)(THIS_ DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value) PURE;
' STDMETHOD(SetSamplerState)(THIS_ DWORD Sampler, D3DSAMPLERSTATETYPE Type, DWORD Value) PURE;
' STDMETHOD(SetNPatchMode)(THIS_ FLOAT NumSegments) PURE;
' STDMETHOD(SetFVF)(THIS_ DWORD FVF) PURE;
' STDMETHOD(SetVertexShader)(THIS_ LPDIRECT3DVERTEXSHADER9 pShader) PURE;
' STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
' STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
' STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
' STDMETHOD(SetPixelShader)(THIS_ LPDIRECT3DPIXELSHADER9 pShader) PURE;
' STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT RegisterIndex, CONST FLOAT *pConstantData, UINT RegisterCount) PURE;
' STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT RegisterIndex, CONST INT *pConstantData, UINT RegisterCount) PURE;
' STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT RegisterIndex, CONST BOOL *pConstantData, UINT RegisterCount) PURE;
'};
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXEffect ///////////////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////
$IID_ID3DXEffect = GUID$("{0F0DCC9F-6152-4117-A933-FFAC29C43AA4}")
INTERFACE ID3DXEffect $IID_ID3DXEffect
 INHERIT IUnknown
 ' =====================================================================================
 ' ID3DXBaseEffect methods
 ' =====================================================================================
 METHOD GetDesc ( ' VTable offset = 12
 BYREF pDesc AS D3DXEFFECT_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameterDesc ( ' VTable offset = 16
 BYVAL hParameter AS DWORD
 , BYREF pDesc AS D3DXPARAMETER_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetTechniqueDesc ( ' VTable offset = 20
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXTECHNIQUE_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetPassDesc ( ' VTable offset = 24
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXPASS_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetFunctionDesc ( ' VTable offset = 28
 BYVAL hShader AS DWORD
 , BYREF pDesc AS D3DXFUNCTION_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameter ( ' VTable offset = 32
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterByName ( ' VTable offset = 36
 BYVAL hParameter AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterBySemantic ( ' VTable offset = 40
 BYVAL hParameter AS DWORD
 , BYREF pSemantic AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterElement ( ' VTable offset = 44
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechnique ( ' VTable offset = 48
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechniqueByName ( ' VTable offset = 52
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPass ( ' VTable offset = 56
 BYVAL hTechnique AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPassByName ( ' VTable offset = 60
 BYVAL hTechnique AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunction ( ' VTable offset = 64
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunctionByName ( ' VTable offset = 68
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotation ( ' VTable offset = 72
 BYVAL hObject AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotationByName ( ' VTable offset = 76
 BYVAL hObject AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD SetValue ( ' VTable offset = 80
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetValue ( ' VTable offset = 84
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetBool ( ' VTable offset = 88
 BYVAL hParameter AS DWORD
 , BYVAL b AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetBool ( ' VTable offset = 92
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetBoolArray ( ' VTable offset = 96
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetBoolArray ( ' VTable offset = 100
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetInt ( ' VTable offset = 104
 BYVAL hParameter AS DWORD
 , BYVAL n AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetInt ( ' VTable offset = 108
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetIntArray ( ' VTable offset = 112
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetIntArray ( ' VTable offset = 116
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloat ( ' VTable offset = 120
 BYVAL hParameter AS DWORD
 , BYVAL f AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloat ( ' VTable offset = 124
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloatArray ( ' VTable offset = 128
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloatArray ( ' VTable offset = 132
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetVector ( ' VTable offset = 136
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD GetVector ( ' VTable offset = 140
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD SetVectorArray ( ' VTable offset = 144
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetVectorArray ( ' VTable offset = 148
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrix ( ' VTable offset = 152
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrix ( ' VTable offset = 156
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixArray ( ' VTable offset = 160
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixArray ( ' VTable offset = 164
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixPointerArray ( ' VTable offset = 168
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixPointerArray ( ' VTable offset = 172
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTranspose ( ' VTable offset = 176
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTranspose ( ' VTable offset = 180
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposeArray ( ' VTable offset = 184
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposeArray ( ' VTable offset = 188
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposePointerArray ( ' VTable offset = 192
 BYVAL hParameter AS DWORD
 , BYVAL ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposePointerArray ( ' VTable offset = 196
 BYVAL hParameter AS DWORD
 , BYREF ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetString ( ' VTable offset = 200
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetString ( ' VTable offset = 204
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD SetTexture ( ' VTable offset = 208
 BYVAL hParameter AS DWORD
 , BYVAL pTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD GetTexture ( ' VTable offset = 212
 BYVAL hParameter AS DWORD
 , BYREF ppTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD SetPixelShader ( ' VTable offset = 216
 BYVAL hParameter AS DWORD
 , BYVAL pPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetPixelShader ( ' VTable offset = 220
 BYVAL hParameter AS DWORD
 , BYREF ppPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetVertexShader ( ' VTable offset = 224
 BYVAL hParameter AS DWORD
 , BYVAL pVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetVertexShader ( ' VTable offset = 228
 BYVAL hParameter AS DWORD
 , BYREF ppVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetArrayRange ( ' VTable offset = 232
 BYVAL hParameter AS DWORD
 , BYVAL uStart AS DWORD
 , BYVAL uEnd AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' ID3DXEffect methods
 ' =====================================================================================
 METHOD GetPool ( ' VTable offset = 236
 BYREF ppPool AS ID3DXEffectPool
 ) AS LONG
 ' =====================================================================================
 METHOD SetTechnique ( ' VTable offset = 240
 BYVAL hTechnique AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetCurrentTechnique ( ' VTable offset = 244
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD ValidateTechnique ( ' VTable offset = 248
 BYVAL hTechnique AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD FindNextValidTechnique ( ' VTable offset = 252
 BYVAL hTechnique AS DWORD
 , BYREF DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD IsParameterUsed ( ' VTable offset = 256
 BYVAL hParameter AS DWORD
 , BYVAL hTechnique AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD Begin ( ' VTable offset = 260
 BYREF pPasses AS DWORD
 , BYVAL Flags AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD BeginPass ( ' VTable offset = 264
 BYVAL Pass AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD CommitChanges ( ' VTable offset = 268
 ) AS LONG
 ' =====================================================================================
 METHOD EndPass ( ' VTable offset = 272
 ) AS LONG
 ' =====================================================================================
 METHOD End ( ' VTable offset = 276
 ) AS LONG
 ' =====================================================================================
 METHOD GetDevice ( ' VTable offset = 280
 BYREF ppDevice AS IDirect3DDevice9
 ) AS LONG
 ' =====================================================================================
 METHOD OnLostDevice ( ' VTable offset = 284
 ) AS LONG
 ' =====================================================================================
 METHOD OnResetDevice ( ' VTable offset = 288
 ) AS LONG
 ' =====================================================================================
 METHOD SetStateManager ( ' VTable offset = 292
 BYVAL pManager AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD GetStateManager ( ' VTable offset = 296
 BYREF ppManager AS IUnknown
 ) AS LONG
 ' =====================================================================================
 METHOD BeginParameterBlock ( ' VTable offset = 300
 ) AS LONG
 ' =====================================================================================
 METHOD EndParameterBlock ( ' VTable offset = 304
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD ApplyParameterBlock ( ' VTable offset = 308
 BYVAL hParameterBlock AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD CloneEffect ( ' VTable offset = 312
 BYVAL pDevice AS IDirect3DDevice9
 , BYREF ppEffect AS ID3DXEffect
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXEffectCompiler ///////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////
$IID_ID3DXEffectCompiler = GUID$("{15A709EB-5A8E-40a0-86A9-0C024124339B}")
INTERFACE ID3DXEffectCompiler $IID_ID3DXEffectCompiler
 INHERIT IUnknown
 ' =====================================================================================
 ' ID3DXBaseEffect methods
 ' =====================================================================================
 METHOD GetDesc ( ' VTable offset = 12
 BYREF pDesc AS D3DXEFFECT_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameterDesc ( ' VTable offset = 16
 BYVAL hParameter AS DWORD
 , BYREF pDesc AS D3DXPARAMETER_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetTechniqueDesc ( ' VTable offset = 20
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXTECHNIQUE_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetPassDesc ( ' VTable offset = 24
 BYVAL hTechnique AS DWORD
 , BYREF pDesc AS D3DXPASS_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetFunctionDesc ( ' VTable offset = 28
 BYVAL hShader AS DWORD
 , BYREF pDesc AS D3DXFUNCTION_DESC
 ) AS LONG
 ' =====================================================================================
 METHOD GetParameter ( ' VTable offset = 32
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterByName ( ' VTable offset = 36
 BYVAL hParameter AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterBySemantic ( ' VTable offset = 40
 BYVAL hParameter AS DWORD
 , BYREF pSemantic AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetParameterElement ( ' VTable offset = 44
 BYVAL hParameter AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechnique ( ' VTable offset = 48
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetTechniqueByName ( ' VTable offset = 52
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPass ( ' VTable offset = 56
 BYVAL hTechnique AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetPassByName ( ' VTable offset = 60
 BYVAL hTechnique AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunction ( ' VTable offset = 64
 BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetFunctionByName ( ' VTable offset = 68
 BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotation ( ' VTable offset = 72
 BYVAL hObject AS DWORD
 , BYVAL Index AS DWORD
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD GetAnnotationByName ( ' VTable offset = 76
 BYVAL hObject AS DWORD
 , BYREF pName AS ASCIIZ
 ) AS DWORD ' D3DXHANDLE
 ' =====================================================================================
 METHOD SetValue ( ' VTable offset = 80
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetValue ( ' VTable offset = 84
 BYVAL hParameter AS DWORD
 , BYVAL pData AS DWORD
 , BYVAL Bytes AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetBool ( ' VTable offset = 88
 BYVAL hParameter AS DWORD
 , BYVAL b AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetBool ( ' VTable offset = 92
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetBoolArray ( ' VTable offset = 96
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetBoolArray ( ' VTable offset = 100
 BYVAL hParameter AS DWORD
 , BYREF pb AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetInt ( ' VTable offset = 104
 BYVAL hParameter AS DWORD
 , BYVAL n AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetInt ( ' VTable offset = 108
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD SetIntArray ( ' VTable offset = 112
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetIntArray ( ' VTable offset = 116
 BYVAL hParameter AS DWORD
 , BYREF pn AS LONG
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloat ( ' VTable offset = 120
 BYVAL hParameter AS DWORD
 , BYVAL f AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloat ( ' VTable offset = 124
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 ) AS LONG
 ' =====================================================================================
 METHOD SetFloatArray ( ' VTable offset = 128
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetFloatArray ( ' VTable offset = 132
 BYVAL hParameter AS DWORD
 , BYREF pf AS SINGLE
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetVector ( ' VTable offset = 136
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD GetVector ( ' VTable offset = 140
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 ) AS LONG
 ' =====================================================================================
 METHOD SetVectorArray ( ' VTable offset = 144
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetVectorArray ( ' VTable offset = 148
 BYVAL hParameter AS DWORD
 , BYREF pVector AS D3DXVECTOR4
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrix ( ' VTable offset = 152
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrix ( ' VTable offset = 156
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixArray ( ' VTable offset = 160
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixArray ( ' VTable offset = 164
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixPointerArray ( ' VTable offset = 168
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixPointerArray ( ' VTable offset = 172
 BYVAL hParameter AS DWORD
 , BYREF pMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTranspose ( ' VTable offset = 176
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTranspose ( ' VTable offset = 180
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposeArray ( ' VTable offset = 184
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposeArray ( ' VTable offset = 188
 BYVAL hParameter AS DWORD
 , BYVAL pMatrix AS D3DXMATRIX
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetMatrixTransposePointerArray ( ' VTable offset = 192
 BYVAL hParameter AS DWORD
 , BYVAL ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD GetMatrixTransposePointerArray ( ' VTable offset = 196
 BYVAL hParameter AS DWORD
 , BYREF ppMatrix AS DWORD
 , BYVAL Count AS DWORD
 ) AS LONG
 ' =====================================================================================
 METHOD SetString ( ' VTable offset = 200
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD GetString ( ' VTable offset = 204
 BYVAL hParameter AS DWORD
 , BYREF pString AS ASCIIZ
 ) AS LONG
 ' =====================================================================================
 METHOD SetTexture ( ' VTable offset = 208
 BYVAL hParameter AS DWORD
 , BYVAL pTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD GetTexture ( ' VTable offset = 212
 BYVAL hParameter AS DWORD
 , BYREF ppTexture AS IDirect3DBaseTexture9
 ) AS LONG
 ' =====================================================================================
 METHOD SetPixelShader ( ' VTable offset = 216
 BYVAL hParameter AS DWORD
 , BYVAL pPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetPixelShader ( ' VTable offset = 220
 BYVAL hParameter AS DWORD
 , BYREF ppPShader AS IDirect3DPixelShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetVertexShader ( ' VTable offset = 224
 BYVAL hParameter AS DWORD
 , BYVAL pVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD GetVertexShader ( ' VTable offset = 228
 BYVAL hParameter AS DWORD
 , BYREF ppVShader AS IDirect3DVertexShader9
 ) AS LONG
 ' =====================================================================================
 METHOD SetArrayRange ( ' VTable offset = 232
 BYVAL hParameter AS DWORD
 , BYVAL uStart AS DWORD
 , BYVAL uEnd AS DWORD
 ) AS LONG
 ' =====================================================================================
 ' =====================================================================================
 ' ID3DXEffectCompiler methods
 ' =====================================================================================
 METHOD SetLiteral ( ' VTable offset = 236
 BYVAL hParameter AS DWORD
 , BYVAL Literal AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD GetLiteral ( ' VTable offset = 240
 BYVAL hParameter AS DWORD
 , BYREF pLiteral AS LONG
 ) AS LONG
 ' =====================================================================================
 METHOD CompileEffect ( ' VTable offset = 244
 BYVAL Flags AS DWORD
 , BYREF ppEffect AS ID3DXBuffer
 , BYREF ppErrorMsgs AS ID3DXBuffer
 ) AS LONG
 ' =====================================================================================
 METHOD CompileShader ( ' VTable offset = 248
 BYVAL hFunction AS DWORD
 , BYREF pTarget AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYREF ppShader AS ID3DXBuffer
 , BYREF ppErrorMsgs AS ID3DXBuffer
 , BYREF ppConstantTable AS ID3DXConstantTable
 ) AS LONG
 ' =====================================================================================
END INTERFACE
'//////////////////////////////////////////////////////////////////////////////
'// APIs //////////////////////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////////////////////////
'//----------------------------------------------------------------------------
'// D3DXCreateEffectPool:
'// ---------------------
'// Creates an effect pool. Pools are used for sharing parameters between
'// multiple effects. For all effects within a pool, shared parameters of the
'// same name all share the same value.
'//
'// Parameters:
'// ppPool
'// Returns the created pool.
'//----------------------------------------------------------------------------
DECLARE FUNCTION D3DXCreateEffectPool IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectPool" (_
 BYREF ppPool AS ID3DXEffectPool
 ) AS LONG
'//----------------------------------------------------------------------------
'// D3DXCreateEffect:
'// -----------------
'// Creates an effect from an ascii or binary effect description.
'//
'// Parameters:
'// pDevice
'// Pointer of the device on which to create the effect
'// pSrcFile
'// Name of the file containing the effect description
'// hSrcModule
'// Module handle. if NULL, current module will be used.
'// pSrcResource
'// Resource name in module
'// pSrcData
'// Pointer to effect description
'// SrcDataSize
'// Size of the effect description in bytes
'// pDefines
'// Optional NULL-terminated array of preprocessor macro definitions.
'// pInclude
'// Optional interface pointer to use for handling #include directives.
'// If this parameter is NULL, #includes will be honored when compiling
'// from file, and will error when compiling from resource or memory.
'// pPool
'// Pointer to ID3DXEffectPool object to use for shared parameters.
'// If NULL, no parameters will be shared.
'// ppEffect
'// Returns a buffer containing created effect.
'// ppCompilationErrors
'// Returns a buffer containing any error messages which occurred during
'// compile. Or NULL if you do not care about the error messages.
'//
'//----------------------------------------------------------------------------
DECLARE FUNCTION D3DXCreateEffectFromFileA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromFileA" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYREF pSrcFile AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectFromFileW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromFileW" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYREF pSrcFile AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectFromFile = D3DXCreateEffectFromFileW
#ELSE
 MACRO D3DXCreateEffectFromFile = D3DXCreateEffectFromFileA
#ENDIF
DECLARE FUNCTION D3DXCreateEffectFromResourceA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromResourceA" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectFromResourceW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromResourceW" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectFromResource = D3DXCreateEffectFromResourceW
#ELSE
 MACRO D3DXCreateEffectFromResource = D3DXCreateEffectFromResourceA
#ENDIF
DECLARE FUNCTION D3DXCreateEffect IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffect" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL pSrcData AS DWORD
 , BYVAL SrcDataLen AS DWORD
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
'//
'// Ex functions that accept pSkipConstants in addition to other parameters
'//
DECLARE FUNCTION D3DXCreateEffectFromFileExA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromFileExA" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYREF pSrcFile AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYREF pSkipConstants AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectFromFileExW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromFileExW" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYREF pSrcFile AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYREF pSkipConstants AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectFromFileEx = D3DXCreateEffectFromFileExW
#ELSE
 MACRO D3DXCreateEffectFromFileEx = D3DXCreateEffectFromFileExA
#ENDIF
DECLARE FUNCTION D3DXCreateEffectFromResourceExA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromResourceExA" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYREF pSkipConstants AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectFromResourceExW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectFromResourceExW" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYREF pSkipConstants AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectFromResourceEx = D3DXCreateEffectFromResourceExW
#ELSE
 MACRO D3DXCreateEffectFromResourceEx = D3DXCreateEffectFromResourceExA
#ENDIF
DECLARE FUNCTION D3DXCreateEffectEx IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectEx" (_
 BYVAL pDevice AS IDirect3DDevice9
 , BYVAL pSrcData AS DWORD
 , BYVAL SrcDataLen AS DWORD
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYREF pSkipConstants AS ASCIIZ
 , BYVAL Flags AS DWORD
 , BYVAL pPool AS ID3DXEffectPool
 , BYREF ppEffect AS ID3DXEffect
 , BYREF ppCompilationErrors AS ID3DXBuffer
 ) AS LONG
'//----------------------------------------------------------------------------
'// D3DXCreateEffectCompiler:
'// -------------------------
'// Creates an effect from an ascii or binary effect description.
'//
'// Parameters:
'// pSrcFile
'// Name of the file containing the effect description
'// hSrcModule
'// Module handle. if NULL, current module will be used.
'// pSrcResource
'// Resource name in module
'// pSrcData
'// Pointer to effect description
'// SrcDataSize
'// Size of the effect description in bytes
'// pDefines
'// Optional NULL-terminated array of preprocessor macro definitions.
'// pInclude
'// Optional interface pointer to use for handling #include directives.
'// If this parameter is NULL, #includes will be honored when compiling
'// from file, and will error when compiling from resource or memory.
'// pPool
'// Pointer to ID3DXEffectPool object to use for shared parameters.
'// If NULL, no parameters will be shared.
'// ppCompiler
'// Returns a buffer containing created effect compiler.
'// ppParseErrors
'// Returns a buffer containing any error messages which occurred during
'// parse. Or NULL if you do not care about the error messages.
'//
'//----------------------------------------------------------------------------
DECLARE FUNCTION D3DXCreateEffectCompilerFromFileA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectCompilerFromFileA" (_
 BYREF pSrcFile AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYREF ppCompiler AS ID3DXEffectCompiler
 , BYREF ppParseErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectCompilerFromFileW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectCompilerFromFileW" (_
 BYREF pSrcFile AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYREF ppCompiler AS ID3DXEffectCompiler
 , BYREF ppParseErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectCompilerFromFile = D3DXCreateEffectCompilerFromFileW
#ELSE
 MACRO D3DXCreateEffectCompilerFromFile = D3DXCreateEffectCompilerFromFileA
#ENDIF
DECLARE FUNCTION D3DXCreateEffectCompilerFromResourceA IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectCompilerFromResourceA" (_
 BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS ASCIIZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYREF ppCompiler AS ID3DXEffectCompiler
 , BYREF ppParseErrors AS ID3DXBuffer
 ) AS LONG
DECLARE FUNCTION D3DXCreateEffectCompilerFromResourceW IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectCompilerFromResourceW" (_
 BYVAL hSrcModule AS DWORD
 , BYREF pSrcResource AS WSTRINGZ
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYREF ppCompiler AS ID3DXEffectCompiler
 , BYREF ppParseErrors AS ID3DXBuffer
 ) AS LONG
#IF %DEF(%UNICODE)
 MACRO D3DXCreateEffectCompilerFromResource = D3DXCreateEffectCompilerFromResourceW
#ELSE
 MACRO D3DXCreateEffectCompilerFromResource = D3DXCreateEffectCompilerFromResourceA
#ENDIF
DECLARE FUNCTION D3DXCreateEffectCompiler IMPORT $D3DX_DLLNAME ALIAS "D3DXCreateEffectCompiler" (_
 BYREF pSrcData AS ASCIIZ
 , BYVAL SrcDataLen AS DWORD
 , BYREF pDefines AS D3DXMACRO
 , BYVAL pInclude AS IUnknown
 , BYVAL Flags AS DWORD
 , BYREF ppCompiler AS ID3DXEffectCompiler
 , BYREF ppParseErrors AS ID3DXBuffer
 ) AS LONG
'//----------------------------------------------------------------------------
'// D3DXDisassembleEffect:
'// -----------------------
'//
'// Parameters:
'//----------------------------------------------------------------------------
DECLARE FUNCTION D3DXDisassembleEffect IMPORT $D3DX_DLLNAME ALIAS "D3DXDisassembleEffect" (_
 BYVAL pEffect AS ID3DXEffect
 , BYVAL EnableColorCode AS LONG
 , BYREF ppDisassembly AS ID3DXBuffer
 ) AS LONG
#ENDIF
