Skip to content

Commit 28c0db2

Browse files
committed
More TSpriteMaterial{,HAL} Progress
1 parent abbd397 commit 28c0db2

File tree

4 files changed

+44
-8
lines changed

4 files changed

+44
-8
lines changed

Toshi/Shaders/TSpriteShader/Include/D3D/TSpriteShaderD3D.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@ TOSHI_NAMESPACE_BEGIN
88

99
class TSPRITESHADERD3D_EXPORTS TSpriteMaterialHAL : public TSpriteMaterial
1010
{
11+
DECLARE_DYNAMIC(TSpriteMaterialHAL, TSpriteMaterial)
1112
public:
1213

14+
TSpriteMaterialHAL()
15+
{
16+
m_pTexture[0] = TNULL;
17+
}
18+
1319
TRenderD3DInterface* GetRenderer() const
1420
{
1521
return TSTATICCAST(TRenderD3DInterface *, m_pRenderer);
1622
}
1723

1824
virtual void PreRender() override;
1925
virtual void PostRender() override;
20-
21-
private:
22-
TTextureResourceHAL *m_pTexture; // 0x40
2326
};
2427

2528
class TSPRITESHADERD3D_EXPORTS TSpriteMeshHAL

Toshi/Shaders/TSpriteShader/Include/TSpriteShader.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,19 @@ TOSHI_NAMESPACE_BEGIN
66

77
class TSpriteMaterial : public TMaterial
88
{
9+
DECLARE_DYNAMIC(TSpriteMaterial, TMaterial)
910

11+
public:
12+
TSpriteMaterial()
13+
{
14+
m_pTexture[0] = TNULL;
15+
m_pTexture[1] = TNULL;
16+
m_eBlendMode = 0;
17+
}
18+
19+
protected:
20+
TTextureResourceHAL *m_pTexture[2]; // 0x40
21+
TINT m_eBlendMode; // 0x48
1022
};
1123

1224
class TSpriteShader : public TShader

Toshi/Shaders/TSpriteShader/Source/D3D/TSpriteShaderD3D.cpp

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,42 @@
33

44
TOSHI_NAMESPACE_BEGIN
55

6+
IMPLEMENT_DYNCREATE(TSpriteMaterialHAL, TSpriteMaterial)
7+
68
void TSpriteMaterialHAL::PreRender()
79
{
810
TRenderD3DInterface *pRenderer = GetRenderer();
911
IDirect3DDevice8 *pDevice = pRenderer->GetD3DDevice();
1012
if (m_pTexture) {
11-
m_pTexture->Validate();
12-
if (m_pTexture->GetD3DTexture()) {
13-
pDevice->SetTexture(0, m_pTexture->GetD3DTexture());
14-
pRenderer->SetTextureAddressMode(0, m_pTexture->GetAddressMode());
13+
m_pTexture[0]->Validate();
14+
if (m_pTexture[0]->GetD3DTexture()) {
15+
pDevice->SetTexture(0, m_pTexture[0]->GetD3DTexture());
16+
pRenderer->SetTextureAddressMode(0, m_pTexture[0]->GetAddressMode());
1517
}
1618
}
1719
else {
1820
pDevice->SetTexture(0, TNULL);
1921
}
22+
if (m_Flags & FLAGS_VALID) {
23+
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
24+
}
25+
switch (m_eBlendMode)
26+
{
27+
case 0:
28+
pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
29+
pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
30+
pDevice->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
31+
default:
32+
break;
33+
}
2034
}
2135

2236
void TSpriteMaterialHAL::PostRender()
2337
{
2438
TRenderD3DInterface *pRenderer = GetRenderer();
2539
IDirect3DDevice8 *pDevice = pRenderer->GetD3DDevice();
2640
if (m_Flags & FLAGS_VALID) {
27-
pDevice->SetRenderState(D3DRS_CULLMODE, 2);
41+
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);
2842
}
2943
pRenderer->SetTextureAddressMode(0, TTextureResource::ADDRESSMODE_WRAP);
3044
pDevice->SetTexture(0, TNULL);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include "TSpriteShader.h"
2+
3+
TOSHI_NAMESPACE_BEGIN
4+
5+
IMPLEMENT_DYNAMIC(TSpriteMaterial, TMaterial)
6+
7+
TOSHI_NAMESPACE_END

0 commit comments

Comments
 (0)