1 /***********************************************************************\
2 *                             d3d10effect.d                             *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                       Placed into public domain                       *
7 \***********************************************************************/
8 module win32.directx.d3d10effect;
9 version(Windows):
10 
11 private import win32.windows;
12 private import win32.directx.d3d10;
13 
14 
15 enum D3D10_DEVICE_STATE_TYPES {
16 	D3D10_DST_SO_BUFFERS = 1,
17 	D3D10_DST_OM_RENDER_TARGETS,
18 	D3D10_DST_OM_DEPTH_STENCIL_STATE,
19 	D3D10_DST_OM_BLEND_STATE,
20 	D3D10_DST_VS,
21 	D3D10_DST_VS_SAMPLERS,
22 	D3D10_DST_VS_SHADER_RESOURCES,
23 	D3D10_DST_VS_CONSTANT_BUFFERS,
24 	D3D10_DST_GS,
25 	D3D10_DST_GS_SAMPLERS,
26 	D3D10_DST_GS_SHADER_RESOURCES,
27 	D3D10_DST_GS_CONSTANT_BUFFERS,
28 	D3D10_DST_PS,
29 	D3D10_DST_PS_SAMPLERS,
30 	D3D10_DST_PS_SHADER_RESOURCES,
31 	D3D10_DST_PS_CONSTANT_BUFFERS,
32 	D3D10_DST_IA_VERTEX_BUFFERS,
33 	D3D10_DST_IA_INDEX_BUFFER,
34 	D3D10_DST_IA_INPUT_LAYOUT,
35 	D3D10_DST_IA_PRIMITIVE_TOPOLOGY,
36 	D3D10_DST_RS_VIEWPORTS,
37 	D3D10_DST_RS_SCISSOR_RECTS,
38 	D3D10_DST_RS_RASTERIZER_STATE,
39 	D3D10_DST_PREDICATION
40 }
41 
42 struct D3D10_STATE_BLOCK_MASK {
43 	BYTE VS;
44 	BYTE[2] VSSamplers;
45 	BYTE[16] VSShaderResources;
46 	BYTE[2] VSConstantBuffers;
47 	BYTE GS;
48 	BYTE[2] GSSamplers;
49 	BYTE[16] GSShaderResources;
50 	BYTE[2] GSConstantBuffers;
51 	BYTE PS;
52 	BYTE[2] PSSamplers;
53 	BYTE[16] PSShaderResources;
54 	BYTE[2] PSConstantBuffers;
55 	BYTE[2] IAVertexBuffers;
56 	BYTE IAIndexBuffer;
57 	BYTE IAInputLayout;
58 	BYTE IAPrimitiveTopology;
59 	BYTE OMRenderTargets;
60 	BYTE OMDepthStencilState;
61 	BYTE OMBlendState;
62 	BYTE RSViewports;
63 	BYTE RSScissorRects;
64 	BYTE RSRasterizerState;
65 	BYTE SOBuffers;
66 	BYTE Predication;
67 }
68 
69 extern (C) const GUID IID_ID3D10StateBlock = {0x803425a, 0x57f5, 0x4dd6, [0x94, 0x65, 0xa8, 0x75, 0x70, 0x83, 0x4a, 0x08]};
70 
71 interface ID3D10StateBlock : IUnknown {
72 	extern(Windows) :
73 	HRESULT Capture();
74 	HRESULT Apply();
75 	HRESULT ReleaseAllDeviceObjects();
76 	HRESULT GetDevice(ID3D10Device ppDevice);
77 }
78 
79 HRESULT D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult);
80 HRESULT D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult);
81 HRESULT D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK* pA, D3D10_STATE_BLOCK_MASK* pB, D3D10_STATE_BLOCK_MASK* pResult);
82 HRESULT D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
83 HRESULT D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
84 HRESULT D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK* pMask);
85 HRESULT D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK* pMask);
86 BOOL D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK* pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT Entry);
87 HRESULT D3D10CreateStateBlock(ID3D10Device pDevice, D3D10_STATE_BLOCK_MASK* pStateBlockMask, ID3D10StateBlock ppStateBlock);
88 
89 const D3D10_EFFECT_COMPILE_CHILD_EFFECT			= 1 << 0;
90 const D3D10_EFFECT_COMPILE_ALLOW_SLOW_OPS		= 1 << 1;
91 const D3D10_EFFECT_SINGLE_THREADED				= 1 << 3;
92 const D3D10_EFFECT_VARIABLE_POOLED				= 1 << 0;
93 const D3D10_EFFECT_VARIABLE_ANNOTATION			= 1 << 1;
94 const D3D10_EFFECT_VARIABLE_EXPLICIT_BIND_POINT	= 1 << 2;
95 
96 struct D3D10_EFFECT_TYPE_DESC {
97 	LPCSTR	TypeName;
98 	D3D10_SHADER_VARIABLE_CLASS	Class;
99 	D3D10_SHADER_VARIABLE_TYPE	Type;
100 	UINT	Elements;
101 	UINT	Members;
102 	UINT	Rows;
103 	UINT	Columns;
104 	UINT	PackedSize;
105 	UINT	UnpackedSize;
106 	UINT	Stride;
107 }
108 
109 extern (C) const GUID IID_ID3D10EffectType = {0x4e9e1ddc, 0xcd9d, 0x4772, [0xa8, 0x37, 0x0, 0x18, 0x0b, 0x9b, 0x88, 0xfd]};
110 
111 interface ID3D10EffectType {
112 /* TODO: fix vtbl[0] bug
113 	extern(Windows) :
114 	BOOL IsValid();
115 	HRESULT GetDesc(D3D10_EFFECT_TYPE_DESC* pDesc);
116 	ID3D10EffectType GetMemberTypeByIndex(UINT Index);
117 	ID3D10EffectType GetMemberTypeByName(LPCSTR Name);
118 	ID3D10EffectType GetMemberTypeBySemantic(LPCSTR Semantic);
119 	LPCSTR GetMemberName(UINT Index);
120 	LPCSTR GetMemberSemantic(UINT Index);
121 	*/
122 }
123 
124 struct D3D10_EFFECT_VARIABLE_DESC {
125 	LPCSTR	Name;
126 	LPCSTR	Semantic;
127 	UINT	Flags;
128 	UINT	Annotations;
129 	UINT	BufferOffset;
130 	UINT	ExplicitBindPoint;
131 }
132 
133 extern (C) const GUID IID_ID3D10EffectVariable = {0xae897105, 0x00e6, 0x45bf, [0xbb, 0x8e, 0x28, 0x1d, 0xd6, 0xdb, 0x8e, 0x1b]};
134 
135 interface ID3D10EffectVariable {
136 /* TODO: fix vtbl[0] bug
137 	extern(Windows) :
138 	BOOL IsValid();
139 	ID3D10EffectType GetType();
140 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
141 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
142 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
143 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
144 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
145 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
146 	ID3D10EffectVariable GetElement(UINT Index);
147 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
148 	ID3D10EffectScalarVariable AsScalar();
149 	ID3D10EffectVectorVariable AsVector();
150 	ID3D10EffectMatrixVariable AsMatrix();
151 	ID3D10EffectStringVariable AsString();
152 	ID3D10EffectShaderResourceVariable AsShaderResource();
153 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
154 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
155 	ID3D10EffectConstantBuffer AsConstantBuffer();
156 	ID3D10EffectShaderVariable AsShader();
157 	ID3D10EffectBlendVariable AsBlend();
158 	ID3D10EffectDepthStencilVariable AsDepthStencil();
159 	ID3D10EffectRasterizerVariable AsRasterizer();
160 	ID3D10EffectSamplerVariable AsSampler();
161 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
162 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
163 	*/
164 }
165 
166 extern (C) const GUID IID_ID3D10EffectScalarVariable = {0xe48f7b, 0xd2c8, 0x49e8, [0xa8, 0x6c, 0x2, 0x2d, 0xee, 0x53, 0x43, 0x1f]};
167 
168 interface ID3D10EffectScalarVariable : ID3D10EffectVariable {
169 /* TODO: fix vtbl[0] bug
170 	extern(Windows) :
171 	BOOL IsValid();
172 	ID3D10EffectType GetType();
173 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
174 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
175 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
176 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
177 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
178 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
179 	ID3D10EffectVariable GetElement(UINT Index);
180 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
181 	ID3D10EffectScalarVariable AsScalar();
182 	ID3D10EffectVectorVariable AsVector();
183 	ID3D10EffectMatrixVariable AsMatrix();
184 	ID3D10EffectStringVariable AsString();
185 	ID3D10EffectShaderResourceVariable AsShaderResource();
186 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
187 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
188 	ID3D10EffectConstantBuffer AsConstantBuffer();
189 	ID3D10EffectShaderVariable AsShader();
190 	ID3D10EffectBlendVariable AsBlend();
191 	ID3D10EffectDepthStencilVariable AsDepthStencil();
192 	ID3D10EffectRasterizerVariable AsRasterizer();
193 	ID3D10EffectSamplerVariable AsSampler();
194 	HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
195 	HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
196 	HRESULT SetFloat(float Value);
197 	HRESULT GetFloat(float* pValue);
198 	HRESULT SetFloatArray(float* pData, UINT Offset, UINT Count);
199 	HRESULT GetFloatArray(float* pData, UINT Offset, UINT Count);
200 	HRESULT SetInt(int Value);
201 	HRESULT GetInt(int* pValue);
202 	HRESULT SetIntArray(int* pData, UINT Offset, UINT Count);
203 	HRESULT GetIntArray(int* pData, UINT Offset, UINT Count);
204 	HRESULT SetBool(BOOL Value);
205 	HRESULT GetBool(BOOL* pValue);
206 	HRESULT SetBoolArray(BOOL* pData, UINT Offset, UINT Count);
207 	HRESULT GetBoolArray(BOOL* pData, UINT Offset, UINT Count);
208 	*/
209 }
210 
211 extern (C) const GUID IID_ID3D10EffectVectorVariable = {0x62b98c44, 0x1f82, 0x4c67, [0xbc, 0xd0, 0x72, 0xcf, 0x8f, 0x21, 0x7e, 0x81]};
212 
213 interface ID3D10EffectVectorVariable : ID3D10EffectVariable {
214 /* TODO: fix vtbl[0] bug
215 	extern(Windows) :
216 	BOOL IsValid();
217 	ID3D10EffectType GetType();
218 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
219 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
220 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
221 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
222 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
223 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
224 	ID3D10EffectVariable GetElement(UINT Index);
225 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
226 	ID3D10EffectScalarVariable AsScalar();
227 	ID3D10EffectVectorVariable AsVector();
228 	ID3D10EffectMatrixVariable AsMatrix();
229 	ID3D10EffectStringVariable AsString();
230 	ID3D10EffectShaderResourceVariable AsShaderResource();
231 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
232 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
233 	ID3D10EffectConstantBuffer AsConstantBuffer();
234 	ID3D10EffectShaderVariable AsShader();
235 	ID3D10EffectBlendVariable AsBlend();
236 	ID3D10EffectDepthStencilVariable AsDepthStencil();
237 	ID3D10EffectRasterizerVariable AsRasterizer();
238 	ID3D10EffectSamplerVariable AsSampler();
239 	HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
240 	HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
241 	HRESULT SetBoolVector (BOOL* pData);
242 	HRESULT SetIntVector  (int* pData);
243 	HRESULT SetFloatVector(float* pData);
244 	HRESULT GetBoolVector (BOOL* pData);
245 	HRESULT GetIntVector  (int* pData);
246 	HRESULT GetFloatVector(float* pData);
247 	HRESULT SetBoolVectorArray (BOOL* pData, UINT Offset, UINT Count);
248 	HRESULT SetIntVectorArray  (int* pData, UINT Offset, UINT Count);
249 	HRESULT SetFloatVectorArray(float* pData, UINT Offset, UINT Count);
250 	HRESULT GetBoolVectorArray (BOOL* pData, UINT Offset, UINT Count);
251 	HRESULT GetIntVectorArray  (int* pData, UINT Offset, UINT Count);
252 	HRESULT GetFloatVectorArray(float* pData, UINT Offset, UINT Count);
253 	*/
254 }
255 
256 extern (C) const GUID IID_ID3D10EffectMatrixVariable = {0x50666c24, 0xb82f, 0x4eed, [0xa1, 0x72, 0x5b, 0x6e, 0x7e, 0x85, 0x22, 0xe0]};
257 
258 interface ID3D10EffectMatrixVariable : ID3D10EffectVariable {
259 /* TODO: fix vtbl[0] bug
260 	extern(Windows) :
261 	BOOL IsValid();
262 	ID3D10EffectType GetType();
263 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
264 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
265 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
266 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
267 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
268 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
269 	ID3D10EffectVariable GetElement(UINT Index);
270 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
271 	ID3D10EffectScalarVariable AsScalar();
272 	ID3D10EffectVectorVariable AsVector();
273 	ID3D10EffectMatrixVariable AsMatrix();
274 	ID3D10EffectStringVariable AsString();
275 	ID3D10EffectShaderResourceVariable AsShaderResource();
276 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
277 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
278 	ID3D10EffectConstantBuffer AsConstantBuffer();
279 	ID3D10EffectShaderVariable AsShader();
280 	ID3D10EffectBlendVariable AsBlend();
281 	ID3D10EffectDepthStencilVariable AsDepthStencil();
282 	ID3D10EffectRasterizerVariable AsRasterizer();
283 	ID3D10EffectSamplerVariable AsSampler();
284 	HRESULT SetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
285 	HRESULT GetRawValue(void* pData, UINT ByteOffset, UINT ByteCount);
286 	HRESULT SetMatrix(float* pData);
287 	HRESULT GetMatrix(float* pData);
288 	HRESULT SetMatrixArray(float* pData, UINT Offset, UINT Count);
289 	HRESULT GetMatrixArray(float* pData, UINT Offset, UINT Count);
290 	HRESULT SetMatrixTranspose(float* pData);
291 	HRESULT GetMatrixTranspose(float* pData);
292 	HRESULT SetMatrixTransposeArray(float* pData, UINT Offset, UINT Count);
293 	HRESULT GetMatrixTransposeArray(float* pData, UINT Offset, UINT Count);
294 	*/
295 }
296 
297 extern (C) const GUID IID_ID3D10EffectStringVariable = {0x71417501, 0x8df9, 0x4e0a, [0xa7, 0x8a, 0x25, 0x5f, 0x97, 0x56, 0xba, 0xff]};
298 
299 interface ID3D10EffectStringVariable : ID3D10EffectVariable {
300 /* TODO: fix vtbl[0] bug
301 	extern(Windows) :
302 	BOOL IsValid();
303 	ID3D10EffectType GetType();
304 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
305 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
306 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
307 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
308 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
309 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
310 	ID3D10EffectVariable GetElement(UINT Index);
311 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
312 	ID3D10EffectScalarVariable AsScalar();
313 	ID3D10EffectVectorVariable AsVector();
314 	ID3D10EffectMatrixVariable AsMatrix();
315 	ID3D10EffectStringVariable AsString();
316 	ID3D10EffectShaderResourceVariable AsShaderResource();
317 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
318 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
319 	ID3D10EffectConstantBuffer AsConstantBuffer();
320 	ID3D10EffectShaderVariable AsShader();
321 	ID3D10EffectBlendVariable AsBlend();
322 	ID3D10EffectDepthStencilVariable AsDepthStencil();
323 	ID3D10EffectRasterizerVariable AsRasterizer();
324 	ID3D10EffectSamplerVariable AsSampler();
325 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
326 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
327 	HRESULT GetString(LPCSTR* ppString);
328 	HRESULT GetStringArray(LPCSTR* ppStrings, UINT Offset, UINT Count);
329 	*/
330 }
331 
332 extern (C) const GUID IID_ID3D10EffectShaderResourceVariable = {0xc0a7157b, 0xd872, 0x4b1d, [0x80, 0x73, 0xef, 0xc2, 0xac, 0xd4, 0xb1, 0xfc]};
333 
334 interface ID3D10EffectShaderResourceVariable : ID3D10EffectVariable {
335 /* TODO: fix vtbl[0] bug
336 	extern(Windows) :
337 	BOOL IsValid();
338 	ID3D10EffectType GetType();
339 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
340 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
341 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
342 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
343 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
344 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
345 	ID3D10EffectVariable GetElement(UINT Index);
346 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
347 	ID3D10EffectScalarVariable AsScalar();
348 	ID3D10EffectVectorVariable AsVector();
349 	ID3D10EffectMatrixVariable AsMatrix();
350 	ID3D10EffectStringVariable AsString();
351 	ID3D10EffectShaderResourceVariable AsShaderResource();
352 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
353 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
354 	ID3D10EffectConstantBuffer AsConstantBuffer();
355 	ID3D10EffectShaderVariable AsShader();
356 	ID3D10EffectBlendVariable AsBlend();
357 	ID3D10EffectDepthStencilVariable AsDepthStencil();
358 	ID3D10EffectRasterizerVariable AsRasterizer();
359 	ID3D10EffectSamplerVariable AsSampler();
360 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
361 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
362 	HRESULT SetResource(ID3D10ShaderResourceView pResource);
363 	HRESULT GetResource(ID3D10ShaderResourceView* ppResource);
364 	HRESULT SetResourceArray(ID3D10ShaderResourceView* ppResources, UINT Offset, UINT Count);
365 	HRESULT GetResourceArray(ID3D10ShaderResourceView* ppResources, UINT Offset, UINT Count);
366 	*/
367 }
368 
369 extern (C) const GUID IID_ID3D10EffectRenderTargetViewVariable = {0x28ca0cc3, 0xc2c9, 0x40bb, [0xb5, 0x7f, 0x67, 0xb7, 0x37, 0x12, 0x2b, 0x17]};
370 
371 interface ID3D10EffectRenderTargetViewVariable : ID3D10EffectVariable {
372 /* TODO: fix vtbl[0] bug
373 	extern(Windows) :
374 	BOOL IsValid();
375 	ID3D10EffectType GetType();
376 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
377 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
378 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
379 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
380 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
381 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
382 	ID3D10EffectVariable GetElement(UINT Index);
383 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
384 	ID3D10EffectScalarVariable AsScalar();
385 	ID3D10EffectVectorVariable AsVector();
386 	ID3D10EffectMatrixVariable AsMatrix();
387 	ID3D10EffectStringVariable AsString();
388 	ID3D10EffectShaderResourceVariable AsShaderResource();
389 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
390 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
391 	ID3D10EffectConstantBuffer AsConstantBuffer();
392 	ID3D10EffectShaderVariable AsShader();
393 	ID3D10EffectBlendVariable AsBlend();
394 	ID3D10EffectDepthStencilVariable AsDepthStencil();
395 	ID3D10EffectRasterizerVariable AsRasterizer();
396 	ID3D10EffectSamplerVariable AsSampler();
397 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
398 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
399 	HRESULT SetRenderTarget(ID3D10RenderTargetView pResource);
400 	HRESULT GetRenderTarget(ID3D10RenderTargetView* ppResource);
401 	HRESULT SetRenderTargetArray(ID3D10RenderTargetView* ppResources, UINT Offset, UINT Count);
402 	HRESULT GetRenderTargetArray(ID3D10RenderTargetView* ppResources, UINT Offset, UINT Count);
403 	*/
404 }
405 
406 extern (C) const GUID IID_ID3D10EffectDepthStencilViewVariable = {0x3e02c918, 0xcc79, 0x4985, [0xb6, 0x22, 0x2d, 0x92, 0xad, 0x70, 0x16, 0x23]};
407 
408 interface ID3D10EffectDepthStencilViewVariable : ID3D10EffectVariable {
409 /* TODO: fix vtbl[0] bug
410 	extern(Windows) :
411 	BOOL IsValid();
412 	ID3D10EffectType GetType();
413 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
414 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
415 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
416 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
417 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
418 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
419 	ID3D10EffectVariable GetElement(UINT Index);
420 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
421 	ID3D10EffectScalarVariable AsScalar();
422 	ID3D10EffectVectorVariable AsVector();
423 	ID3D10EffectMatrixVariable AsMatrix();
424 	ID3D10EffectStringVariable AsString();
425 	ID3D10EffectShaderResourceVariable AsShaderResource();
426 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
427 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
428 	ID3D10EffectConstantBuffer AsConstantBuffer();
429 	ID3D10EffectShaderVariable AsShader();
430 	ID3D10EffectBlendVariable AsBlend();
431 	ID3D10EffectDepthStencilVariable AsDepthStencil();
432 	ID3D10EffectRasterizerVariable AsRasterizer();
433 	ID3D10EffectSamplerVariable AsSampler();
434 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
435 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
436 	HRESULT SetDepthStencil(ID3D10DepthStencilView pResource);
437 	HRESULT GetDepthStencil(ID3D10DepthStencilView* ppResource);
438 	HRESULT SetDepthStencilArray(ID3D10DepthStencilView* ppResources, UINT Offset, UINT Count);
439 	HRESULT GetDepthStencilArray(ID3D10DepthStencilView* ppResources, UINT Offset, UINT Count);
440 	*/
441 }
442 
443 extern (C) const GUID IID_ID3D10EffectConstantBuffer = {0x56648f4d, 0xcc8b, 0x4444, [0xa5, 0xad, 0xb5, 0xa3, 0xd7, 0x6e, 0x91, 0xb3]};
444 
445 interface ID3D10EffectConstantBuffer : ID3D10EffectVariable {
446 /* TODO: fix vtbl[0] bug
447 	extern(Windows) :
448 	ID3D10EffectType GetType();
449 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
450 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
451 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
452 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
453 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
454 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
455 	ID3D10EffectVariable GetElement(UINT Index);
456 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
457 	ID3D10EffectScalarVariable AsScalar();
458 	ID3D10EffectVectorVariable AsVector();
459 	ID3D10EffectMatrixVariable AsMatrix();
460 	ID3D10EffectStringVariable AsString();
461 	ID3D10EffectShaderResourceVariable AsShaderResource();
462 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
463 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
464 	ID3D10EffectConstantBuffer AsConstantBuffer();
465 	ID3D10EffectShaderVariable AsShader();
466 	ID3D10EffectBlendVariable AsBlend();
467 	ID3D10EffectDepthStencilVariable AsDepthStencil();
468 	ID3D10EffectRasterizerVariable AsRasterizer();
469 	ID3D10EffectSamplerVariable AsSampler();
470 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
471 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
472 	HRESULT SetConstantBuffer(ID3D10Buffer pConstantBuffer);
473 	HRESULT GetConstantBuffer(ID3D10Buffer* ppConstantBuffer);
474 	HRESULT SetTextureBuffer(ID3D10ShaderResourceView pTextureBuffer);
475 	HRESULT GetTextureBuffer(ID3D10ShaderResourceView* ppTextureBuffer);
476 	*/
477 }
478 
479 struct D3D10_EFFECT_SHADER_DESC {
480 	BYTE*	pInputSignature;
481 	BOOL	IsInline;
482 	BYTE*	pBytecode;
483 	UINT	BytecodeLength;
484 	LPCSTR	SODecl;
485 	UINT	NumInputSignatureEntries;
486 	UINT	NumOutputSignatureEntries;
487 }
488 
489 extern (C) const GUID IID_ID3D10EffectShaderVariable = {0x80849279, 0xc799, 0x4797, [0x8c, 0x33, 0x4, 0x7, 0xa0, 0x7d, 0x9e, 0x6]};
490 
491 interface ID3D10EffectShaderVariable : ID3D10EffectVariable {
492 /* TODO: fix vtbl[0] bug
493 	extern(Windows) :
494 	ID3D10EffectType GetType();
495 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
496 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
497 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
498 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
499 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
500 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
501 	ID3D10EffectVariable GetElement(UINT Index);
502 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
503 	ID3D10EffectScalarVariable AsScalar();
504 	ID3D10EffectVectorVariable AsVector();
505 	ID3D10EffectMatrixVariable AsMatrix();
506 	ID3D10EffectStringVariable AsString();
507 	ID3D10EffectShaderResourceVariable AsShaderResource();
508 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
509 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
510 	ID3D10EffectConstantBuffer AsConstantBuffer();
511 	ID3D10EffectShaderVariable AsShader();
512 	ID3D10EffectBlendVariable AsBlend();
513 	ID3D10EffectDepthStencilVariable AsDepthStencil();
514 	ID3D10EffectRasterizerVariable AsRasterizer();
515 	ID3D10EffectSamplerVariable AsSampler();
516 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
517 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
518 	HRESULT GetShaderDesc(UINT ShaderIndex, D3D10_EFFECT_SHADER_DESC* pDesc);
519 	HRESULT GetVertexShader(UINT ShaderIndex, ID3D10VertexShader* ppVS);
520 	HRESULT GetGeometryShader(UINT ShaderIndex, ID3D10GeometryShader* ppGS);
521 	HRESULT GetPixelShader(UINT ShaderIndex, ID3D10PixelShader* ppPS);
522 	HRESULT GetInputSignatureElementDesc(UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC* pDesc);
523 	HRESULT GetOutputSignatureElementDesc(UINT ShaderIndex, UINT Element, D3D10_SIGNATURE_PARAMETER_DESC* pDesc);
524 	*/
525 }
526 
527 extern (C) const GUID IID_ID3D10EffectBlendVariable = {0x1fcd2294, 0xdf6d, 0x4eae, [0x86, 0xb3, 0xe, 0x91, 0x60, 0xcf, 0xb0, 0x7b]};
528 
529 interface ID3D10EffectBlendVariable : ID3D10EffectVariable {
530 /* TODO: fix vtbl[0] bug
531 	extern(Windows) :
532 	ID3D10EffectType GetType();
533 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
534 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
535 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
536 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
537 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
538 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
539 	ID3D10EffectVariable GetElement(UINT Index);
540 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
541 	ID3D10EffectScalarVariable AsScalar();
542 	ID3D10EffectVectorVariable AsVector();
543 	ID3D10EffectMatrixVariable AsMatrix();
544 	ID3D10EffectStringVariable AsString();
545 	ID3D10EffectShaderResourceVariable AsShaderResource();
546 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
547 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
548 	ID3D10EffectConstantBuffer AsConstantBuffer();
549 	ID3D10EffectShaderVariable AsShader();
550 	ID3D10EffectBlendVariable AsBlend();
551 	ID3D10EffectDepthStencilVariable AsDepthStencil();
552 	ID3D10EffectRasterizerVariable AsRasterizer();
553 	ID3D10EffectSamplerVariable AsSampler();
554 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
555 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
556 	HRESULT GetBlendState(UINT Index, ID3D10BlendState* ppBlendState);
557 	HRESULT GetBackingStore(UINT Index, D3D10_BLEND_DESC* pBlendDesc);
558 	*/
559 }
560 
561 extern (C) const GUID IID_ID3D10EffectDepthStencilVariable = {0xaf482368, 0x330a, 0x46a5, [0x9a, 0x5c, 0x1, 0xc7, 0x1a, 0xf2, 0x4c, 0x8d]};
562 
563 interface ID3D10EffectDepthStencilVariable : ID3D10EffectVariable {
564 /* TODO: fix vtbl[0] bug
565 	extern(Windows) :
566 	ID3D10EffectType GetType();
567 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
568 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
569 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
570 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
571 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
572 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
573 	ID3D10EffectVariable GetElement(UINT Index);
574 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
575 	ID3D10EffectScalarVariable AsScalar();
576 	ID3D10EffectVectorVariable AsVector();
577 	ID3D10EffectMatrixVariable AsMatrix();
578 	ID3D10EffectStringVariable AsString();
579 	ID3D10EffectShaderResourceVariable AsShaderResource();
580 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
581 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
582 	ID3D10EffectConstantBuffer AsConstantBuffer();
583 	ID3D10EffectShaderVariable AsShader();
584 	ID3D10EffectBlendVariable AsBlend();
585 	ID3D10EffectDepthStencilVariable AsDepthStencil();
586 	ID3D10EffectRasterizerVariable AsRasterizer();
587 	ID3D10EffectSamplerVariable AsSampler();
588 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
589 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
590 	HRESULT GetDepthStencilState(UINT Index, ID3D10DepthStencilState* ppDepthStencilState);
591 	HRESULT GetBackingStore(UINT Index, D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc);
592 	*/
593 }
594 
595 extern (C) const GUID IID_ID3D10EffectRasterizerVariable = {0x21af9f0e, 0x4d94, 0x4ea9, [0x97, 0x85, 0x2c, 0xb7, 0x6b, 0x8c, 0xb, 0x34]};
596 
597 interface ID3D10EffectRasterizerVariable : ID3D10EffectVariable {
598 /* TODO: fix vtbl[0] bug
599 	extern(Windows) :
600 	ID3D10EffectType GetType();
601 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
602 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
603 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
604 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
605 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
606 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
607 	ID3D10EffectVariable GetElement(UINT Index);
608 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
609 	ID3D10EffectScalarVariable AsScalar();
610 	ID3D10EffectVectorVariable AsVector();
611 	ID3D10EffectMatrixVariable AsMatrix();
612 	ID3D10EffectStringVariable AsString();
613 	ID3D10EffectShaderResourceVariable AsShaderResource();
614 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
615 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
616 	ID3D10EffectConstantBuffer AsConstantBuffer();
617 	ID3D10EffectShaderVariable AsShader();
618 	ID3D10EffectBlendVariable AsBlend();
619 	ID3D10EffectDepthStencilVariable AsDepthStencil();
620 	ID3D10EffectRasterizerVariable AsRasterizer();
621 	ID3D10EffectSamplerVariable AsSampler();
622 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
623 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
624 	HRESULT GetRasterizerState(UINT Index, ID3D10RasterizerState* ppRasterizerState);
625 	HRESULT GetBackingStore(UINT Index, D3D10_RASTERIZER_DESC* pRasterizerDesc);
626 	*/
627 }
628 
629 extern (C) const GUID IID_ID3D10EffectSamplerVariable = {0x6530d5c7, 0x07e9, 0x4271, [0xa4, 0x18, 0xe7, 0xce, 0x4b, 0xd1, 0xe4, 0x80]};
630 
631 interface ID3D10EffectSamplerVariable : ID3D10EffectVariable {
632 /* TODO: fix vtbl[0] bug
633 	extern(Windows) :
634 	ID3D10EffectType GetType();
635 	HRESULT GetDesc(D3D10_EFFECT_VARIABLE_DESC* pDesc);
636 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
637 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
638 	ID3D10EffectVariable GetMemberByIndex(UINT Index);
639 	ID3D10EffectVariable GetMemberByName(LPCSTR Name);
640 	ID3D10EffectVariable GetMemberBySemantic(LPCSTR Semantic);
641 	ID3D10EffectVariable GetElement(UINT Index);
642 	ID3D10EffectConstantBuffer GetParentConstantBuffer();
643 	ID3D10EffectScalarVariable AsScalar();
644 	ID3D10EffectVectorVariable AsVector();
645 	ID3D10EffectMatrixVariable AsMatrix();
646 	ID3D10EffectStringVariable AsString();
647 	ID3D10EffectShaderResourceVariable AsShaderResource();
648 	ID3D10EffectRenderTargetViewVariable AsRenderTargetView();
649 	ID3D10EffectDepthStencilViewVariable AsDepthStencilView();
650 	ID3D10EffectConstantBuffer AsConstantBuffer();
651 	ID3D10EffectShaderVariable AsShader();
652 	ID3D10EffectBlendVariable AsBlend();
653 	ID3D10EffectDepthStencilVariable AsDepthStencil();
654 	ID3D10EffectRasterizerVariable AsRasterizer();
655 	ID3D10EffectSamplerVariable AsSampler();
656 	HRESULT SetRawValue(void* pData, UINT Offset, UINT Count);
657 	HRESULT GetRawValue(void* pData, UINT Offset, UINT Count);
658 	HRESULT GetSampler(UINT Index, ID3D10SamplerState* ppSampler);
659 	HRESULT GetBackingStore(UINT Index, D3D10_SAMPLER_DESC* pSamplerDesc);
660 	*/
661 }
662 
663 struct D3D10_PASS_DESC {
664 	LPCSTR		Name;
665 	UINT		Annotations;
666 	BYTE*		pIAInputSignature;
667 	SIZE_T		IAInputSignatureSize;
668 	UINT		StencilRef;
669 	UINT		SampleMask;
670 	FLOAT[4]	BlendFactor;
671 }
672 
673 struct D3D10_PASS_SHADER_DESC {
674 	ID3D10EffectShaderVariable	pShaderVariable;
675 	UINT						ShaderIndex;
676 }
677 
678 extern (C) const GUID IID_ID3D10EffectPass = {0x5cfbeb89, 0x1a06, 0x46e0, [0xb2, 0x82, 0xe3, 0xf9, 0xbf, 0xa3, 0x6a, 0x54]};
679 
680 /+interface ID3D10EffectPass {
681 /* TODO: fix vtbl[0] bug
682 	extern(Windows) :
683 	BOOL IsValid();
684 	HRESULT GetDesc(D3D10_PASS_DESC* pDesc);
685 	HRESULT GetVertexShaderDesc(D3D10_PASS_SHADER_DESC* pDesc);
686 	HRESULT GetGeometryShaderDesc(D3D10_PASS_SHADER_DESC* pDesc);
687 	HRESULT GetPixelShaderDesc(D3D10_PASS_SHADER_DESC* pDesc);
688 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
689 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
690 	HRESULT Apply(UINT Flags);
691 	HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK* pStateBlockMask);
692 	*/
693 }+/
694 /**
695  * HACK to FIX vtbl[0] bug:
696  * This is an example HACK how to fix all interfaces which are NOT derived from
697  * IUnknown. They need the first entry in their vtbl[] point to the first
698  * virtual function.
699  * See:
700  * http://www.digitalmars.com/d/cpp_interface.html
701  * http://d.puremagic.com/issues/show_bug.cgi?id=1687
702  */
703 struct ID3D10EffectPassVtbl {
704 	extern(Windows) :
705 	BOOL function(ID3D10EffectPass) IsValid;
706 	HRESULT function(ID3D10EffectPass, D3D10_PASS_DESC* pDesc) GetDesc;
707 	HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetVertexShaderDesc;
708 	HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetGeometryShaderDesc;
709 	HRESULT function(ID3D10EffectPass, D3D10_PASS_SHADER_DESC* pDesc) GetPixelShaderDesc;
710 	ID3D10EffectVariable function(ID3D10EffectPass, UINT Index) GetAnnotationByIndex;
711 	ID3D10EffectVariable function(ID3D10EffectPass, LPCSTR Name) GetAnnotationByName;
712 	HRESULT function(ID3D10EffectPass, UINT Flags) Apply;
713 	HRESULT function(ID3D10EffectPass, D3D10_STATE_BLOCK_MASK* pStateBlockMask) ComputeStateBlockMask;
714 }
715 alias ID3D10EffectPassVtbl** ID3D10EffectPass;
716 
717 struct D3D10_TECHNIQUE_DESC {
718 	LPCSTR	Name;
719 	UINT	Passes;
720 	UINT	Annotations;
721 }
722 
723 extern (C) const GUID IID_ID3D10EffectTechnique = {0xdb122ce8, 0xd1c9, 0x4292, [0xb2, 0x37, 0x24, 0xed, 0x3d, 0xe8, 0xb1, 0x75]};
724 
725 /+interface ID3D10EffectTechnique {
726 /* TODO: fix vtbl[0] bug
727 	extern(Windows) :
728 	BOOL IsValid();
729 	HRESULT GetDesc(D3D10_TECHNIQUE_DESC* pDesc);
730 	ID3D10EffectVariable GetAnnotationByIndex(UINT Index);
731 	ID3D10EffectVariable GetAnnotationByName(LPCSTR Name);
732 	ID3D10EffectPass GetPassByIndex(UINT Index);
733 	ID3D10EffectPass GetPassByName(LPCSTR Name);
734 	HRESULT ComputeStateBlockMask(D3D10_STATE_BLOCK_MASK* pStateBlockMask);
735 	*/
736 }+/
737 /**
738  * HACK to FIX vtbl[0] bug:
739  * This is an example HACK how to fix all interfaces which are NOT derived from
740  * IUnknown. They need the first entry in their vtbl[] point to the first
741  * virtual function.
742  * See:
743  * http://www.digitalmars.com/d/cpp_interface.html
744  * http://d.puremagic.com/issues/show_bug.cgi?id=1687
745  */
746 struct ID3D10EffectTechniqueVtbl {
747 	extern(Windows) :
748 	BOOL function(ID3D10EffectTechnique) IsValid;
749 	HRESULT function(ID3D10EffectTechnique, D3D10_TECHNIQUE_DESC* pDesc) GetDesc;
750 	ID3D10EffectVariable function(ID3D10EffectTechnique, UINT Index) GetAnnotationByIndex;
751 	ID3D10EffectVariable function(ID3D10EffectTechnique, LPCSTR Name) GetAnnotationByName;
752 	ID3D10EffectPass function(ID3D10EffectTechnique, UINT Index) GetPassByIndex;
753 	ID3D10EffectPass function(ID3D10EffectTechnique, LPCSTR Name) GetPassByName;
754 	HRESULT function(ID3D10EffectTechnique, D3D10_STATE_BLOCK_MASK* pStateBlockMask) ComputeStateBlockMask;
755 }
756 alias ID3D10EffectTechniqueVtbl** ID3D10EffectTechnique;
757 
758 struct D3D10_EFFECT_DESC {
759 	BOOL	IsChildEffect;
760 	UINT	ConstantBuffers;
761 	UINT	SharedConstantBuffers;
762 	UINT	GlobalVariables;
763 	UINT	SharedGlobalVariables;
764 	UINT	Techniques;
765 }
766 
767 extern (C) const GUID IID_ID3D10Effect = {0x51b0ca8b, 0xec0b, 0x4519, [0x87, 0xd, 0x8e, 0xe1, 0xcb, 0x50, 0x17, 0xc7]};
768 
769 interface ID3D10Effect : IUnknown {
770 	extern(Windows) :
771 	BOOL IsValid();
772 	BOOL IsPool();
773 	HRESULT GetDevice(ID3D10Device* ppDevice);
774 	HRESULT GetDesc(D3D10_EFFECT_DESC* pDesc);
775 	ID3D10EffectConstantBuffer GetConstantBufferByIndex(UINT Index);
776 	ID3D10EffectConstantBuffer GetConstantBufferByName(LPCSTR Name);
777 	ID3D10EffectVariable GetVariableByIndex(UINT Index);
778 	ID3D10EffectVariable GetVariableByName(LPCSTR Name);
779 	ID3D10EffectVariable GetVariableBySemantic(LPCSTR Semantic);
780 	ID3D10EffectTechnique GetTechniqueByIndex(UINT Index);
781 	ID3D10EffectTechnique GetTechniqueByName(LPCSTR Name);
782 	HRESULT Optimize();
783 	BOOL IsOptimized();
784 }
785 
786 extern (C) const GUID IID_ID3D10EffectPool = {0x9537ab04, 0x3250, 0x412e, [0x82, 0x13, 0xfc, 0xd2, 0xf8, 0x67, 0x79, 0x33]};
787 
788 interface ID3D10EffectPool : IUnknown {
789 	extern(Windows) :
790 	ID3D10Effect AsEffect();
791 }
792 
793 HRESULT D3D10CompileEffectFromMemory(void* pData, SIZE_T DataLength, LPCSTR pSrcFileName, D3D10_SHADER_MACRO* pDefines, ID3D10Include pInclude, UINT HLSLFlags, UINT FXFlags, ID3D10Blob* ppCompiledEffect, ID3D10Blob* ppErrors);
794 HRESULT D3D10CreateEffectFromMemory(void* pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device pDevice, ID3D10EffectPool pEffectPool, ID3D10Effect* ppEffect);
795 HRESULT D3D10CreateEffectPoolFromMemory(void* pData, SIZE_T DataLength, UINT FXFlags, ID3D10Device pDevice, ID3D10EffectPool* ppEffectPool);
796 HRESULT D3D10DisassembleEffect(ID3D10Effect pEffect, BOOL EnableColorCode, ID3D10Blob* ppDisassembly);