//CGaussianNewShader - [2020-04-13 11:57:46]
#ifndef _CGAUSSIANNEWSHADER_H_
#define _CGAUSSIANNEWSHADER_H_

#include "common.h"
#include "CFTTUberShader.h"

/*

001CFA68 CGaussianNewShader::CGaussianNewShader()
001CFA74 CGaussianNewShader::~CGaussianNewShader()
0018A180 CGaussianNewShader::SetTaps(EGaussianNewShader_Taps)
0018A192 CGaussianNewShader::SetMulti(EGaussianNewShader_Multi)
0018A1A4 CGaussianNewShader::SetUV0(CFTTVector32x4 const&)
0018A1B0 CGaussianNewShader::SetUV1(CFTTVector32x4 const&)
0018A1BC CGaussianNewShader::SetUV2(CFTTVector32x4 const&)
0018A1C8 CGaussianNewShader::SetUV3(CFTTVector32x4 const&)
0018A1D4 CGaussianNewShader::SetWeight0(CFTTVector32x4 const&)
0018A1E0 CGaussianNewShader::SetWeight1(CFTTVector32x4 const&)
0019F478 CGaussianNewShader::SetColourMultiplier(CFTTVector32x4 const&)
001CFA78 CGaussianNewShader::CreateMat(EGaussianNewShader_Channel,EGaussianNewShader_Blend)

*/

enum EGaussianNewShader_Taps {
  EGaussianNewShader_Taps_0,
  EGaussianNewShader_Taps_1,
  EGaussianNewShader_Taps_2,
  EGaussianNewShader_Taps_3,
  EGaussianNewShader_Taps_4,
  EGaussianNewShader_Taps_5,
};

enum EGaussianNewShader_Multi {
  EGaussianNewShader_Multi_0,
  EGaussianNewShader_Multi_1,
  EGaussianNewShader_Multi_2,
  EGaussianNewShader_Multi_3,
  EGaussianNewShader_Multi_4,
  EGaussianNewShader_Multi_5,
};

enum EGaussianNewShader_Channel {
  EGaussianNewShader_Channel_0,
  EGaussianNewShader_Channel_1,
  EGaussianNewShader_Channel_2,
  EGaussianNewShader_Channel_3,
  EGaussianNewShader_Channel_4,
  EGaussianNewShader_Channel_5,
};

enum EGaussianNewShader_Blend {
  EGaussianNewShader_Blend_0,
  EGaussianNewShader_Blend_1,
  EGaussianNewShader_Blend_2,
  EGaussianNewShader_Blend_3,
  EGaussianNewShader_Blend_4,
  EGaussianNewShader_Blend_5,
};

class CGaussianNewShader : public CFTTUberShader {
public:
  CGaussianNewShader();                                         //001CFA68
  ~CGaussianNewShader();                                        //001CFA74
  void SetTaps(EGaussianNewShader_Taps eTaps);                  //0018A180
  void SetMulti(EGaussianNewShader_Multi eMulti);               //0018A192
  void SetUV0(CFTTVector32x4 const& pVector32x4);               //0018A1A4
  void SetUV1(CFTTVector32x4 const& pVector32x4);               //0018A1B0
  void SetUV2(CFTTVector32x4 const& pVector32x4);               //0018A1BC
  void SetUV3(CFTTVector32x4 const& pVector32x4);               //0018A1C8
  void SetWeight0(CFTTVector32x4 const& pVector32x4);           //0018A1D4
  void SetWeight1(CFTTVector32x4 const& pVector32x4);           //0018A1E0
  void SetColourMultiplier(CFTTVector32x4 const& pVector32x4);  //0019F478
  ushort CreateMat(EGaussianNewShader_Channel eChannel,
                   EGaussianNewShader_Blend eBlend);  //001CFA78

  static CGaussianNewShader s_tInstance;
};

#endif  //_CGAUSSIANNEWSHADER_H_