// CBallShader - [2020-04-13 11:57:46]
#ifndef _CBALLSHADER_H_
#define _CBALLSHADER_H_

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

/*
001CF60C CBallShader::CBallShader()
001CF618 CBallShader::~CBallShader()
0017C56C CBallShader::SetShadowMap(EBallShader_ShadowMap)
0017C57E CBallShader::SetShadowMapTex(CFTTTexParam)
0017C5AC CBallShader::SetShadowMapProj01(CFTTMatrix32 const&)
0017C5B8 CBallShader::SetShadowMapProj02(CFTTMatrix32 const&)
0017C5C4 CBallShader::SetViewParams(float const*)
0017C5D0 CBallShader::SetShadowMapSplit(float)
0017C5E2 CBallShader::SetLightDir(CFTTVector32x4 const&)
0017C5EE CBallShader::SetModel(EBallShader_Model)
0017C600 CBallShader::SetSpecularLUT(CFTTTexParam)
0017C614 CBallShader::SetDiffuseEnv(CFTTTexParam)
0017C628 CBallShader::SetSpecularEnv(CFTTTexParam)
0017C63C CBallShader::SetBRDFLUT(CFTTTexParam)
0017C650 CBallShader::SetPBR(CFTTVector32x4 const&)
0017C950 CBallShader::SetDiffuse(CFTTTexParam)
0017C964 CBallShader::SetNormal(CFTTTexParam)
0017C978 CBallShader::SetAmbient(CFTTTexParam)
0017C98C CBallShader::SetFloatingPoint(EBallShader_FloatingPoint)
001CF61C CBallShader::CreateMat()
001E6990 CBallShader::SetCinematic(EBallShader_Cinematic)
001E69A2 CBallShader::SetCinematicLighting(CFTTVector32 const&)
*/

enum EBallShader_ShadowMap {
  EBallShader_ShadowMap_0,
  EBallShader_ShadowMap_1,
  EBallShader_ShadowMap_2,
  EBallShader_ShadowMap_3,
  EBallShader_ShadowMap_4,
};

enum EBallShader_Model {
  EBallShader_Model_0,
  EBallShader_Model_1,
  EBallShader_Model_2,
  EBallShader_Model_3,
  EBallShader_Model_4,
  EBallShader_Model_5,
};

enum EBallShader_FloatingPoint {
  EBallShader_FloatingPoint_0,
  EBallShader_FloatingPoint_1,
  EBallShader_FloatingPoint_2,
  EBallShader_FloatingPoint_3,
  EBallShader_FloatingPoint_4,
  EBallShader_FloatingPoint_5,
};

enum EBallShader_Cinematic {
  EBallShader_Cinematic_0,
  EBallShader_Cinematic_1,
  EBallShader_Cinematic_2,
  EBallShader_Cinematic_3,
  EBallShader_Cinematic_4,
  EBallShader_Cinematic_5,
};

class CBallShader : public CFTTUberShader {
public:
  CBallShader();                                     // 001CF60C
  ~CBallShader();                                    // 001CF618
  void SetShadowMap(EBallShader_ShadowMap);          // 0017C56C
  void SetShadowMapTex(CFTTTexParam);                // 0017C57E
  void SetShadowMapProj01(CFTTMatrix32 const&);      // 0017C5AC
  void SetShadowMapProj02(CFTTMatrix32 const&);      // 0017C5B8
  void SetViewParams(float const*);                  // 0017C5C4
  void SetShadowMapSplit(float);                     // 0017C5D0
  void SetLightDir(CFTTVector32x4 const&);           // 0017C5E2
  void SetModel(EBallShader_Model);                  // 0017C5EE
  void SetSpecularLUT(CFTTTexParam);                 // 0017C600
  void SetDiffuseEnv(CFTTTexParam);                  // 0017C614
  void SetSpecularEnv(CFTTTexParam);                 // 0017C628
  void SetBRDFLUT(CFTTTexParam);                     // 0017C63C
  void SetPBR(CFTTVector32x4 const&);                // 0017C650
  void SetDiffuse(CFTTTexParam);                     // 0017C950
  void SetNormal(CFTTTexParam);                      // 0017C964
  void SetAmbient(CFTTTexParam);                     // 0017C978
  void SetFloatingPoint(EBallShader_FloatingPoint);  // 0017C98C
  ushort CreateMat();                                // 001CF61C
  void SetCinematic(EBallShader_Cinematic);          // 001E6990
  void SetCinematicLighting(CFTTVector32 const&);    // 001E69A2

  static CBallShader s_tInstance;
};

#endif  //_CBALLSHADER_H_