00001 #pragma once 00002 00003 #include "Shader.h" 00004 #include "dynamicgeometrybuffer.h" 00005 00006 class Shader_Unreal : public Shader 00007 { 00008 private: 00009 static DynamicGeometryBuffer *dynamicGeometryBuffer; 00010 static ID3D10EffectPool *pool; 00011 static ID3D10RenderTargetView *unrealRTV; 00012 static ID3D10DepthStencilView *unrealDSV; 00013 static ID3D10ShaderResourceView* unrealSRV; 00014 static ID3D10DepthStencilView *noMSAADSV; 00016 struct _variables 00017 { 00018 ID3D10EffectMatrixVariable* projection; 00019 ID3D10EffectShaderResourceVariable* diffuseTexture; 00020 ID3D10EffectScalarVariable* viewportHeight; 00021 ID3D10EffectScalarVariable* viewportWidth; 00022 }; 00023 00024 public: 00025 enum BUFFERS{BUFFER_MULTIPASS,BUFFER_HUD}; 00026 00027 static _variables variables; 00028 00029 Shader_Unreal(ID3D10Device *device); 00030 virtual ~Shader_Unreal(); 00031 bool compile(const D3D10_SHADER_MACRO *macros, DWORD shaderFlags); 00032 bool compileUnrealShader(const wchar_t* filename,const D3D10_SHADER_MACRO *macros, DWORD shaderFlags,const D3D10_INPUT_ELEMENT_DESC *elementDesc, int numElements); 00033 bool createRenderTargetViews(ID3D10RenderTargetView *backbuffer, const DXGI_SWAP_CHAIN_DESC &swapChainDesc,int multiSampleCount); 00034 void releaseRenderTargetViews(); 00035 void Shader_Unreal::setProjection(float aspect, float XoverZ, float zNear) const; 00036 void Shader_Unreal::setViewportSize(float x, float y) const; 00037 virtual void Shader_Unreal::setTexture(int pass,ID3D10ShaderResourceView *texture) const; 00038 void Shader_Unreal::clear(Vec4& clearColor) const; 00039 void Shader_Unreal::clearDepth() const; 00040 void switchBuffers(enum BUFFERS buffer); 00041 };