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
00025 public:
00026 enum BUFFERS{BUFFER_MULTIPASS,BUFFER_HUD};
00027
00028 static _variables variables;
00029
00030 Shader_Unreal();
00031 virtual ~Shader_Unreal();
00032 bool compile(const D3D10_SHADER_MACRO *macros, DWORD shaderFlags);
00033 bool compileUnrealShader(const wchar_t* filename,const D3D10_SHADER_MACRO *macros, DWORD shaderFlags,const D3D10_INPUT_ELEMENT_DESC *elementDesc, int numElements);
00034 bool createRenderTargetViews(ID3D10RenderTargetView *backbuffer, const DXGI_SWAP_CHAIN_DESC &swapChainDesc,int multiSampleCount);
00035 void releaseRenderTargetViews();
00036 void Shader_Unreal::setProjection(float aspect, float XoverZ, float zNear, float zFar) const;
00037 void Shader_Unreal::setViewportSize(float x, float y) const;
00038 virtual void Shader_Unreal::setTexture(int pass,ID3D10ShaderResourceView *texture) const;
00039 void Shader_Unreal::clear(Vec4& clearColor) const;
00040 void Shader_Unreal::clearDepth() const;
00041 void switchBuffers(enum BUFFERS buffer);
00042 };