OpenBarnyard
 
Loading...
Searching...
No Matches
AWorldShader_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 = 9;
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 // AWorldShader
37 //-----------------------------------------------------------------------------
38 virtual void EnableRenderEnvMap( TBOOL a_bEnable ) override;
39
40 //-----------------------------------------------------------------------------
41 // Own methods
42 //-----------------------------------------------------------------------------
43
44 // Returns TTRUE if alpha blend material is enabled
45 virtual TBOOL IsAlphaBlendMaterial() override;
46
47 // Enabled alpha blend material
48 virtual void SetAlphaBlendMaterial( TBOOL a_bIsAlphaBlendMaterial ) override;
49
50 // Creates AWorldMaterial and returns it
51 virtual AWorldMaterial* CreateMaterial( const TCHAR* a_szName ) override;
52
53 // Creates AWorldMesh and returns it
54 virtual AWorldMesh* CreateMesh( const TCHAR* a_szName ) override;
55
56 // Returns TTRUE if shaders are supported
57 virtual TBOOL IsHighEndMode();
58
59 // Enables high end mode (compiled shader) if they are supported by hardware
60 virtual void SetHighEndMode( TBOOL a_bEnable );
61
62 // Returns TTRUE if shaders are supported by hardware
63 virtual TBOOL IsCapableShaders();
64
65 // Returns TTRUE if rendering of env map is enabled
67
68 // Probably used in debug mode but is stripped out in release
69 virtual void* CreateUnknown( void*, void*, void*, void* );
70
71 void SetColours( const Toshi::TVector4& a_rShadowColour, const Toshi::TVector4 a_rAmbientColour );
72
73 TUINT GetAlphaRef() const { return m_iAlphaRef; }
74 void SetAlphaRef( TUINT val ) { m_iAlphaRef = val; }
75
76 const Toshi::TVector4& GetShadowColour() const { return m_ShadowColour; }
77 const Toshi::TVector4& GetAmbientColour() const { return m_AmbientColour; }
78
79 Toshi::TOrderTable* GetOrderTable( TUINT a_uiIndex )
80 {
81 TASSERT( a_uiIndex < NUM_ORDER_TABLES );
82 return &m_aOrderTables[ a_uiIndex ];
83 }
84
85 inline static TUINT s_RenderStateFlags = 27;
86
87private:
88 void SetupLowEndMode();
89
90private:
91 Toshi::TNodeList<AUnknown> m_SomeList;
92 DWORD m_hVertexShader;
93 TINT* m_pUnk2;
94 TUINT m_iAlphaRef;
95 TBOOL m_bRenderEnvMap;
96 Toshi::TOrderTable m_aOrderTables[ NUM_ORDER_TABLES ];
97 TBOOL m_bIsHighEndMode;
98 TBOOL m_bAlphaBlendMaterial;
99 TBOOL m_bUnkFlag3;
100 TBOOL m_bUnkFlag4;
101 Toshi::TVector4 m_ShadowColour;
102 Toshi::TVector4 m_AmbientColour;
103};
#define TASSERT(X,...)
Definition Defines.h:138
unsigned int TUINT
Definition Typedefs.h:8
char TCHAR
Definition Typedefs.h:20
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
virtual TBOOL TryInvalidate() override
virtual void SetAlphaBlendMaterial(TBOOL a_bIsAlphaBlendMaterial) override
Toshi::TOrderTable * GetOrderTable(TUINT a_uiIndex)
TUINT GetAlphaRef() const
virtual void * CreateUnknown(void *, void *, void *, void *)
virtual void StartFlush() override
void SetAlphaRef(TUINT val)
virtual TBOOL Validate() override
virtual void SetHighEndMode(TBOOL a_bEnable)
virtual void Flush() override
virtual void EndFlush() override
virtual TBOOL Create() override
virtual void Render(Toshi::TRenderPacket *a_pRenderPacket) override
virtual TBOOL IsHighEndMode()
virtual AWorldMaterial * CreateMaterial(const TCHAR *a_szName) override
virtual TBOOL TryValidate() override
virtual TBOOL IsAlphaBlendMaterial() override
virtual void Invalidate() override
void SetColours(const Toshi::TVector4 &a_rShadowColour, const Toshi::TVector4 a_rAmbientColour)
virtual void EnableRenderEnvMap(TBOOL a_bEnable) override
const Toshi::TVector4 & GetShadowColour() const
const Toshi::TVector4 & GetAmbientColour() const
static constexpr TUINT NUM_ORDER_TABLES
virtual AWorldMesh * CreateMesh(const TCHAR *a_szName) override
virtual TBOOL IsRenderEnvMapEnabled()
virtual TBOOL IsCapableShaders()
static TUINT s_RenderStateFlags
TDECLARE_CLASS(AWorldShaderHAL, AWorldShader)