D3D Effects Lite
Lightweight Effects11 replacement that gives direct access to the data stored in D3D11 FX files.
|
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