00001 #pragma once 00002 00003 #include "Shader.h" 00004 #include "geometrybuffer.h" 00005 #include "vertexformats.h" 00006 00007 class Shader_Postprocess : public Shader 00008 { 00009 private: 00010 static GeometryBuffer *quadGeometryBuffer; 00011 static ID3D10InputLayout *quadInputLayout; 00012 static ID3D10EffectPool *pool; 00013 00014 struct _variables 00015 { 00016 ID3D10EffectShaderResourceVariable* inputTexture; 00017 ID3D10EffectVectorVariable* viewPort; 00018 ID3D10EffectVectorVariable* inputTextureOffset; 00019 ID3D10EffectScalarVariable* elapsedTime; 00020 }; 00021 00022 protected: 00023 void setViewPort(int x, int y) const; 00024 00025 00026 public: 00027 static _variables variables; 00028 00029 Shader_Postprocess(ID3D10Device *device); 00030 ~Shader_Postprocess(); 00031 bool compile(const D3D10_SHADER_MACRO *macros, DWORD shaderFlags); 00032 bool compilePostProcessingShader(const wchar_t* filename, const D3D10_SHADER_MACRO *macros, DWORD shaderFlags); 00033 virtual void setInputTexture(ID3D10ShaderResourceView *texture); 00034 void setElapsedTime(float t); 00035 void setInputTextureOffset(int left, int top) const; 00036 };