//CLinearDepthShader - [2020-04-13 11:57:46]
#ifndef _CLINEARDEPTHSHADER_H_
#define _CLINEARDEPTHSHADER_H_

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

/*
001CFE00 CLinearDepthShader::CLinearDepthShader()
001CFE0C CLinearDepthShader::~CLinearDepthShader()
00180884 CLinearDepthShader::SetSource(ELinearDepthShader_Source,int)
00180894 CLinearDepthShader::SetDiffuseMaterial(CFTTTexParam,int)
00187484 CLinearDepthShader::SetTest(ELinearDepthShader_Test)
00187496 CLinearDepthShader::SetThreshold(float)
00189C00 CLinearDepthShader::SetRemappedWorldViewMatrixZ(CFTTVector32x4 const&)
001CFE10 CLinearDepthShader::CreateMat(ELinearDepthShader_Output,ELinearDepthShader_Source,CFTTTexParam)
*/

enum ELinearDepthShader_Source {
  ELinearDepthShader_Source_0,
  ELinearDepthShader_Source_1,
  ELinearDepthShader_Source_2,
  ELinearDepthShader_Source_3,
  ELinearDepthShader_Source_4,
  ELinearDepthShader_Source_5,
};

enum ELinearDepthShader_Test {
  ELinearDepthShader_Test_0,
  ELinearDepthShader_Test_1,
  ELinearDepthShader_Test_2,
  ELinearDepthShader_Test_3,
  ELinearDepthShader_Test_4,
  ELinearDepthShader_Test_5,
};

enum ELinearDepthShader_Output {
  ELinearDepthShader_Output_0,
  ELinearDepthShader_Output_1,
  ELinearDepthShader_Output_2,
  ELinearDepthShader_Output_3,
  ELinearDepthShader_Output_4,
  ELinearDepthShader_Output_5,
};

class CLinearDepthShader : public CFTTUberShader {
public:
  CLinearDepthShader();                                                 //001CFE00
  ~CLinearDepthShader();                                                //001CFE0C
  void SetSource(ELinearDepthShader_Source eSource, int a2);            //00180884
  void SetDiffuseMaterial(CFTTTexParam aTexParam, int a2);              //00180894
  void SetTest(ELinearDepthShader_Test eTest);                          //00187484
  void SetThreshold(float f);                                           //00187496
  void SetRemappedWorldViewMatrixZ(CFTTVector32x4 const& pVector32x4);  //00189C00
  ushort CreateMat(ELinearDepthShader_Output eOutput,
                   ELinearDepthShader_Source eSource,
                   CFTTTexParam aTexParam);  //001CFE10

  static CLinearDepthShader s_tInstance;  //0047B8D4
};

#endif  //_CLINEARDEPTHSHADER_H_