Subversion Repositories Games.Chess Giants

Rev

Blame | Last modification | View Log | Download | RSS feed

  1.  
  2. //////////////////////////////////////////////////////////////////////////////
  3. //
  4. //  Copyright (c) Microsoft Corporation.  All rights reserved.
  5. //
  6. //  File:       D3D10Effect.h
  7. //  Content:    D3D10 Stateblock/Effect Types & APIs
  8. //
  9. //////////////////////////////////////////////////////////////////////////////
  10.  
  11. #ifndef __D3D10EFFECT_H__
  12. #define __D3D10EFFECT_H__
  13.  
  14. #include "d3d10.h"
  15.  
  16. //////////////////////////////////////////////////////////////////////////////
  17. // File contents:
  18. //
  19. // 1) Stateblock enums, structs, interfaces, flat APIs
  20. // 2) Effect enums, structs, interfaces, flat APIs
  21. //////////////////////////////////////////////////////////////////////////////
  22.  
  23. //----------------------------------------------------------------------------
  24. // D3D10_DEVICE_STATE_TYPES:
  25. //
  26. // Used in ID3D10StateBlockMask function calls
  27. //
  28. //----------------------------------------------------------------------------
  29.  
  30. typedef enum _D3D10_DEVICE_STATE_TYPES
  31. {
  32.    
  33.     D3D10_DST_SO_BUFFERS=1,             // Single-value state (atomical gets/sets)
  34.     D3D10_DST_OM_RENDER_TARGETS,        // Single-value state (atomical gets/sets)
  35.     D3D10_DST_OM_DEPTH_STENCIL_STATE,   // Single-value state
  36.     D3D10_DST_OM_BLEND_STATE,           // Single-value state
  37.  
  38.     D3D10_DST_VS,                       // Single-value state
  39.     D3D10_DST_VS_SAMPLERS,              // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
  40.     D3D10_DST_VS_SHADER_RESOURCES,      // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
  41.     D3D10_DST_VS_CONSTANT_BUFFERS,      // Count:                      
  42.  
  43.     D3D10_DST_GS,                       // Single-value state
  44.     D3D10_DST_GS_SAMPLERS,              // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
  45.     D3D10_DST_GS_SHADER_RESOURCES,      // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
  46.     D3D10_DST_GS_CONSTANT_BUFFERS,      // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
  47.  
  48.     D3D10_DST_PS,                       // Single-value state
  49.     D3D10_DST_PS_SAMPLERS,              // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
  50.     D3D10_DST_PS_SHADER_RESOURCES,      // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
  51.     D3D10_DST_PS_CONSTANT_BUFFERS,      // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT
  52.    
  53.     D3D10_DST_IA_VERTEX_BUFFERS,        // Count: D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
  54.     D3D10_DST_IA_INDEX_BUFFER,          // Single-value state
  55.     D3D10_DST_IA_INPUT_LAYOUT,          // Single-value state
  56.     D3D10_DST_IA_PRIMITIVE_TOPOLOGY,    // Single-value state
  57.  
  58.     D3D10_DST_RS_VIEWPORTS,             // Single-value state (atomical gets/sets)
  59.     D3D10_DST_RS_SCISSOR_RECTS,         // Single-value state (atomical gets/sets)
  60.     D3D10_DST_RS_RASTERIZER_STATE,      // Single-value state
  61.  
  62.     D3D10_DST_PREDICATION,              // Single-value state
  63. } D3D10_DEVICE_STATE_TYPES;
  64.  
  65. //----------------------------------------------------------------------------
  66. // D3D10_DEVICE_STATE_TYPES:
  67. //
  68. // Used in ID3D10StateBlockMask function calls
  69. //
  70. //----------------------------------------------------------------------------
  71.  
  72. #ifndef D3D10_BYTES_FROM_BITS
  73. #define D3D10_BYTES_FROM_BITS(x) (((x) + 7) / 8)
  74. #endif // D3D10_BYTES_FROM_BITS
  75.  
  76. typedef struct _D3D10_STATE_BLOCK_MASK
  77. {
  78.     BYTE VS;
  79.     BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
  80.     BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
  81.     BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
  82.    
  83.     BYTE GS;
  84.     BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
  85.     BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
  86.     BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
  87.    
  88.     BYTE PS;
  89.     BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
  90.     BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
  91.     BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
  92.    
  93.     BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)];
  94.     BYTE IAIndexBuffer;
  95.     BYTE IAInputLayout;
  96.     BYTE IAPrimitiveTopology;
  97.    
  98.     BYTE OMRenderTargets;
  99.     BYTE OMDepthStencilState;
  100.     BYTE OMBlendState;
  101.    
  102.     BYTE RSViewports;
  103.     BYTE RSScissorRects;
  104.     BYTE RSRasterizerState;
  105.    
  106.     BYTE SOBuffers;
  107.    
  108.     BYTE Predication;
  109. } D3D10_STATE_BLOCK_MASK;
  110.  
  111. //////////////////////////////////////////////////////////////////////////////
  112. // ID3D10StateBlock //////////////////////////////////////////////////////////
  113. //////////////////////////////////////////////////////////////////////////////
  114.  
  115. typedef interface ID3D10StateBlock ID3D10StateBlock;
  116. typedef interface ID3D10StateBlock *LPD3D10STATEBLOCK;
  117.  
  118. // {0803425A-57F5-4dd6-9465-A87570834A08}
  119. DEFINE_GUID(IID_ID3D10StateBlock,
  120. 0x803425a, 0x57f5, 0x4dd6, 0x94, 0x65, 0xa8, 0x75, 0x70, 0x83, 0x4a, 0x8);
  121.  
  122. #undef INTERFACE
  123. #define INTERFACE ID3D10StateBlock
  124.  
  125. DECLARE_INTERFACE_(ID3D10StateBlock, IUnknown)
  126. {
  127.     STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
  128.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  129.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  130.    
  131.     STDMETHOD(Capture)(THIS) PURE;
  132.     STDMETHOD(Apply)(THIS) PURE;
  133.     STDMETHOD(ReleaseAllDeviceObjects)(THIS) PURE;
  134.     STDMETHOD(GetDevice)(THIS_ ID3D10Device **ppDevice) PURE;
  135. };
  136.  
  137. #ifdef __cplusplus
  138. extern "C" {
  139. #endif //__cplusplus
  140.  
  141. //----------------------------------------------------------------------------
  142. // D3D10_STATE_BLOCK_MASK and manipulation functions
  143. // -------------------------------------------------
  144. //
  145. // These functions exist to facilitate working with the D3D10_STATE_BLOCK_MASK
  146. // structure.
  147. //
  148. // D3D10_STATE_BLOCK_MASK *pResult or *pMask
  149. //   The state block mask to operate on
  150. //
  151. // D3D10_STATE_BLOCK_MASK *pA, *pB
  152. //   The source state block masks for the binary union/intersect/difference
  153. //   operations.
  154. //
  155. // D3D10_DEVICE_STATE_TYPES StateType
  156. //   The specific state type to enable/disable/query
  157. //
  158. // UINT RangeStart, RangeLength, Entry
  159. //   The specific bit or range of bits for a given state type to operate on.
  160. //   Consult the comments for D3D10_DEVICE_STATE_TYPES and
  161. //   D3D10_STATE_BLOCK_MASK for information on the valid bit ranges for
  162. //   each state.
  163. //
  164. //----------------------------------------------------------------------------
  165.  
  166. HRESULT WINAPI D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
  167. HRESULT WINAPI D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
  168. HRESULT WINAPI D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
  169. HRESULT WINAPI D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
  170. HRESULT WINAPI D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
  171. HRESULT WINAPI D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK *pMask);
  172. HRESULT WINAPI D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK *pMask);
  173. BOOL    WINAPI D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT Entry);
  174.  
  175. //----------------------------------------------------------------------------
  176. // D3D10CreateStateBlock
  177. // ---------------------
  178. //
  179. // Creates a state block object based on the mask settings specified
  180. //   in a D3D10_STATE_BLOCK_MASK structure.
  181. //
  182. // ID3D10Device *pDevice
  183. //      The device interface to associate with this state block
  184. //
  185. // D3D10_STATE_BLOCK_MASK *pStateBlockMask
  186. //      A bit mask whose settings are used to generate a state block
  187. //      object.
  188. //
  189. // ID3D10StateBlock **ppStateBlock
  190. //      The resulting state block object.  This object will save/restore
  191. //      only those pieces of state that were set in the state block
  192. //      bit mask
  193. //----------------------------------------------------------------------------
  194.  
  195. HRESULT WINAPI D3D10CreateStateBlock(ID3D10Device *pDevice, D3D10_STATE_BLOCK_MASK *pStateBlockMask, ID3D10StateBlock **ppStateBlock);
  196.  
  197. #ifdef __cplusplus
  198. }
  199. #endif //__cplusplus
  200.  
  201. //----------------------------------------------------------------------------
  202. // D3D10_COMPILE & D3D10_EFFECT flags:
  203. // -------------------------------------
  204. //
  205. // These flags are passed in when creating an effect, and affect
  206. // either compilation behavior or runtime effect behavior
  207. //
  208. // D3D10_EFFECT_COMPILE_CHILD_EFFECT
  209. //   Compile this .fx file to a child effect. Child effects have no initializers
  210. //   for any shared values as these are initialied in the master effect (pool).
  211. //
  212. // D3D10_EFFECT_COMPILE_ALLOW_SLOW_OPS
  213. //   By default, performance mode is enabled.  Performance mode disallows
  214. //   mutable state objects by preventing non-literal expressions from appearing in
  215. //   state object definitions.  Specifying this flag will disable the mode and allow
  216. //   for mutable state objects.
  217. //
  218. // D3D10_EFFECT_SINGLE_THREADED
  219. //   Do not attempt to synchronize with other threads loading effects into the
  220. //   same pool.
  221. //
  222. //----------------------------------------------------------------------------
  223.  
  224. #define D3D10_EFFECT_COMPILE_CHILD_EFFECT              (1 << 0)
  225. #define D3D10_EFFECT_COMPILE_ALLOW_SLOW_OPS            (1 << 1)
  226. #define D3D10_EFFECT_SINGLE_THREADED                   (1 << 3)
  227.  
  228.  
  229. //----------------------------------------------------------------------------
  230. // D3D10_EFFECT_VARIABLE flags:
  231. // ----------------------------
  232. //
  233. // These flags describe an effect variable (global or annotation),
  234. // and are returned in D3D10_EFFECT_VARIABLE_DESC::Flags.
  235. //
  236. // D3D10_EFFECT_VARIABLE_POOLED
  237. //   Indicates that the this variable or constant buffer resides
  238. //   in an effect pool. If this flag is not set, then the variable resides
  239. //   in a standalone effect (if ID3D10Effect::GetPool returns NULL)
  240. //   or a child effect (if ID3D10Effect::GetPool returns non-NULL)
  241. //
  242. // D3D10_EFFECT_VARIABLE_ANNOTATION
  243. //   Indicates that this is an annotation on a technique, pass, or global
  244. //   variable. Otherwise, this is a global variable. Annotations cannot
  245. //   be shared.
  246. //
  247. // D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT
  248. //   Indicates that the variable has been explicitly bound using the
  249. //   register keyword.
  250. //----------------------------------------------------------------------------
  251.  
  252. #define D3D10_EFFECT_VARIABLE_POOLED                  (1 << 0)
  253. #define D3D10_EFFECT_VARIABLE_ANNOTATION              (1 << 1)
  254. #define D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT     (1 << 2)
  255.  
  256. //////////////////////////////////////////////////////////////////////////////
  257. // ID3D10EffectType //////////////////////////////////////////////////////////
  258. //////////////////////////////////////////////////////////////////////////////
  259.  
  260. //----------------------------------------------------------------------------
  261. // D3D10_EFFECT_TYPE_DESC:
  262. //
  263. // Retrieved by ID3D10EffectType::GetDesc()
  264. //----------------------------------------------------------------------------
  265.  
  266. typedef struct _D3D10_EFFECT_TYPE_DESC
  267. {
  268.     LPCSTR  TypeName;               // Name of the type
  269.                                     // (e.g. "float4" or "MyStruct")
  270.  
  271.     D3D10_SHADER_VARIABLE_CLASS    Class;  // (e.g. scalar, vector, object, etc.)
  272.     D3D10_SHADER_VARIABLE_TYPE     Type;   // (e.g. float, texture, vertexshader, etc.)
  273.    
  274.     UINT    Elements;               // Number of elements in this type
  275.                                     // (0 if not an array)
  276.     UINT    Members;                // Number of members
  277.                                     // (0 if not a structure)
  278.     UINT    Rows;                   // Number of rows in this type
  279.                                     // (0 if not a numeric primitive)
  280.     UINT    Columns;                // Number of columns in this type
  281.                                     // (0 if not a numeric primitive)
  282.    
  283.     UINT    PackedSize;             // Number of bytes required to represent
  284.                                     // this data type, when tightly packed
  285.     UINT    UnpackedSize;           // Number of bytes occupied by this data
  286.                                     // type, when laid out in a constant buffer
  287.     UINT    Stride;                 // Number of bytes to seek between elements,
  288.                                     // when laid out in a constant buffer
  289. } D3D10_EFFECT_TYPE_DESC;
  290.  
  291. typedef interface ID3D10EffectType ID3D10EffectType;
  292. typedef interface ID3D10EffectType *LPD3D10EFFECTTYPE;
  293.  
  294. // {4E9E1DDC-CD9D-4772-A837-00180B9B88FD}
  295. DEFINE_GUID(IID_ID3D10EffectType,
  296. 0x4e9e1ddc, 0xcd9d, 0x4772, 0xa8, 0x37, 0x0, 0x18, 0xb, 0x9b, 0x88, 0xfd);
  297.  
  298. #undef INTERFACE
  299. #define INTERFACE ID3D10EffectType
  300.  
  301. DECLARE_INTERFACE(ID3D10EffectType)
  302. {
  303.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  304.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_TYPE_DESC *pDesc) PURE;
  305.     STDMETHOD_(ID3D10EffectType*, GetMemberTypeByIndex)(THIS_ UINT Index) PURE;
  306.     STDMETHOD_(ID3D10EffectType*, GetMemberTypeByName)(THIS_ LPCSTR Name) PURE;
  307.     STDMETHOD_(ID3D10EffectType*, GetMemberTypeBySemantic)(THIS_ LPCSTR Semantic) PURE;
  308.     STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT Index) PURE;
  309.     STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT Index) PURE;
  310. };
  311.  
  312. //////////////////////////////////////////////////////////////////////////////
  313. // ID3D10EffectVariable //////////////////////////////////////////////////////
  314. //////////////////////////////////////////////////////////////////////////////
  315.  
  316. //----------------------------------------------------------------------------
  317. // D3D10_EFFECT_VARIABLE_DESC:
  318. //
  319. // Retrieved by ID3D10EffectVariable::GetDesc()
  320. //----------------------------------------------------------------------------
  321.  
  322. typedef struct _D3D10_EFFECT_VARIABLE_DESC
  323. {
  324.     LPCSTR  Name;                   // Name of this variable, annotation,
  325.                                     // or structure member
  326.     LPCSTR  Semantic;               // Semantic string of this variable
  327.                                     // or structure member (NULL for
  328.                                     // annotations or if not present)
  329.    
  330.     UINT    Flags;                  // D3D10_EFFECT_VARIABLE_* flags
  331.     UINT    Annotations;            // Number of annotations on this variable
  332.                                     // (always 0 for annotations)
  333.  
  334.     UINT    BufferOffset;           // Offset into containing cbuffer or tbuffer
  335.                                     // (always 0 for annotations or variables
  336.                                     // not in constant buffers)
  337.  
  338.     UINT    ExplicitBindPoint;      // Used if the variable has been explicitly bound
  339.                                     // using the register keyword. Check Flags for
  340.                                     // D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT;
  341. } D3D10_EFFECT_VARIABLE_DESC;
  342.  
  343. typedef interface ID3D10EffectVariable ID3D10EffectVariable;
  344. typedef interface ID3D10EffectVariable *LPD3D10EFFECTVARIABLE;
  345.  
  346. // {AE897105-00E6-45bf-BB8E-281DD6DB8E1B}
  347. DEFINE_GUID(IID_ID3D10EffectVariable,
  348. 0xae897105, 0xe6, 0x45bf, 0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b);
  349.  
  350. #undef INTERFACE
  351. #define INTERFACE ID3D10EffectVariable
  352.  
  353. // Forward defines
  354. typedef interface ID3D10EffectScalarVariable ID3D10EffectScalarVariable;
  355. typedef interface ID3D10EffectVectorVariable ID3D10EffectVectorVariable;
  356. typedef interface ID3D10EffectMatrixVariable ID3D10EffectMatrixVariable;
  357. typedef interface ID3D10EffectStringVariable ID3D10EffectStringVariable;
  358. typedef interface ID3D10EffectShaderResourceVariable ID3D10EffectShaderResourceVariable;
  359. typedef interface ID3D10EffectRenderTargetViewVariable ID3D10EffectRenderTargetViewVariable;
  360. typedef interface ID3D10EffectDepthStencilViewVariable ID3D10EffectDepthStencilViewVariable;
  361. typedef interface ID3D10EffectConstantBuffer ID3D10EffectConstantBuffer;
  362. typedef interface ID3D10EffectShaderVariable ID3D10EffectShaderVariable;
  363. typedef interface ID3D10EffectBlendVariable ID3D10EffectBlendVariable;
  364. typedef interface ID3D10EffectDepthStencilVariable ID3D10EffectDepthStencilVariable;
  365. typedef interface ID3D10EffectRasterizerVariable ID3D10EffectRasterizerVariable;
  366. typedef interface ID3D10EffectSamplerVariable ID3D10EffectSamplerVariable;
  367.  
  368. DECLARE_INTERFACE(ID3D10EffectVariable)
  369. {
  370.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  371.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  372.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  373.    
  374.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  375.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  376.    
  377.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  378.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  379.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  380.    
  381.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  382.  
  383.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  384.    
  385.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  386.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  387.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  388.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  389.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  390.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  391.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  392.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  393.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  394.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  395.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  396.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  397.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  398.    
  399.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  400.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  401. };
  402.  
  403. //////////////////////////////////////////////////////////////////////////////
  404. // ID3D10EffectScalarVariable ////////////////////////////////////////////////
  405. //////////////////////////////////////////////////////////////////////////////
  406.  
  407. typedef interface ID3D10EffectScalarVariable ID3D10EffectScalarVariable;
  408. typedef interface ID3D10EffectScalarVariable *LPD3D10EFFECTSCALARVARIABLE;
  409.  
  410. // {00E48F7B-D2C8-49e8-A86C-022DEE53431F}
  411. DEFINE_GUID(IID_ID3D10EffectScalarVariable,
  412. 0xe48f7b, 0xd2c8, 0x49e8, 0xa8, 0x6c, 0x2, 0x2d, 0xee, 0x53, 0x43, 0x1f);
  413.  
  414. #undef INTERFACE
  415. #define INTERFACE ID3D10EffectScalarVariable
  416.  
  417. DECLARE_INTERFACE_(ID3D10EffectScalarVariable, ID3D10EffectVariable)
  418. {
  419.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  420.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  421.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  422.    
  423.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  424.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  425.    
  426.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  427.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  428.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  429.    
  430.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  431.    
  432.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  433.    
  434.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  435.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  436.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  437.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  438.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  439.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  440.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  441.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  442.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  443.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  444.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  445.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  446.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  447.    
  448.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  449.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  450.    
  451.     STDMETHOD(SetFloat)(THIS_ float Value) PURE;
  452.     STDMETHOD(GetFloat)(THIS_ float *pValue) PURE;    
  453.    
  454.     STDMETHOD(SetFloatArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  455.     STDMETHOD(GetFloatArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  456.    
  457.     STDMETHOD(SetInt)(THIS_ int Value) PURE;
  458.     STDMETHOD(GetInt)(THIS_ int *pValue) PURE;
  459.    
  460.     STDMETHOD(SetIntArray)(THIS_ int *pData, UINT Offset, UINT Count) PURE;
  461.     STDMETHOD(GetIntArray)(THIS_ int *pData, UINT Offset, UINT Count) PURE;
  462.    
  463.     STDMETHOD(SetBool)(THIS_ BOOL Value) PURE;
  464.     STDMETHOD(GetBool)(THIS_ BOOL *pValue) PURE;
  465.    
  466.     STDMETHOD(SetBoolArray)(THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
  467.     STDMETHOD(GetBoolArray)(THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
  468. };
  469.  
  470. //////////////////////////////////////////////////////////////////////////////
  471. // ID3D10EffectVectorVariable ////////////////////////////////////////////////
  472. //////////////////////////////////////////////////////////////////////////////
  473.  
  474. typedef interface ID3D10EffectVectorVariable ID3D10EffectVectorVariable;
  475. typedef interface ID3D10EffectVectorVariable *LPD3D10EFFECTVECTORVARIABLE;
  476.  
  477. // {62B98C44-1F82-4c67-BCD0-72CF8F217E81}
  478. DEFINE_GUID(IID_ID3D10EffectVectorVariable,
  479. 0x62b98c44, 0x1f82, 0x4c67, 0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81);
  480.  
  481. #undef INTERFACE
  482. #define INTERFACE ID3D10EffectVectorVariable
  483.  
  484. DECLARE_INTERFACE_(ID3D10EffectVectorVariable, ID3D10EffectVariable)
  485. {
  486.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  487.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  488.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  489.    
  490.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  491.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  492.    
  493.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  494.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  495.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  496.    
  497.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  498.    
  499.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  500.    
  501.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  502.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  503.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  504.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  505.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  506.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  507.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  508.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  509.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  510.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  511.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  512.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  513.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  514.    
  515.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  516.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  517.    
  518.     STDMETHOD(SetBoolVector) (THIS_ BOOL *pData) PURE;
  519.     STDMETHOD(SetIntVector)  (THIS_ int *pData) PURE;
  520.     STDMETHOD(SetFloatVector)(THIS_ float *pData) PURE;
  521.  
  522.     STDMETHOD(GetBoolVector) (THIS_ BOOL *pData) PURE;
  523.     STDMETHOD(GetIntVector)  (THIS_ int *pData) PURE;
  524.     STDMETHOD(GetFloatVector)(THIS_ float *pData) PURE;
  525.  
  526.     STDMETHOD(SetBoolVectorArray) (THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
  527.     STDMETHOD(SetIntVectorArray)  (THIS_ int *pData, UINT Offset, UINT Count) PURE;
  528.     STDMETHOD(SetFloatVectorArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  529.  
  530.     STDMETHOD(GetBoolVectorArray) (THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
  531.     STDMETHOD(GetIntVectorArray)  (THIS_ int *pData, UINT Offset, UINT Count) PURE;
  532.     STDMETHOD(GetFloatVectorArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  533. };
  534.  
  535. //////////////////////////////////////////////////////////////////////////////
  536. // ID3D10EffectMatrixVariable ////////////////////////////////////////////////
  537. //////////////////////////////////////////////////////////////////////////////
  538.  
  539. typedef interface ID3D10EffectMatrixVariable ID3D10EffectMatrixVariable;
  540. typedef interface ID3D10EffectMatrixVariable *LPD3D10EFFECTMATRIXVARIABLE;
  541.  
  542. // {50666C24-B82F-4eed-A172-5B6E7E8522E0}
  543. DEFINE_GUID(IID_ID3D10EffectMatrixVariable,
  544. 0x50666c24, 0xb82f, 0x4eed, 0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0);
  545.  
  546. #undef INTERFACE
  547. #define INTERFACE ID3D10EffectMatrixVariable
  548.  
  549. DECLARE_INTERFACE_(ID3D10EffectMatrixVariable, ID3D10EffectVariable)
  550. {
  551.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  552.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  553.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  554.    
  555.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  556.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  557.    
  558.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  559.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  560.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  561.    
  562.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  563.    
  564.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  565.    
  566.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  567.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  568.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  569.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  570.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  571.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  572.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  573.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  574.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  575.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  576.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  577.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  578.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  579.    
  580.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  581.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
  582.    
  583.     STDMETHOD(SetMatrix)(THIS_ float *pData) PURE;
  584.     STDMETHOD(GetMatrix)(THIS_ float *pData) PURE;
  585.    
  586.     STDMETHOD(SetMatrixArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  587.     STDMETHOD(GetMatrixArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  588.    
  589.     STDMETHOD(SetMatrixTranspose)(THIS_ float *pData) PURE;
  590.     STDMETHOD(GetMatrixTranspose)(THIS_ float *pData) PURE;
  591.    
  592.     STDMETHOD(SetMatrixTransposeArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  593.     STDMETHOD(GetMatrixTransposeArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
  594. };
  595.  
  596. //////////////////////////////////////////////////////////////////////////////
  597. // ID3D10EffectStringVariable ////////////////////////////////////////////////
  598. //////////////////////////////////////////////////////////////////////////////
  599.  
  600. typedef interface ID3D10EffectStringVariable ID3D10EffectStringVariable;
  601. typedef interface ID3D10EffectStringVariable *LPD3D10EFFECTSTRINGVARIABLE;
  602.  
  603. // {71417501-8DF9-4e0a-A78A-255F9756BAFF}
  604. DEFINE_GUID(IID_ID3D10EffectStringVariable,
  605. 0x71417501, 0x8df9, 0x4e0a, 0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff);
  606.  
  607. #undef INTERFACE
  608. #define INTERFACE ID3D10EffectStringVariable
  609.  
  610. DECLARE_INTERFACE_(ID3D10EffectStringVariable, ID3D10EffectVariable)
  611. {
  612.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  613.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  614.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  615.    
  616.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  617.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  618.    
  619.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  620.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  621.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  622.    
  623.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  624.    
  625.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  626.    
  627.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  628.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  629.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  630.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  631.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  632.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  633.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  634.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  635.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  636.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  637.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  638.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  639.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  640.    
  641.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  642.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  643.    
  644.     STDMETHOD(GetString)(THIS_ LPCSTR *ppString) PURE;
  645.     STDMETHOD(GetStringArray)(THIS_ LPCSTR *ppStrings, UINT Offset, UINT Count) PURE;
  646. };
  647.  
  648. //////////////////////////////////////////////////////////////////////////////
  649. // ID3D10EffectShaderResourceVariable ////////////////////////////////////////
  650. //////////////////////////////////////////////////////////////////////////////
  651.  
  652. typedef interface ID3D10EffectShaderResourceVariable ID3D10EffectShaderResourceVariable;
  653. typedef interface ID3D10EffectShaderResourceVariable *LPD3D10EFFECTSHADERRESOURCEVARIABLE;
  654.  
  655. // {C0A7157B-D872-4b1d-8073-EFC2ACD4B1FC}
  656. DEFINE_GUID(IID_ID3D10EffectShaderResourceVariable,
  657. 0xc0a7157b, 0xd872, 0x4b1d, 0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc);
  658.  
  659.  
  660. #undef INTERFACE
  661. #define INTERFACE ID3D10EffectShaderResourceVariable
  662.  
  663. DECLARE_INTERFACE_(ID3D10EffectShaderResourceVariable, ID3D10EffectVariable)
  664. {
  665.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  666.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  667.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  668.    
  669.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  670.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  671.    
  672.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  673.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  674.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  675.    
  676.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  677.    
  678.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  679.    
  680.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  681.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  682.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  683.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  684.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  685.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  686.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  687.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  688.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  689.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  690.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  691.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  692.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  693.    
  694.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  695.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  696.    
  697.     STDMETHOD(SetResource)(THIS_ ID3D10ShaderResourceView *pResource) PURE;
  698.     STDMETHOD(GetResource)(THIS_ ID3D10ShaderResourceView **ppResource) PURE;
  699.    
  700.     STDMETHOD(SetResourceArray)(THIS_ ID3D10ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
  701.     STDMETHOD(GetResourceArray)(THIS_ ID3D10ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
  702. };
  703.  
  704. //////////////////////////////////////////////////////////////////////////////
  705. // ID3D10EffectRenderTargetViewVariable //////////////////////////////////////
  706. //////////////////////////////////////////////////////////////////////////////
  707.  
  708. typedef interface ID3D10EffectRenderTargetViewVariable ID3D10EffectRenderTargetViewVariable;
  709. typedef interface ID3D10EffectRenderTargetViewVariable *LPD3D10EFFECTRENDERTARGETVIEWVARIABLE;
  710.  
  711. // {28CA0CC3-C2C9-40bb-B57F-67B737122B17}
  712. DEFINE_GUID(IID_ID3D10EffectRenderTargetViewVariable,
  713. 0x28ca0cc3, 0xc2c9, 0x40bb, 0xb5, 0x7f, 0x67, 0xb7, 0x37, 0x12, 0x2b, 0x17);
  714.  
  715. #undef INTERFACE
  716. #define INTERFACE ID3D10EffectRenderTargetViewVariable
  717.  
  718. DECLARE_INTERFACE_(ID3D10EffectRenderTargetViewVariable, ID3D10EffectVariable)
  719. {
  720.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  721.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  722.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  723.    
  724.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  725.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  726.    
  727.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  728.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  729.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  730.    
  731.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  732.    
  733.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  734.    
  735.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  736.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  737.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  738.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  739.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  740.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  741.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  742.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  743.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  744.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  745.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  746.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  747.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  748.    
  749.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  750.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  751.    
  752.     STDMETHOD(SetRenderTarget)(THIS_ ID3D10RenderTargetView *pResource) PURE;
  753.     STDMETHOD(GetRenderTarget)(THIS_ ID3D10RenderTargetView **ppResource) PURE;
  754.    
  755.     STDMETHOD(SetRenderTargetArray)(THIS_ ID3D10RenderTargetView **ppResources, UINT Offset, UINT Count) PURE;
  756.     STDMETHOD(GetRenderTargetArray)(THIS_ ID3D10RenderTargetView **ppResources, UINT Offset, UINT Count) PURE;
  757. };
  758.  
  759. //////////////////////////////////////////////////////////////////////////////
  760. // ID3D10EffectDepthStencilViewVariable //////////////////////////////////////
  761. //////////////////////////////////////////////////////////////////////////////
  762.  
  763. typedef interface ID3D10EffectDepthStencilViewVariable ID3D10EffectDepthStencilViewVariable;
  764. typedef interface ID3D10EffectDepthStencilViewVariable *LPD3D10EFFECTDEPTHSTENCILVIEWVARIABLE;
  765.  
  766. // {3E02C918-CC79-4985-B622-2D92AD701623}
  767. DEFINE_GUID(IID_ID3D10EffectDepthStencilViewVariable,
  768. 0x3e02c918, 0xcc79, 0x4985, 0xb6, 0x22, 0x2d, 0x92, 0xad, 0x70, 0x16, 0x23);
  769.  
  770. #undef INTERFACE
  771. #define INTERFACE ID3D10EffectDepthStencilViewVariable
  772.  
  773. DECLARE_INTERFACE_(ID3D10EffectDepthStencilViewVariable, ID3D10EffectVariable)
  774. {
  775.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  776.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  777.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  778.    
  779.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  780.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  781.    
  782.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  783.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  784.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  785.    
  786.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  787.    
  788.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  789.    
  790.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  791.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  792.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  793.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  794.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  795.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  796.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  797.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  798.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  799.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  800.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  801.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  802.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  803.    
  804.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  805.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  806.    
  807.     STDMETHOD(SetDepthStencil)(THIS_ ID3D10DepthStencilView *pResource) PURE;
  808.     STDMETHOD(GetDepthStencil)(THIS_ ID3D10DepthStencilView **ppResource) PURE;
  809.    
  810.     STDMETHOD(SetDepthStencilArray)(THIS_ ID3D10DepthStencilView **ppResources, UINT Offset, UINT Count) PURE;
  811.     STDMETHOD(GetDepthStencilArray)(THIS_ ID3D10DepthStencilView **ppResources, UINT Offset, UINT Count) PURE;
  812. };
  813.  
  814. //////////////////////////////////////////////////////////////////////////////
  815. // ID3D10EffectConstantBuffer ////////////////////////////////////////////////
  816. //////////////////////////////////////////////////////////////////////////////
  817.  
  818. typedef interface ID3D10EffectConstantBuffer ID3D10EffectConstantBuffer;
  819. typedef interface ID3D10EffectConstantBuffer *LPD3D10EFFECTCONSTANTBUFFER;
  820.  
  821. // {56648F4D-CC8B-4444-A5AD-B5A3D76E91B3}
  822. DEFINE_GUID(IID_ID3D10EffectConstantBuffer,
  823. 0x56648f4d, 0xcc8b, 0x4444, 0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3);
  824.  
  825. #undef INTERFACE
  826. #define INTERFACE ID3D10EffectConstantBuffer
  827.  
  828. DECLARE_INTERFACE_(ID3D10EffectConstantBuffer, ID3D10EffectVariable)
  829. {
  830.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  831.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  832.    
  833.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  834.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  835.    
  836.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  837.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  838.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  839.    
  840.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  841.    
  842.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  843.    
  844.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  845.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  846.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  847.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  848.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  849.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  850.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  851.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  852.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  853.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  854.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  855.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  856.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  857.    
  858.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  859.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  860.    
  861.     STDMETHOD(SetConstantBuffer)(THIS_ ID3D10Buffer *pConstantBuffer) PURE;
  862.     STDMETHOD(GetConstantBuffer)(THIS_ ID3D10Buffer **ppConstantBuffer) PURE;
  863.    
  864.     STDMETHOD(SetTextureBuffer)(THIS_ ID3D10ShaderResourceView *pTextureBuffer) PURE;
  865.     STDMETHOD(GetTextureBuffer)(THIS_ ID3D10ShaderResourceView **ppTextureBuffer) PURE;
  866. };
  867.  
  868. //////////////////////////////////////////////////////////////////////////////
  869. // ID3D10EffectShaderVariable ////////////////////////////////////////////////
  870. //////////////////////////////////////////////////////////////////////////////
  871.  
  872. //----------------------------------------------------------------------------
  873. // D3D10_EFFECT_SHADER_DESC:
  874. //
  875. // Retrieved by ID3D10EffectShaderVariable::GetShaderDesc()
  876. //----------------------------------------------------------------------------
  877.  
  878. typedef struct _D3D10_EFFECT_SHADER_DESC
  879. {
  880.     CONST BYTE *pInputSignature;    // Passed into CreateInputLayout,
  881.                                     // valid on VS and GS only
  882.    
  883.     BOOL IsInline;                  // Is this an anonymous shader variable
  884.                                     // resulting from an inline shader assignment?
  885.    
  886.    
  887.     // -- The following fields are not valid after Optimize() --
  888.     CONST BYTE *pBytecode;          // Shader bytecode
  889.     UINT BytecodeLength;
  890.    
  891.     LPCSTR SODecl;                  // Stream out declaration string (for GS with SO)
  892.    
  893.     UINT NumInputSignatureEntries;  // Number of entries in the input signature
  894.     UINT NumOutputSignatureEntries; // Number of entries in the output signature
  895. } D3D10_EFFECT_SHADER_DESC;
  896.  
  897.  
  898. typedef interface ID3D10EffectShaderVariable ID3D10EffectShaderVariable;
  899. typedef interface ID3D10EffectShaderVariable *LPD3D10EFFECTSHADERVARIABLE;
  900.  
  901. // {80849279-C799-4797-8C33-0407A07D9E06}
  902. DEFINE_GUID(IID_ID3D10EffectShaderVariable,
  903. 0x80849279, 0xc799, 0x4797, 0x8c, 0x33, 0x4, 0x7, 0xa0, 0x7d, 0x9e, 0x6);
  904.  
  905. #undef INTERFACE
  906. #define INTERFACE ID3D10EffectShaderVariable
  907.  
  908. DECLARE_INTERFACE_(ID3D10EffectShaderVariable, ID3D10EffectVariable)
  909. {
  910.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  911.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  912.    
  913.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  914.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  915.    
  916.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  917.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  918.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  919.    
  920.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  921.    
  922.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  923.    
  924.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  925.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  926.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  927.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  928.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  929.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  930.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  931.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  932.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  933.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  934.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  935.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  936.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  937.        
  938.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  939.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  940.    
  941.     STDMETHOD(GetShaderDesc)(THIS_ UINT ShaderIndex, D3D10_EFFECT_SHADER_DESC *pDesc) PURE;
  942.    
  943.     STDMETHOD(GetVertexShader)(THIS_ UINT ShaderIndex, ID3D10VertexShader **ppVS) PURE;
  944.     STDMETHOD(GetGeometryShader)(THIS_ UINT ShaderIndex, ID3D10GeometryShader **ppGS) PURE;
  945.     STDMETHOD(GetPixelShader)(THIS_ UINT ShaderIndex, ID3D10PixelShader **ppPS) PURE;
  946.    
  947.     STDMETHOD(GetInputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
  948.     STDMETHOD(GetOutputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
  949. };
  950.  
  951. //////////////////////////////////////////////////////////////////////////////
  952. // ID3D10EffectBlendVariable /////////////////////////////////////////////////
  953. //////////////////////////////////////////////////////////////////////////////
  954.  
  955. typedef interface ID3D10EffectBlendVariable ID3D10EffectBlendVariable;
  956. typedef interface ID3D10EffectBlendVariable *LPD3D10EFFECTBLENDVARIABLE;
  957.  
  958. // {1FCD2294-DF6D-4eae-86B3-0E9160CFB07B}
  959. DEFINE_GUID(IID_ID3D10EffectBlendVariable,
  960. 0x1fcd2294, 0xdf6d, 0x4eae, 0x86, 0xb3, 0xe, 0x91, 0x60, 0xcf, 0xb0, 0x7b);
  961.  
  962. #undef INTERFACE
  963. #define INTERFACE ID3D10EffectBlendVariable
  964.  
  965. DECLARE_INTERFACE_(ID3D10EffectBlendVariable, ID3D10EffectVariable)
  966. {
  967.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  968.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  969.    
  970.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  971.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  972.    
  973.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  974.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  975.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  976.    
  977.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  978.    
  979.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  980.    
  981.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  982.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  983.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  984.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  985.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  986.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  987.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  988.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  989.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  990.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  991.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  992.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  993.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  994.    
  995.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  996.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  997.    
  998.     STDMETHOD(GetBlendState)(THIS_ UINT Index, ID3D10BlendState **ppBlendState) PURE;
  999.     STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_BLEND_DESC *pBlendDesc) PURE;
  1000. };
  1001.  
  1002. //////////////////////////////////////////////////////////////////////////////
  1003. // ID3D10EffectDepthStencilVariable //////////////////////////////////////////
  1004. //////////////////////////////////////////////////////////////////////////////
  1005.  
  1006. typedef interface ID3D10EffectDepthStencilVariable ID3D10EffectDepthStencilVariable;
  1007. typedef interface ID3D10EffectDepthStencilVariable *LPD3D10EFFECTDEPTHSTENCILVARIABLE;
  1008.  
  1009. // {AF482368-330A-46a5-9A5C-01C71AF24C8D}
  1010. DEFINE_GUID(IID_ID3D10EffectDepthStencilVariable,
  1011. 0xaf482368, 0x330a, 0x46a5, 0x9a, 0x5c, 0x1, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d);
  1012.  
  1013. #undef INTERFACE
  1014. #define INTERFACE ID3D10EffectDepthStencilVariable
  1015.  
  1016. DECLARE_INTERFACE_(ID3D10EffectDepthStencilVariable, ID3D10EffectVariable)
  1017. {
  1018.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  1019.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  1020.    
  1021.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  1022.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  1023.    
  1024.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  1025.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  1026.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  1027.    
  1028.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  1029.    
  1030.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  1031.    
  1032.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  1033.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  1034.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  1035.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  1036.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  1037.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  1038.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  1039.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  1040.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  1041.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  1042.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  1043.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  1044.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  1045.    
  1046.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1047.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1048.    
  1049.     STDMETHOD(GetDepthStencilState)(THIS_ UINT Index, ID3D10DepthStencilState **ppDepthStencilState) PURE;
  1050.     STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_DEPTH_STENCIL_DESC *pDepthStencilDesc) PURE;
  1051. };
  1052.  
  1053. //////////////////////////////////////////////////////////////////////////////
  1054. // ID3D10EffectRasterizerVariable ////////////////////////////////////////////
  1055. //////////////////////////////////////////////////////////////////////////////
  1056.  
  1057. typedef interface ID3D10EffectRasterizerVariable ID3D10EffectRasterizerVariable;
  1058. typedef interface ID3D10EffectRasterizerVariable *LPD3D10EFFECTRASTERIZERVARIABLE;
  1059.  
  1060. // {21AF9F0E-4D94-4ea9-9785-2CB76B8C0B34}
  1061. DEFINE_GUID(IID_ID3D10EffectRasterizerVariable,
  1062. 0x21af9f0e, 0x4d94, 0x4ea9, 0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0xb, 0x34);
  1063.  
  1064. #undef INTERFACE
  1065. #define INTERFACE ID3D10EffectRasterizerVariable
  1066.  
  1067. DECLARE_INTERFACE_(ID3D10EffectRasterizerVariable, ID3D10EffectVariable)
  1068. {
  1069.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  1070.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  1071.    
  1072.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  1073.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  1074.    
  1075.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  1076.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  1077.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  1078.    
  1079.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  1080.    
  1081.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  1082.    
  1083.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  1084.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  1085.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  1086.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  1087.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  1088.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  1089.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  1090.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  1091.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  1092.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  1093.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  1094.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  1095.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  1096.    
  1097.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1098.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1099.    
  1100.     STDMETHOD(GetRasterizerState)(THIS_ UINT Index, ID3D10RasterizerState **ppRasterizerState) PURE;
  1101.     STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_RASTERIZER_DESC *pRasterizerDesc) PURE;
  1102. };
  1103.  
  1104. //////////////////////////////////////////////////////////////////////////////
  1105. // ID3D10EffectSamplerVariable ///////////////////////////////////////////////
  1106. //////////////////////////////////////////////////////////////////////////////
  1107.  
  1108. typedef interface ID3D10EffectSamplerVariable ID3D10EffectSamplerVariable;
  1109. typedef interface ID3D10EffectSamplerVariable *LPD3D10EFFECTSAMPLERVARIABLE;
  1110.  
  1111. // {6530D5C7-07E9-4271-A418-E7CE4BD1E480}
  1112. DEFINE_GUID(IID_ID3D10EffectSamplerVariable,
  1113. 0x6530d5c7, 0x7e9, 0x4271, 0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80);
  1114.  
  1115. #undef INTERFACE
  1116. #define INTERFACE ID3D10EffectSamplerVariable
  1117.  
  1118. DECLARE_INTERFACE_(ID3D10EffectSamplerVariable, ID3D10EffectVariable)
  1119. {
  1120.     STDMETHOD_(ID3D10EffectType*, GetType)(THIS) PURE;
  1121.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_VARIABLE_DESC *pDesc) PURE;
  1122.    
  1123.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  1124.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  1125.    
  1126.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
  1127.     STDMETHOD_(ID3D10EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
  1128.     STDMETHOD_(ID3D10EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
  1129.    
  1130.     STDMETHOD_(ID3D10EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
  1131.    
  1132.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
  1133.    
  1134.     STDMETHOD_(ID3D10EffectScalarVariable*, AsScalar)(THIS) PURE;
  1135.     STDMETHOD_(ID3D10EffectVectorVariable*, AsVector)(THIS) PURE;
  1136.     STDMETHOD_(ID3D10EffectMatrixVariable*, AsMatrix)(THIS) PURE;
  1137.     STDMETHOD_(ID3D10EffectStringVariable*, AsString)(THIS) PURE;
  1138.     STDMETHOD_(ID3D10EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
  1139.     STDMETHOD_(ID3D10EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
  1140.     STDMETHOD_(ID3D10EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
  1141.     STDMETHOD_(ID3D10EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
  1142.     STDMETHOD_(ID3D10EffectShaderVariable*, AsShader)(THIS) PURE;
  1143.     STDMETHOD_(ID3D10EffectBlendVariable*, AsBlend)(THIS) PURE;
  1144.     STDMETHOD_(ID3D10EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
  1145.     STDMETHOD_(ID3D10EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
  1146.     STDMETHOD_(ID3D10EffectSamplerVariable*, AsSampler)(THIS) PURE;
  1147.    
  1148.     STDMETHOD(SetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1149.     STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
  1150.    
  1151.     STDMETHOD(GetSampler)(THIS_ UINT Index, ID3D10SamplerState **ppSampler) PURE;
  1152.     STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D10_SAMPLER_DESC *pSamplerDesc) PURE;
  1153. };
  1154.  
  1155. //////////////////////////////////////////////////////////////////////////////
  1156. // ID3D10EffectPass //////////////////////////////////////////////////////////
  1157. //////////////////////////////////////////////////////////////////////////////
  1158.  
  1159. //----------------------------------------------------------------------------
  1160. // D3D10_PASS_DESC:
  1161. //
  1162. // Retrieved by ID3D10EffectPass::GetDesc()
  1163. //----------------------------------------------------------------------------
  1164.  
  1165. typedef struct _D3D10_PASS_DESC
  1166. {
  1167.     LPCSTR Name;                    // Name of this pass (NULL if not anonymous)    
  1168.     UINT Annotations;               // Number of annotations on this pass
  1169.    
  1170.     BYTE *pIAInputSignature;        // Signature from VS or GS (if there is no VS)
  1171.                                     // or NULL if neither exists
  1172.     SIZE_T IAInputSignatureSize;    // Singature size in bytes                                
  1173.                                    
  1174.     UINT StencilRef;                // Specified in SetDepthStencilState()
  1175.     UINT SampleMask;                // Specified in SetBlendState()
  1176.     FLOAT BlendFactor[4];           // Specified in SetBlendState()
  1177. } D3D10_PASS_DESC;
  1178.  
  1179. //----------------------------------------------------------------------------
  1180. // D3D10_PASS_SHADER_DESC:
  1181. //
  1182. // Retrieved by ID3D10EffectPass::Get**ShaderDesc()
  1183. //----------------------------------------------------------------------------
  1184.  
  1185. typedef struct _D3D10_PASS_SHADER_DESC
  1186. {
  1187.     ID3D10EffectShaderVariable *pShaderVariable;    // The variable that this shader came from.
  1188.                                                     // If this is an inline shader assignment,
  1189.                                                     //   the returned interface will be an
  1190.                                                     //   anonymous shader variable, which is
  1191.                                                     //   not retrievable any other way.  It's
  1192.                                                     //   name in the variable description will
  1193.                                                     //   be "$Anonymous".
  1194.                                                     // If there is no assignment of this type in
  1195.                                                     //   the pass block, pShaderVariable != NULL,
  1196.                                                     //   but pShaderVariable->IsValid() == FALSE.
  1197.    
  1198.     UINT                        ShaderIndex;        // The element of pShaderVariable (if an array)
  1199.                                                     // or 0 if not applicable
  1200. } D3D10_PASS_SHADER_DESC;
  1201.  
  1202. typedef interface ID3D10EffectPass ID3D10EffectPass;
  1203. typedef interface ID3D10EffectPass *LPD3D10EFFECTPASS;
  1204.  
  1205. // {5CFBEB89-1A06-46e0-B282-E3F9BFA36A54}
  1206. DEFINE_GUID(IID_ID3D10EffectPass,
  1207. 0x5cfbeb89, 0x1a06, 0x46e0, 0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54);
  1208.  
  1209. #undef INTERFACE
  1210. #define INTERFACE ID3D10EffectPass
  1211.  
  1212. DECLARE_INTERFACE(ID3D10EffectPass)
  1213. {
  1214.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  1215.     STDMETHOD(GetDesc)(THIS_ D3D10_PASS_DESC *pDesc) PURE;
  1216.    
  1217.     STDMETHOD(GetVertexShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
  1218.     STDMETHOD(GetGeometryShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
  1219.     STDMETHOD(GetPixelShaderDesc)(THIS_ D3D10_PASS_SHADER_DESC *pDesc) PURE;
  1220.    
  1221.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  1222.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  1223.    
  1224.     STDMETHOD(Apply)(THIS_ UINT Flags) PURE;
  1225.    
  1226.     STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *pStateBlockMask) PURE;
  1227. };
  1228.  
  1229. //////////////////////////////////////////////////////////////////////////////
  1230. // ID3D10EffectTechnique /////////////////////////////////////////////////////
  1231. //////////////////////////////////////////////////////////////////////////////
  1232.  
  1233. //----------------------------------------------------------------------------
  1234. // D3D10_TECHNIQUE_DESC:
  1235. //
  1236. // Retrieved by ID3D10EffectTechnique::GetDesc()
  1237. //----------------------------------------------------------------------------
  1238.  
  1239. typedef struct _D3D10_TECHNIQUE_DESC
  1240. {
  1241.     LPCSTR  Name;                   // Name of this technique (NULL if not anonymous)
  1242.     UINT    Passes;                 // Number of passes contained within
  1243.     UINT    Annotations;            // Number of annotations on this technique
  1244. } D3D10_TECHNIQUE_DESC;
  1245.  
  1246. typedef interface ID3D10EffectTechnique ID3D10EffectTechnique;
  1247. typedef interface ID3D10EffectTechnique *LPD3D10EFFECTTECHNIQUE;
  1248.  
  1249. // {DB122CE8-D1C9-4292-B237-24ED3DE8B175}
  1250. DEFINE_GUID(IID_ID3D10EffectTechnique,
  1251. 0xdb122ce8, 0xd1c9, 0x4292, 0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75);
  1252.  
  1253. #undef INTERFACE
  1254. #define INTERFACE ID3D10EffectTechnique
  1255.  
  1256. DECLARE_INTERFACE(ID3D10EffectTechnique)
  1257. {
  1258.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  1259.     STDMETHOD(GetDesc)(THIS_ D3D10_TECHNIQUE_DESC *pDesc) PURE;
  1260.    
  1261.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
  1262.     STDMETHOD_(ID3D10EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
  1263.    
  1264.     STDMETHOD_(ID3D10EffectPass*, GetPassByIndex)(THIS_ UINT Index) PURE;
  1265.     STDMETHOD_(ID3D10EffectPass*, GetPassByName)(THIS_ LPCSTR Name) PURE;
  1266.    
  1267.     STDMETHOD(ComputeStateBlockMask)(THIS_ D3D10_STATE_BLOCK_MASK *pStateBlockMask) PURE;
  1268. };
  1269.  
  1270. //////////////////////////////////////////////////////////////////////////////
  1271. // ID3D10Effect //////////////////////////////////////////////////////////////
  1272. //////////////////////////////////////////////////////////////////////////////
  1273.  
  1274. //----------------------------------------------------------------------------
  1275. // D3D10_EFFECT_DESC:
  1276. //
  1277. // Retrieved by ID3D10Effect::GetDesc()
  1278. //----------------------------------------------------------------------------
  1279.  
  1280. typedef struct _D3D10_EFFECT_DESC
  1281. {
  1282.    
  1283.     BOOL    IsChildEffect;          // TRUE if this is a child effect,
  1284.                                     // FALSE if this is standalone or an effect pool.
  1285.                                    
  1286.     UINT    ConstantBuffers;        // Number of constant buffers in this effect,
  1287.                                     // excluding the effect pool.
  1288.     UINT    SharedConstantBuffers;  // Number of constant buffers shared in this
  1289.                                     // effect's pool.
  1290.                                    
  1291.     UINT    GlobalVariables;        // Number of global variables in this effect,
  1292.                                     // excluding the effect pool.
  1293.     UINT    SharedGlobalVariables;  // Number of global variables shared in this
  1294.                                     // effect's pool.
  1295.                                    
  1296.     UINT    Techniques;             // Number of techniques in this effect,
  1297.                                     // excluding the effect pool.
  1298. } D3D10_EFFECT_DESC;
  1299.  
  1300. typedef interface ID3D10Effect ID3D10Effect;
  1301. typedef interface ID3D10Effect *LPD3D10EFFECT;
  1302.  
  1303. // {51B0CA8B-EC0B-4519-870D-8EE1CB5017C7}
  1304. DEFINE_GUID(IID_ID3D10Effect,
  1305. 0x51b0ca8b, 0xec0b, 0x4519, 0x87, 0xd, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7);
  1306.  
  1307. #undef INTERFACE
  1308. #define INTERFACE ID3D10Effect
  1309.  
  1310. DECLARE_INTERFACE_(ID3D10Effect, IUnknown)
  1311. {
  1312.     // IUnknown
  1313.     STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
  1314.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  1315.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  1316.    
  1317.     STDMETHOD_(BOOL, IsValid)(THIS) PURE;
  1318.     STDMETHOD_(BOOL, IsPool)(THIS) PURE;
  1319.  
  1320.     // Managing D3D Device
  1321.     STDMETHOD(GetDevice)(THIS_ ID3D10Device** ppDevice) PURE;
  1322.    
  1323.     // New Reflection APIs
  1324.     STDMETHOD(GetDesc)(THIS_ D3D10_EFFECT_DESC *pDesc) PURE;
  1325.    
  1326.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetConstantBufferByIndex)(THIS_ UINT Index) PURE;
  1327.     STDMETHOD_(ID3D10EffectConstantBuffer*, GetConstantBufferByName)(THIS_ LPCSTR Name) PURE;
  1328.    
  1329.     STDMETHOD_(ID3D10EffectVariable*, GetVariableByIndex)(THIS_ UINT Index) PURE;
  1330.     STDMETHOD_(ID3D10EffectVariable*, GetVariableByName)(THIS_ LPCSTR Name) PURE;
  1331.     STDMETHOD_(ID3D10EffectVariable*, GetVariableBySemantic)(THIS_ LPCSTR Semantic) PURE;
  1332.    
  1333.     STDMETHOD_(ID3D10EffectTechnique*, GetTechniqueByIndex)(THIS_ UINT Index) PURE;
  1334.     STDMETHOD_(ID3D10EffectTechnique*, GetTechniqueByName)(THIS_ LPCSTR Name) PURE;
  1335.    
  1336.     STDMETHOD(Optimize)(THIS) PURE;
  1337.     STDMETHOD_(BOOL, IsOptimized)(THIS) PURE;
  1338.  
  1339. };
  1340.  
  1341. //////////////////////////////////////////////////////////////////////////////
  1342. // ID3D10EffectPool //////////////////////////////////////////////////////////
  1343. //////////////////////////////////////////////////////////////////////////////
  1344.  
  1345. typedef interface ID3D10EffectPool ID3D10EffectPool;
  1346. typedef interface ID3D10EffectPool *LPD3D10EFFECTPOOL;
  1347.  
  1348. // {9537AB04-3250-412e-8213-FCD2F8677933}
  1349. DEFINE_GUID(IID_ID3D10EffectPool,
  1350. 0x9537ab04, 0x3250, 0x412e, 0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33);
  1351.  
  1352. #undef INTERFACE
  1353. #define INTERFACE ID3D10EffectPool
  1354.  
  1355. DECLARE_INTERFACE_(ID3D10EffectPool, IUnknown)
  1356. {
  1357.     // IUnknown
  1358.     STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
  1359.     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  1360.     STDMETHOD_(ULONG, Release)(THIS) PURE;
  1361.    
  1362.     STDMETHOD_(ID3D10Effect*, AsEffect)(THIS) PURE;
  1363.    
  1364.     // No public methods
  1365. };
  1366.  
  1367. //////////////////////////////////////////////////////////////////////////////
  1368. // APIs //////////////////////////////////////////////////////////////////////
  1369. //////////////////////////////////////////////////////////////////////////////
  1370.  
  1371. #ifdef __cplusplus
  1372. extern "C" {
  1373. #endif //__cplusplus
  1374.  
  1375. //----------------------------------------------------------------------------
  1376. // D3D10CreateEffectFromXXXX:
  1377. // --------------------------
  1378. // Creates an effect from a binary effect or file
  1379. //
  1380. // Parameters:
  1381. //
  1382. // [in]
  1383. //
  1384. //
  1385. //  pData
  1386. //      Blob of effect data, either ASCII (uncompiled, for D3D10CompileEffectFromMemory) or binary (compiled, for D3D10CreateEffect*)
  1387. //  DataLength
  1388. //      Length of the data blob
  1389. //
  1390. //  pSrcFileName
  1391. //      Name of the ASCII Effect file pData was obtained from
  1392. //
  1393. //  pDefines
  1394. //      Optional NULL-terminated array of preprocessor macro definitions.
  1395. //  pInclude
  1396. //      Optional interface pointer to use for handling #include directives.
  1397. //      If this parameter is NULL, #includes will be honored when compiling
  1398. //      from file, and will error when compiling from resource or memory.
  1399. //  HLSLFlags
  1400. //      Compilation flags pertaining to shaders and data types, honored by
  1401. //      the HLSL compiler
  1402. //  FXFlags
  1403. //      Compilation flags pertaining to Effect compilation, honored
  1404. //      by the Effect compiler
  1405. //  pDevice
  1406. //      Pointer to the D3D10 device on which to create Effect resources
  1407. //  pEffectPool
  1408. //      Pointer to an Effect pool to share variables with or NULL
  1409. //
  1410. // [out]
  1411. //
  1412. //  ppEffect
  1413. //      Address of the newly created Effect interface
  1414. //  ppEffectPool
  1415. //      Address of the newly created Effect pool interface
  1416. //  ppErrors
  1417. //      If non-NULL, address of a buffer with error messages that occurred
  1418. //      during parsing or compilation
  1419. //
  1420. //----------------------------------------------------------------------------
  1421.  
  1422. HRESULT WINAPI D3D10CompileEffectFromMemory(void *pData, SIZE_T DataLength, LPCSTR pSrcFileName, CONST D3D10_SHADER_MACRO *pDefines,
  1423.     ID3D10Include *pInclude, UINT HLSLFlags, UINT FXFlags,
  1424.     ID3D10Blob **ppCompiledEffect, ID3D10Blob **ppErrors);
  1425.  
  1426. HRESULT WINAPI D3D10CreateEffectFromMemory(void *pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device *pDevice,
  1427.     ID3D10EffectPool *pEffectPool, ID3D10Effect **ppEffect);
  1428.  
  1429. HRESULT WINAPI D3D10CreateEffectPoolFromMemory(void *pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device *pDevice,
  1430.     ID3D10EffectPool **ppEffectPool);
  1431.  
  1432.  
  1433. //----------------------------------------------------------------------------
  1434. // D3D10DisassembleEffect:
  1435. // -----------------------
  1436. // Takes an effect interface, and returns a buffer containing text assembly.
  1437. //
  1438. // Parameters:
  1439. //  pEffect
  1440. //      Pointer to the runtime effect interface.
  1441. //  EnableColorCode
  1442. //      Emit HTML tags for color coding the output?
  1443. //  ppDisassembly
  1444. //      Returns a buffer containing the disassembled effect.
  1445. //----------------------------------------------------------------------------
  1446.  
  1447. HRESULT WINAPI D3D10DisassembleEffect(ID3D10Effect *pEffect, BOOL EnableColorCode, ID3D10Blob **ppDisassembly);
  1448.  
  1449. #ifdef __cplusplus
  1450. }
  1451. #endif //__cplusplus
  1452.  
  1453. #endif //__D3D10EFFECT_H__
  1454.  
  1455.  
  1456.