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 };