#include "Effect.h"

class PostProcessing :public Effect
{
	private:
	ID3D10Effect*						effect;
	ID3D10EffectTechnique*				technique;
	ID3D10EffectTechnique*				gaussTechnique;
	ID3D10EffectShaderResourceVariable*	diffuseTexture;
	ID3D10EffectShaderResourceVariable*	depthTexture;
	ID3D10EffectShaderResourceVariable*	blurredTexture;
	ID3D10EffectVectorVariable*			depthInfo;
	ID3D10EffectVariable*				gaussOffsetsVariable;
	ID3D10EffectVariable*				gaussWeightsVariable;

	public:
	HRESULT init();
	void setDiffuseTexture(ID3D10ShaderResourceView* textureResrc);
	void setDepthTexture(ID3D10ShaderResourceView* textureResrc);
	void setBlurredTexture(ID3D10ShaderResourceView* textureResrc);
	void setModelMatrix(D3DXMATRIX* modelMatrix);
	void setViewMatrix(D3DXMATRIX* viewMatrix);
	void setProjectionMatrix(D3DXMATRIX* projMatrix);
	void setInputLayout();
	void setDepthInfo(D3DXVECTOR4* depthInf);
	void setGaussOffsets(D3DXVECTOR4* gaussOffsets);
	void setGaussWeights(D3DXVECTOR2* gaussWeights);
	ID3D10Effect* getEffectVariable();
	ID3D10EffectTechnique* getTechniqueVariable();
	ID3D10EffectTechnique* getGaussTechniqueVariable();
	~PostProcessing();
};