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