D3D Effects Lite
Lightweight Effects11 replacement that gives direct access to the data stored in D3D11 FX files.
D3D11EffectsLite.h
00001 
00002 //
00003 //  Copyright (C) Tobias Zirr.  All Rights Reserved.
00004 //
00006 
00007 #pragma once
00008 
00009 // #include "D3DCommon.h"
00010 #include "D3D11.h"
00011 
00014 
00015 #ifndef D3DEFFECTSLITE_API
00016 
00017     #define D3DEFFECTSLITE_API
00018 #endif
00019 
00020 #ifndef D3DEFFECTSLITE_INTERFACE
00021     #ifdef _MSC_VER
00022         #define D3DEFFECTSLITE_INTERFACE _declspec(novtable)
00023     #else
00024 
00025         #define D3DEFFECTSLITE_INTERFACE
00026     #endif
00027 #endif
00028 
00029 #ifndef D3DEFFECTSLITE_INTERFACE_BEHAVIOR
00030 
00031     #define D3DEFFECTSLITE_INTERFACE_BEHAVIOR(name) \
00032         protected: \
00033             name& operator =(const name&) { return *this; } \
00034             ~name() { }
00035 #endif
00036 
00037 #ifndef D3DEFFECTSLITE_CONST_PTR_ACCESS
00038 
00039     #define D3DEFFECTSLITE_CONST_PTR_ACCESS(T) T const *
00040 #endif
00041 
00042 #ifndef D3DEFFECTSLITE_STDCALL
00043 
00044     #define D3DEFFECTSLITE_STDCALL _stdcall
00045 #endif
00046 
00048 class D3DEFFECTSLITE_INTERFACE D3DEffectsLiteAllocator
00049 {
00050     D3DEFFECTSLITE_INTERFACE_BEHAVIOR(D3DEffectsLiteAllocator)
00051 
00052 public:
00054     virtual void* D3DEFFECTSLITE_STDCALL Allocate(UINT size) = 0;
00056     virtual void D3DEFFECTSLITE_STDCALL Free(void *data) = 0;
00057 };
00058 
00060 struct D3DEL_INT_ANNOTATION_INFO
00061 {
00062     const char *Name;
00063     UINT ValueCount;
00064     D3DEFFECTSLITE_CONST_PTR_ACCESS(INT) Values;
00065 };
00066 
00068 struct D3DEL_FLOAT_ANNOTATION_INFO
00069 {
00070     const char *Name;
00071     UINT ValueCount;
00072     D3DEFFECTSLITE_CONST_PTR_ACCESS(FLOAT) Values;
00073 };
00074 
00076 struct D3DEL_BOOL_ANNOTATION_INFO
00077 {
00078     const char *Name;
00079     UINT ValueCount;
00080     D3DEFFECTSLITE_CONST_PTR_ACCESS(BOOL) Values;
00081 };
00082 
00084 struct D3DEL_STRING_ANNOTATION_INFO
00085 {
00086     const char *Name;
00087     UINT ValueCount;
00088     UINT ValueStride;
00089     D3DEFFECTSLITE_CONST_PTR_ACCESS(const char*) Values;
00090 };
00091 
00093 struct D3DEL_ANNOTATION_BLOCK_INFO
00094 {
00095     UINT FloatCount;
00096     UINT IntCount;
00097     UINT BoolCount;
00098     UINT StringCount;
00099 
00100     #define D3DEL_ANNOTATION_BLOCK_INFO_COUNT_BLOCK offsetof(D3DEL_ANNOTATION_BLOCK_INFO, Floats)
00101 
00102     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_FLOAT_ANNOTATION_INFO) Floats;
00103     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_INT_ANNOTATION_INFO) Ints;
00104     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BOOL_ANNOTATION_INFO) Bools;
00105     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STRING_ANNOTATION_INFO) Strings;
00106 };
00107 
00109 static const D3D_SHADER_VARIABLE_TYPE D3D_SVT_STRUCT = static_cast<D3D_SHADER_VARIABLE_TYPE>(D3D_SVT_VOID);
00110 
00112 struct D3DEL_VARIABLE_INFO
00113 {
00114     const char *Name;
00115     const char *Semantic;   
00116     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_ANNOTATION_BLOCK_INFO) Annotations; 
00117     D3D_SHADER_VARIABLE_TYPE Type;
00118     D3DEFFECTSLITE_CONST_PTR_ACCESS(void) Info;
00119 };
00120 
00121 static const UINT D3DEL_BIND_POINT_AMBIGUOUS = UINT(-1);
00122 
00124 struct D3DEL_RESOURCE_INFO
00125 {
00126     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00127     UINT BindPoint;         
00128     UINT SuccessorCount;    
00129 };
00130 
00132 struct D3DEL_CONSTANT_INFO
00133 {
00134     UINT Offset;
00135     UINT Stride;
00136     UINT Elements;
00137     USHORT Rows;
00138     USHORT Columns;
00139 };
00140 
00142 struct D3DEL_INT_VARIABLE_INFO
00143 {
00144     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00145     D3DEL_CONSTANT_INFO Constant;
00146     UINT ValueCount;
00147     D3DEFFECTSLITE_CONST_PTR_ACCESS(INT) Values;
00148 };
00149 
00151 struct D3DEL_FLOAT_VARIABLE_INFO
00152 {
00153     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00154     D3DEL_CONSTANT_INFO Constant;
00155     UINT ValueCount;
00156     D3DEFFECTSLITE_CONST_PTR_ACCESS(FLOAT) Values;
00157 };
00158 
00160 struct D3DEL_BOOL_VARIABLE_INFO
00161 {
00162     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00163     D3DEL_CONSTANT_INFO Constant;
00164     UINT ValueCount;
00165     D3DEFFECTSLITE_CONST_PTR_ACCESS(BOOL) Values;
00166 };
00167 
00169 struct D3DEL_STRUCT_VARIABLE_INFO
00170 {
00171     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00172     D3DEL_CONSTANT_INFO Constant;
00173     UINT ByteCount;
00174     D3DEFFECTSLITE_CONST_PTR_ACCESS(void) Bytes;
00175 };
00176 
00178 struct D3DEL_STRING_VARIABLE_INFO
00179 {
00180     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00181     UINT ValueCount;
00182     D3DEFFECTSLITE_CONST_PTR_ACCESS(const char*) Values;
00183 };
00184 
00186 struct D3DEL_CONSTANT_BUFFER_INFO
00187 {
00188     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00189     UINT BindPoint;     
00190     UINT Size;
00191 
00192     UINT FloatCount;
00193     UINT IntCount;
00194     UINT BoolCount;
00195     UINT StructCount;
00196 
00197     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_FLOAT_VARIABLE_INFO) Floats;
00198     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_INT_VARIABLE_INFO) Ints;
00199     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BOOL_VARIABLE_INFO) Bools;
00200     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STRUCT_VARIABLE_INFO) Structs;
00201 };
00202 
00204 struct D3DEL11_RASTERIZER_STATE_INFO
00205 {
00206     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00207     D3D11_RASTERIZER_DESC Desc;     // TODO: DX11.1?
00208     UINT SuccessorCount;            
00209 };
00210 typedef D3DEL11_RASTERIZER_STATE_INFO D3DEL_RASTERIZER_STATE_INFO;
00211 
00213 struct D3DEL11_DEPTH_STENCIL_STATE_INFO
00214 {
00215     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00216     D3D11_DEPTH_STENCIL_DESC Desc;  // TODO: DX11.1?
00217     UINT SuccessorCount;            
00218 };
00219 typedef D3DEL11_DEPTH_STENCIL_STATE_INFO D3DEL_DEPTH_STENCIL_STATE_INFO;
00220 
00222 struct D3DEL11_BLEND_STATE_INFO
00223 {
00224     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00225     D3D11_BLEND_DESC Desc;  // TODO: DX11.1?
00226     UINT SuccessorCount;    
00227 };
00228 typedef D3DEL11_BLEND_STATE_INFO D3DEL_BLEND_STATE_INFO;
00229 
00231 struct D3DEL11_SAMPLER_STATE_INFO
00232 {
00233     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;
00234     D3D11_SAMPLER_DESC Desc;        // DX11.1?
00235     UINT BindPoint;                 
00236     UINT SuccessorCount;            
00237 };
00238 typedef D3DEL11_SAMPLER_STATE_INFO D3DEL_SAMPLER_STATE_INFO;
00239 
00241 struct D3DEL_CONSTANT_BUFFER_BIND_INFO
00242 {
00243     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_CONSTANT_BUFFER_INFO) Resource;
00244     UINT Register;
00245 };
00246 
00248 struct D3DEL_RESOURCE_BIND_INFO
00249 {
00250     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) Resource;
00251     UINT Register;
00252 };
00253 
00255 struct D3DEL_SAMPLER_STATE_BIND_INFO
00256 {
00257     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SAMPLER_STATE_INFO) Sampler;
00258     UINT Register;
00259 };
00260 
00262 struct D3DEL_SHADER_BINDING_INFO
00263 {
00264     UINT SamplerCount;
00265 
00266     UINT ConstantBufferCount;
00267     UINT TextureBufferCount;
00268     UINT ResourceCount;
00269     UINT UAVCount;
00270 
00271     #define D3DEL_SHADER_BINDING_INFO_COUNT_BLOCK offsetof(D3DEL_SHADER_BINDING_INFO, Samplers)
00272 
00273     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SAMPLER_STATE_BIND_INFO) Samplers;
00274 
00275     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_CONSTANT_BUFFER_BIND_INFO) ConstantBuffers;
00276     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_CONSTANT_BUFFER_BIND_INFO) TextureBuffers;
00277     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_BIND_INFO) Resources;
00278     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_BIND_INFO) UAVs;
00279 };
00280 
00281 struct D3DEL_SHADER_INFO;
00282 
00284 struct D3DEL11_STREAM_OUT_INFO
00285 {
00286     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) Shader;
00287     UINT ElementCount;
00288     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3D11_SO_DECLARATION_ENTRY) Elements;
00289     UINT BufferCount;
00290     D3DEFFECTSLITE_CONST_PTR_ACCESS(UINT) BufferStrides;
00291     UINT RasterizedStream;
00292 };
00293 typedef D3DEL11_STREAM_OUT_INFO D3DEL_STREAM_OUT_INFO;
00294 
00296 struct D3DEL_SHADER_INFO
00297 {
00298     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variable;          
00299     UINT ByteCount;
00300     const void *ByteCode;
00301     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_BINDING_INFO) Bindings;
00302     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STREAM_OUT_INFO) StreamOut;       
00303     UINT SuccessorCount;                                                    
00304 };
00305 
00307 struct D3DEL_PASS_SHADER_BINDING_INFO
00308 {
00309     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) VertexShader;    
00310     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) PixelShader;     
00311     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) ComputeShader;   
00312     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) GeometryShader;  
00313     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) HullShader;      
00314     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) DomainShader;    
00315 };
00316 
00318 struct D3DEL_RASTERIZER_STATE_BIND_INFO
00319 {
00320     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RASTERIZER_STATE_INFO) Block;     
00321 };
00322 
00324 struct D3DEL_DEPTH_STENCIL_STATE_BIND_INFO
00325 {
00326     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_DEPTH_STENCIL_STATE_INFO) Block;  
00327     UINT StencilRef;
00328 };
00329 
00331 struct D3DEL_BLEND_STATE_BIND_INFO
00332 {
00333     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BLEND_STATE_INFO) Block;  
00334     FLOAT BlendFactor[4];
00335     UINT SampleMask;
00336 };
00337 
00339 struct D3DEL_RENDER_TARGET_BIND_INFO
00340 {
00341     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) RenderTargets[D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT]; 
00342     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) DepthStencilTarget;                                    
00343 };
00344 
00346 struct D3DEL_PASS_STATE_BINDING_INFO
00347 {
00348     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RASTERIZER_STATE_BIND_INFO) RasterizerState;      
00349     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_DEPTH_STENCIL_STATE_BIND_INFO) DepthStencilState; 
00350     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BLEND_STATE_BIND_INFO) BlendState;                
00351     
00352     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RENDER_TARGET_BIND_INFO) Targets;                 
00353 };
00354 
00356 struct D3DEL_PASS_INFO
00357 {
00358     const char *Name;
00359     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_ANNOTATION_BLOCK_INFO) Annotations;   
00360 
00361     D3DEL_PASS_STATE_BINDING_INFO State;
00362     D3DEL_PASS_SHADER_BINDING_INFO Shaders;
00363 };
00364 
00366 struct D3DEL_TECHNIQUE_INFO
00367 {
00368     const char *Name;
00369     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_ANNOTATION_BLOCK_INFO) Annotations;   
00370 
00371     UINT PassCount;
00372     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_PASS_INFO) Passes;
00373 };
00374 
00376 struct D3DEL_GROUP_INFO
00377 {
00378     const char *Name;
00379     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_ANNOTATION_BLOCK_INFO) Annotations;   
00380 
00381     UINT TechniqueCount;
00382     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_TECHNIQUE_INFO) Techniques;
00383 };
00384 
00385 // TODO: State Masks?
00386 
00388 struct D3DEL_EFFECT_CONSTANT_INFO
00389 {
00390     UINT BoolCount;
00391     UINT IntCount;
00392     UINT FloatCount;
00393     UINT StructCount;
00394     UINT StringCount;
00395 
00396     #define D3DEL_EFFECT_CONSTANT_INFO_COUNT_BLOCK offsetof(D3DEL_EFFECT_CONSTANT_INFO, Bools)
00397     
00398     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BOOL_VARIABLE_INFO) Bools;
00399     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_INT_VARIABLE_INFO) Ints;
00400     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_FLOAT_VARIABLE_INFO) Floats;
00401     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STRUCT_VARIABLE_INFO) Structs;
00402     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STRING_VARIABLE_INFO) Strings;
00403 };
00404 
00406 struct D3DEL_EFFECT_RESOURCE_INFO
00407 {
00408     UINT ConstantBufferCount;
00409     UINT TextureBufferCount;
00410     UINT ResourceCount;
00411     UINT UAVCount;
00412     UINT RenderTargetCount;
00413     UINT DepthStencilTargetCount;
00414 
00415     #define D3DEL_EFFECT_RESOURCE_INFO_COUNT_BLOCK offsetof(D3DEL_EFFECT_RESOURCE_INFO, ConstantBuffers)
00416 
00417     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_CONSTANT_BUFFER_INFO) ConstantBuffers;
00418     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_CONSTANT_BUFFER_INFO) TextureBuffers;
00419     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) Resources;
00420     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) UAVs;
00421     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) RenderTargets;
00422     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RESOURCE_INFO) DepthStencilTargets;
00423 };
00424 
00426 struct D3DEL_EFFECT_STATE_INFO
00427 {
00428     UINT RasterizerStateCount;
00429     UINT DepthStencilStateCount;
00430     UINT BlendStateCount;
00431     UINT SamplerStateCount;
00432 
00433     #define D3DEL_EFFECT_STATE_INFO_COUNT_BLOCK offsetof(D3DEL_EFFECT_STATE_INFO, RasterizerState)
00434 
00435     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_RASTERIZER_STATE_INFO) RasterizerState;
00436     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_DEPTH_STENCIL_STATE_INFO) DepthStencilState;
00437     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_BLEND_STATE_INFO) BlendState;
00438     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SAMPLER_STATE_INFO) SamplerState;
00439 };
00440 
00442 struct D3DEL_EFFECT_SHADER_INFO
00443 {
00444     UINT VertexShaderCount;
00445     UINT PixelShaderCount;
00446     UINT ComputeShaderCount;
00447     UINT GeometryShaderCount;
00448     UINT HullShaderCount;
00449     UINT DomainShaderCount;
00450     UINT StreamOutCount;
00451 
00452     #define D3DEL_EFFECT_SHADER_INFO_COUNT_BLOCK offsetof(D3DEL_EFFECT_SHADER_INFO, VertexShaders)
00453 
00454     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) VertexShaders;
00455     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) PixelShaders;
00456     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) ComputeShaders;
00457     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) GeometryShaders;
00458     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) HullShaders;
00459     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_SHADER_INFO) DomainShaders;
00460     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_STREAM_OUT_INFO) StreamOut;
00461 };
00462 
00464 struct D3DEL_EFFECT_INFO
00465 {
00466     UINT VariableCount;
00467     
00468     UINT GroupCount;
00469     UINT TechniqueCount;
00470     UINT PassCount;
00471     
00472     #define D3DEL_EFFECT_INFO_COUNT_BLOCK offsetof(D3DEL_EFFECT_INFO, Variables)
00473 
00474     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_VARIABLE_INFO) Variables;
00475 
00476     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_GROUP_INFO) Groups;
00477     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_TECHNIQUE_INFO) Techniques;
00478     D3DEFFECTSLITE_CONST_PTR_ACCESS(D3DEL_PASS_INFO) Passes;
00479 
00480     D3DEL_EFFECT_CONSTANT_INFO Constants;
00481     D3DEL_EFFECT_RESOURCE_INFO Resources;
00482     D3DEL_EFFECT_STATE_INFO State;
00483     D3DEL_EFFECT_SHADER_INFO Shaders;
00484 };
00485 
00487 class D3DEFFECTSLITE_INTERFACE D3DEffectsLiteReflection : public IUnknown
00488 {
00489     D3DEFFECTSLITE_INTERFACE_BEHAVIOR(D3DEffectsLiteReflection)
00490 
00491 public:
00493     virtual const D3DEL_EFFECT_INFO* D3DEFFECTSLITE_STDCALL GetInfo() const = 0;
00494 
00496     virtual const D3DEL_VARIABLE_INFO* D3DEFFECTSLITE_STDCALL GetVariableByName(const char *name) const = 0;
00498     virtual const D3DEL_VARIABLE_INFO* D3DEFFECTSLITE_STDCALL GetVariableBySemantic(const char *semantic) const = 0;
00499 
00501     virtual const D3DEL_GROUP_INFO* D3DEFFECTSLITE_STDCALL GetGroup(const char *name) const = 0;
00503     virtual const D3DEL_TECHNIQUE_INFO* D3DEFFECTSLITE_STDCALL GetTechnique(const char *name) const = 0;
00505     virtual const D3DEL_TECHNIQUE_INFO* D3DEFFECTSLITE_STDCALL GetTechnique(const char *name, const D3DEL_GROUP_INFO *group) const = 0;
00507     virtual const D3DEL_PASS_INFO* D3DEFFECTSLITE_STDCALL GetPass(const char *name, const D3DEL_TECHNIQUE_INFO *technique) const = 0;
00508 };
00509 
00511 D3DEFFECTSLITE_API D3DEffectsLiteReflection* D3DEFFECTSLITE_STDCALL D3DELReflectEffect(const void *bytes, UINT byteCount, D3DEffectsLiteAllocator *pScratchAllocator);
00512 
00514 D3DEFFECTSLITE_API D3DEffectsLiteAllocator* D3DEFFECTSLITE_STDCALL D3DELGetDefaultAllocator();
00516 D3DEFFECTSLITE_API void D3DEFFECTSLITE_STDCALL D3DELSetGlobalAllocator(D3DEffectsLiteAllocator *allocator);
00518 D3DEFFECTSLITE_API D3DEffectsLiteAllocator* D3DEFFECTSLITE_STDCALL D3DELGetGlobalAllocator();
00519 
00520 #ifndef D3DEFFECTSLITE_NO_CPP
00521 
00522 #ifdef DOXYGEN_READ_THIS
00523 
00524     #define D3DEFFECTSLITE_NO_CPP
00525 #endif
00526 
00528 namespace D3DEffectsLite
00529 {
00530     typedef D3DEffectsLiteAllocator Allocator;
00531 
00532     typedef D3DEL_EFFECT_CONSTANT_INFO EffectConstantInfo;
00533     typedef D3DEL_EFFECT_RESOURCE_INFO EffectResourceInfo;
00534     typedef D3DEL_EFFECT_STATE_INFO EffectStateInfo;
00535     typedef D3DEL_EFFECT_SHADER_INFO EffectShaderInfo;
00536     typedef D3DEL_EFFECT_INFO EffectInfo;
00537 
00538     typedef D3DEL_RASTERIZER_STATE_BIND_INFO RasterizerStateBindInfo;
00539     typedef D3DEL_DEPTH_STENCIL_STATE_BIND_INFO DepthStencilStateBindInfo;
00540     typedef D3DEL_BLEND_STATE_BIND_INFO BlendStateBindInfo;
00541     typedef D3DEL_RENDER_TARGET_BIND_INFO RenderTargetBindInfo;
00542     typedef D3DEL_PASS_STATE_BINDING_INFO PassStateBindingInfo;
00543 
00544     typedef D3DEL_SAMPLER_STATE_BIND_INFO SamplerStateBindInfo;
00545     typedef D3DEL_CONSTANT_BUFFER_BIND_INFO ConstantBufferBindInfo;
00546     typedef D3DEL_RESOURCE_BIND_INFO ResourceBindInfo;
00547     typedef D3DEL_PASS_SHADER_BINDING_INFO PassShaderBindingInfo;
00548 
00549     typedef D3DEL_GROUP_INFO GroupInfo;
00550     typedef D3DEL_TECHNIQUE_INFO TechniqueInfo;
00551     typedef D3DEL_PASS_INFO PassInfo;
00552 
00553     typedef D3DEL_INT_ANNOTATION_INFO IntAnnotationInfo;
00554     typedef D3DEL_FLOAT_ANNOTATION_INFO FloatAnnotationInfo;
00555     typedef D3DEL_BOOL_ANNOTATION_INFO BoolAnnotationInfo;
00556     typedef D3DEL_STRING_ANNOTATION_INFO StringAnnotationInfo;
00557 
00558     typedef D3DEL_ANNOTATION_BLOCK_INFO AnnotationBlockInfo;
00559     typedef D3DEL_VARIABLE_INFO VariableInfo;
00560 
00561     static const UINT BindPointAmbiguous = D3DEL_BIND_POINT_AMBIGUOUS;
00562 
00563     typedef D3DEL_RESOURCE_INFO ResourceInfo;
00564     
00565     typedef D3DEL_CONSTANT_INFO ConstantInfo;
00566     typedef D3DEL_INT_VARIABLE_INFO IntVariableInfo;
00567     typedef D3DEL_FLOAT_VARIABLE_INFO FloatVariableInfo;
00568     typedef D3DEL_BOOL_VARIABLE_INFO BoolVariableInfo;
00569     typedef D3DEL_STRUCT_VARIABLE_INFO StructVariableInfo;
00570     typedef D3DEL_STRING_VARIABLE_INFO StringVariableInfo;
00571     typedef D3DEL_CONSTANT_BUFFER_INFO ConstantBufferInfo;
00572 
00573     typedef D3DEL_RASTERIZER_STATE_INFO RasterizerStateInfo;
00574     typedef D3DEL_DEPTH_STENCIL_STATE_INFO DepthStencilStateInfo;
00575     typedef D3DEL_BLEND_STATE_INFO BlendStateInfo;
00576     typedef D3DEL_SAMPLER_STATE_INFO SamplerStateInfo;
00577     
00578     typedef D3DEL_SHADER_BINDING_INFO ShaderBindingInfo;
00579     typedef D3DEL_SHADER_INFO ShaderInfo;
00580     typedef D3DEL_STREAM_OUT_INFO StreamOutInfo;
00581 
00582     typedef D3DEffectsLiteReflection Reflection;
00583 
00584     D3DEFFECTSLITE_API Reflection* D3DEFFECTSLITE_STDCALL ReflectEffect(const void *bytes, UINT byteCount, Allocator *pScratchAllocator = nullptr);
00585 
00586     D3DEFFECTSLITE_API Allocator* D3DEFFECTSLITE_STDCALL GetDefaultAllocator();
00587     D3DEFFECTSLITE_API void D3DEFFECTSLITE_STDCALL SetGlobalAllocator(Allocator*);
00588     D3DEFFECTSLITE_API Allocator* D3DEFFECTSLITE_STDCALL GetGlobalAllocator();
00589 
00590 } // namespace
00591 
00592 #endif
00593