OpenBarnyard
 
Loading...
Searching...
No Matches
ASkinShader_DX8.h
Go to the documentation of this file.
1#pragma once
3
4#include <Toshi/TNodeList.h>
6
8{
9public:
11
12 struct AUnknown : Toshi::TNodeList<AUnknown>::TNode
13 {
14 };
15
16 static constexpr TUINT NUM_ORDER_TABLES = 3;
17
18public:
21
22 //-----------------------------------------------------------------------------
23 // Toshi::TShader
24 //-----------------------------------------------------------------------------
25 virtual void Flush() override;
26 virtual void StartFlush() override;
27 virtual void EndFlush() override;
28 virtual TBOOL Create() override;
29 virtual TBOOL Validate() override;
30 virtual void Invalidate() override;
31 virtual TBOOL TryInvalidate() override;
32 virtual TBOOL TryValidate() override;
33 virtual void Render( Toshi::TRenderPacket* a_pRenderPacket ) override;
34
35 //-----------------------------------------------------------------------------
36 // ASkinShader
37 //-----------------------------------------------------------------------------
38 virtual void EnableRenderEnvMap( TBOOL a_bEnable ) override;
39 virtual TBOOL IsHighEndSkinning() override;
40 virtual void EnableHighEndSkinning( TBOOL a_bEnable ) override;
41 virtual TBOOL IsCapableHighEndSkinning() override;
42 virtual TBOOL IsLightScattering() override;
43 virtual void SetLightScattering( TBOOL a_bEnable ) override;
44 virtual TBOOL IsAlphaBlendMaterial() override;
45 virtual void SetAlphaBlendMaterial( TBOOL a_bIsAlphaBlendMaterial ) override;
46 virtual ASkinMaterial* CreateMaterial( const TCHAR* a_szName ) override;
47 virtual ASkinMesh* CreateMesh( const TCHAR* a_szName ) override;
48 virtual TINT AddLight( const Toshi::TVector3& a_rPosition, TFLOAT a_fIntensity ) override;
49 virtual void SetLight( TINT a_iIndex, const Toshi::TVector3& a_rPosition, TFLOAT a_fIntensity ) override;
50 virtual void RemoveLight( TINT a_iIndex ) override;
51
52 //-----------------------------------------------------------------------------
53 // Own methods
54 //-----------------------------------------------------------------------------
56 virtual void SetSomeColour( TUINT a_uiR, TUINT a_uiG, TUINT a_uiB, TUINT a_uiA );
57 virtual TINT SetUnknown1( TINT a_Unknown, TUINT8 a_fAlpha );
58 virtual void SetUnknown2( TINT a_Unknown );
59
60 void SetAlphaRef( TINT a_iAlphaRef );
61
62 Toshi::TOrderTable* GetOrderTable( TUINT a_uiIndex )
63 {
64 TASSERT( a_uiIndex < NUM_ORDER_TABLES );
65 return &m_aOrderTables[ a_uiIndex ];
66 }
67
68private:
69 void RenderLowEnd( Toshi::TRenderPacket* a_pRenderPacket );
70 void SetupLowEndMode();
71 void ApplyGPUSpecificPatches();
72 void CheckCPUFeature1();
73 void CheckCPUFeature2();
74
75public:
76 inline static TUINT sm_eRenderStateFlags = 27;
77 inline static Toshi::TMatrix44 sm_oWorldViewMatrix;
78 inline static Toshi::TMatrix44 sm_oViewModelMatrix;
79
80private:
81 // ...
82 Toshi::TNodeList<AUnknown> m_SomeList;
83 DWORD m_hUnknownPixelShader;
84 DWORD m_hVertexShader;
85 DWORD m_hVertexShaderHD;
86 DWORD m_hPixelShader;
87 TINT m_iAlphaRef;
88 TBOOL m_bRenderEnvMap;
89 Toshi::TOrderTable m_aOrderTables[ NUM_ORDER_TABLES ];
90 TBOOL m_bHighEndSkinning;
91 TBOOL m_bLightScattering;
92 TBOOL m_bIsAlphaBlendMaterial;
93 TFLOAT m_fAMDPatch1;
94 TFLOAT m_fAMDPatch2;
95 TBOOL m_bCPUSupportsFeature1;
96 TBOOL m_bCPUSupportsFeature2;
97 TBOOL m_bUnkFlag;
98};
#define TASSERT(X,...)
Definition Defines.h:138
unsigned int TUINT
Definition Typedefs.h:8
char TCHAR
Definition Typedefs.h:20
uint8_t TUINT8
Definition Typedefs.h:17
float TFLOAT
Definition Typedefs.h:4
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
virtual void StartFlush() override
Toshi::TOrderTable * GetOrderTable(TUINT a_uiIndex)
virtual void EnableHighEndSkinning(TBOOL a_bEnable) override
virtual void RemoveLight(TINT a_iIndex) override
virtual TBOOL TryValidate() override
virtual TBOOL IsAlphaBlendMaterial() override
static constexpr TUINT NUM_ORDER_TABLES
virtual TBOOL IsCapableHighEndSkinning() override
static Toshi::TMatrix44 sm_oViewModelMatrix
virtual ASkinMaterial * CreateMaterial(const TCHAR *a_szName) override
virtual TBOOL Validate() override
virtual TBOOL IsHighEndSkinning() override
virtual void Render(Toshi::TRenderPacket *a_pRenderPacket) override
TDECLARE_CLASS(ASkinShaderHAL, ASkinShader)
static Toshi::TMatrix44 sm_oWorldViewMatrix
virtual TBOOL IsLightScattering() override
virtual TINT AddLight(const Toshi::TVector3 &a_rPosition, TFLOAT a_fIntensity) override
virtual void SetUnknown2(TINT a_Unknown)
virtual TBOOL Create() override
virtual void SetLight(TINT a_iIndex, const Toshi::TVector3 &a_rPosition, TFLOAT a_fIntensity) override
virtual ASkinMesh * CreateMesh(const TCHAR *a_szName) override
virtual void SetAlphaBlendMaterial(TBOOL a_bIsAlphaBlendMaterial) override
static TUINT sm_eRenderStateFlags
virtual TBOOL IsEnableRenderEnvMap()
virtual void Flush() override
virtual TINT SetUnknown1(TINT a_Unknown, TUINT8 a_fAlpha)
virtual void EndFlush() override
void SetAlphaRef(TINT a_iAlphaRef)
virtual void SetLightScattering(TBOOL a_bEnable) override
virtual void Invalidate() override
virtual void EnableRenderEnvMap(TBOOL a_bEnable) override
virtual TBOOL TryInvalidate() override
virtual void SetSomeColour(TUINT a_uiR, TUINT a_uiG, TUINT a_uiB, TUINT a_uiA)