Skip to content

Commit 5d1f618

Browse files
committed
perf(d3d): enable PUREDEVICE and hardware vertex processing
1 parent 926ffff commit 5d1f618

4 files changed

Lines changed: 64 additions & 70 deletions

File tree

Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp

Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ class W3DShaderInterface
8888
///do any custom resetting necessary to bring W3D in sync.
8989
virtual void reset() {
9090
ShaderClass::Invalidate();
91-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, nullptr);
92-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, nullptr);};
91+
DX8Wrapper::Set_DX8_Texture(0, nullptr);
92+
DX8Wrapper::Set_DX8_Texture(1, nullptr);};
9393
virtual Int init() = 0; ///<perform any one time initialization and validation
9494
virtual Int shutdown() { return TRUE;}; ///<release resources used by shader
9595
protected:
@@ -373,8 +373,6 @@ Bool ScreenBWFilter::postRender(FilterModes mode, Coord2D &scrollDelta,Bool &doE
373373

374374
Int ScreenBWFilter::set(FilterModes mode)
375375
{
376-
HRESULT hr;
377-
378376
if (mode > FM_NULL_MODE)
379377
{ //rendering a quad with redirected rendering surface tinted by pixel shader
380378

@@ -423,7 +421,7 @@ Int ScreenBWFilter::set(FilterModes mode)
423421
DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE);
424422
DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices
425423

426-
hr=DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBWPixelShader);
424+
DX8Wrapper::Set_Pixel_Shader(m_dwBWPixelShader);
427425
DX8Wrapper::_Get_D3D_Device8()->SetPixelShaderConstant(0, D3DXVECTOR4(0.3f, 0.59f, 0.11f, 1.0f), 1);
428426

429427
D3DXVECTOR4 color(1.0f,1.0f,1.0f,1.0f); //multiply color
@@ -468,8 +466,8 @@ Int ScreenBWFilter::set(FilterModes mode)
468466

469467
void ScreenBWFilter::reset()
470468
{
471-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture
472-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(0); //turn off pixel shader
469+
DX8Wrapper::Set_DX8_Texture(0,nullptr); //previously rendered frame inside this texture
470+
DX8Wrapper::Set_Pixel_Shader(0); //turn off pixel shader
473471
DX8Wrapper::Invalidate_Cached_Render_States();
474472
}
475473

@@ -793,9 +791,9 @@ Bool ScreenCrossFadeFilter::postRender(FilterModes mode, Coord2D &scrollDelta,Bo
793791
Int xpos, ypos, width, height;
794792
Real radius = 0.0f;
795793

796-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,tex); //previously rendered frame inside this texture
794+
DX8Wrapper::Set_DX8_Texture(0,tex); //previously rendered frame inside this texture
797795
if (mode == FM_VIEW_CROSSFADE_CIRCLE)
798-
{ DX8Wrapper::_Get_D3D_Device8()->SetTexture(1,m_fadePatternTexture->Peek_D3D_Texture());
796+
{ DX8Wrapper::Set_DX8_Texture(1,m_fadePatternTexture->Peek_D3D_Texture());
799797
//Use the current fade level to scale the mask texture, for other modes the texture
800798
//comes pre-scaled so doesn't require uv scaling.
801799
radius = (1.0f-m_curFadeValue)*2.0f;
@@ -1657,7 +1655,7 @@ Int TerrainShader2Stage::set(Int pass)
16571655
switch (pass)
16581656
{
16591657
case 0:
1660-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
1658+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
16611659
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
16621660
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
16631661

@@ -1672,7 +1670,7 @@ Int TerrainShader2Stage::set(Int pass)
16721670
DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHABLENDENABLE,false);
16731671
break;
16741672
case 1:
1675-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(1)->Peek_D3D_Texture());
1673+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(1)->Peek_D3D_Texture());
16761674
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
16771675
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
16781676

@@ -1719,7 +1717,7 @@ Int TerrainShader2Stage::set(Int pass)
17191717
if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_TERRAIN_BASE_NOISE12)
17201718
{
17211719
//setup cloud pass
1722-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
1720+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
17231721

17241722
updateNoise1(&curView,&inv); //update curView with texture matrix
17251723
DX8Wrapper::_Set_DX8_Transform(D3DTS_TEXTURE0, curView);
@@ -1728,7 +1726,7 @@ Int TerrainShader2Stage::set(Int pass)
17281726
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
17291727

17301728
//setup noise pass
1731-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
1729+
DX8Wrapper::Set_DX8_Texture(1, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
17321730

17331731
updateNoise2(&curView,&inv);
17341732
DX8Wrapper::_Set_DX8_Transform(D3DTS_TEXTURE1, curView);
@@ -1752,7 +1750,7 @@ Int TerrainShader2Stage::set(Int pass)
17521750
// Now setup the texture pipeline.
17531751
if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_TERRAIN_BASE_NOISE1)
17541752
{ //setup cloud pass
1755-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
1753+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
17561754
updateNoise1(&curView,&inv); //update curView with texture matrix
17571755
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
17581756
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
@@ -2004,8 +2002,8 @@ Int TerrainShaderPixelShader::set(Int pass)
20042002
DX8Wrapper::Apply_Render_State_Changes();
20052003

20062004
//setup base pass
2007-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
2008-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, W3DShaderManager::getShaderTexture(1)->Peek_D3D_Texture());
2005+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
2006+
DX8Wrapper::Set_DX8_Texture(1, W3DShaderManager::getShaderTexture(1)->Peek_D3D_Texture());
20092007

20102008
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
20112009
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
@@ -2055,9 +2053,9 @@ Int TerrainShaderPixelShader::set(Int pass)
20552053
{ //full shader
20562054
DX8Wrapper::Set_DX8_Texture_Stage_State(3, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
20572055
DX8Wrapper::Set_DX8_Texture_Stage_State(3, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
2058-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(2, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
2059-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(3, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
2060-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise2PixelShader);
2056+
DX8Wrapper::Set_DX8_Texture(2, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
2057+
DX8Wrapper::Set_DX8_Texture(3, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
2058+
DX8Wrapper::Set_Pixel_Shader(m_dwBaseNoise2PixelShader);
20612059

20622060
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
20632061
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
@@ -2077,18 +2075,18 @@ Int TerrainShaderPixelShader::set(Int pass)
20772075
}
20782076
else
20792077
{ //single noise texture shader
2080-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise1PixelShader);
2078+
DX8Wrapper::Set_Pixel_Shader(m_dwBaseNoise1PixelShader);
20812079

20822080
if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_TERRAIN_BASE_NOISE1)
20832081
{ //cloud map
2084-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(2, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
2082+
DX8Wrapper::Set_DX8_Texture(2, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
20852083
terrainShader2Stage.updateNoise1(&curView,&inv); //update curView with texture matrix
20862084
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
20872085
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
20882086
}
20892087
else
20902088
{ //light map
2091-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(2, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
2089+
DX8Wrapper::Set_DX8_Texture(2, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
20922090
terrainShader2Stage.updateNoise2(&curView,&inv); //update curView with texture matrix
20932091
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MINFILTER, D3DTEXF_POINT);
20942092
DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
@@ -2098,21 +2096,21 @@ Int TerrainShaderPixelShader::set(Int pass)
20982096
}
20992097
else
21002098
{ //just base texturing
2101-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBasePixelShader);
2099+
DX8Wrapper::Set_Pixel_Shader(m_dwBasePixelShader);
21022100
}
21032101

21042102
return TRUE;
21052103
}
21062104

21072105
void TerrainShaderPixelShader::reset()
21082106
{
2109-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(2,nullptr); //release reference to any texture
2110-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(3,nullptr); //release reference to any texture
2107+
DX8Wrapper::Set_DX8_Texture(2,nullptr); //release reference to any texture
2108+
DX8Wrapper::Set_DX8_Texture(3,nullptr); //release reference to any texture
21112109

2112-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(0); //turn off pixel shader
2110+
DX8Wrapper::Set_Pixel_Shader(0); //turn off pixel shader
21132111

2114-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, nullptr);
2115-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, nullptr);
2112+
DX8Wrapper::Set_DX8_Texture(0, nullptr);
2113+
DX8Wrapper::Set_DX8_Texture(1, nullptr);
21162114

21172115
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
21182116
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|0);
@@ -2183,7 +2181,7 @@ Int CloudTextureShader::set(Int stage)
21832181
DX8Wrapper::Set_DX8_Texture_Stage_State( stage, D3DTSS_ALPHAARG2, D3DTA_CURRENT );
21842182
DX8Wrapper::Set_DX8_Texture_Stage_State( stage, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
21852183

2186-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(stage, W3DShaderManager::getShaderTexture(stage)->Peek_D3D_Texture());
2184+
DX8Wrapper::Set_DX8_Texture(stage, W3DShaderManager::getShaderTexture(stage)->Peek_D3D_Texture());
21872185

21882186
m_stageOfSet=stage;
21892187
return TRUE;
@@ -2192,7 +2190,7 @@ Int CloudTextureShader::set(Int stage)
21922190
void CloudTextureShader::reset()
21932191
{
21942192
//Free reference to texture
2195-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(m_stageOfSet, nullptr);
2193+
DX8Wrapper::Set_DX8_Texture(m_stageOfSet, nullptr);
21962194
//Turn off texture projection
21972195
DX8Wrapper::Set_DX8_Texture_Stage_State( m_stageOfSet, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
21982196
DX8Wrapper::Set_DX8_Texture_Stage_State( m_stageOfSet, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|m_stageOfSet);
@@ -2321,7 +2319,7 @@ Int RoadShaderPixelShader::set(Int pass)
23212319
DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(1));
23222320
DX8Wrapper::Set_Texture(2,W3DShaderManager::getShaderTexture(2));
23232321

2324-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise2PixelShader);
2322+
DX8Wrapper::Set_Pixel_Shader(m_dwBaseNoise2PixelShader);
23252323

23262324
DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
23272325
DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
@@ -2345,7 +2343,7 @@ Int RoadShaderPixelShader::set(Int pass)
23452343
void RoadShaderPixelShader::reset()
23462344
{
23472345

2348-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(0); //turn off pixel shader
2346+
DX8Wrapper::Set_Pixel_Shader(0); //turn off pixel shader
23492347

23502348
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
23512349
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|0);
@@ -3303,7 +3301,7 @@ Int FlatTerrainShader2Stage::set(Int pass)
33033301
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
33043302
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
33053303
if (W3DShaderManager::getShaderTexture(0)) {
3306-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
3304+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture());
33073305
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
33083306
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLORARG2, D3DTA_CURRENT );
33093307
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
@@ -3402,7 +3400,7 @@ Int FlatTerrainShader2Stage::set(Int pass)
34023400
//clouds always need bilinear filtering
34033401
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
34043402
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
3405-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
3403+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
34063404

34073405
//setup noise pass
34083406

@@ -3422,14 +3420,14 @@ Int FlatTerrainShader2Stage::set(Int pass)
34223420

34233421
DX8Wrapper::Set_DX8_Texture_Stage_State( 1, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
34243422
DX8Wrapper::Set_DX8_Texture_Stage_State( 1, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
3425-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
3423+
DX8Wrapper::Set_DX8_Texture(1, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
34263424
}
34273425
else
34283426
{ //only 1 noise or cloud texture
34293427
// Now setup the texture pipeline.
34303428
if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_FLAT_TERRAIN_BASE_NOISE1)
34313429
{ //setup cloud pass
3432-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
3430+
DX8Wrapper::Set_DX8_Texture(0, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
34333431
terrainShader2Stage.updateNoise1(&curView,&inv); //update curView with texture matrix
34343432
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
34353433
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
@@ -3620,7 +3618,7 @@ Int FlatTerrainShaderPixelShader::set(Int pass)
36203618
DX8Wrapper::Set_DX8_Texture_Stage_State( curStage, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
36213619
DX8Wrapper::Set_DX8_Texture_Stage_State( curStage, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
36223620
DX8Wrapper::Set_DX8_Texture_Stage_State( curStage, D3DTSS_MAGFILTER, D3DTEXF_LINEAR);
3623-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(curStage, shroud->getShroudTexture()->Peek_D3D_Texture());
3621+
DX8Wrapper::Set_DX8_Texture(curStage, shroud->getShroudTexture()->Peek_D3D_Texture());
36243622
curStage++;
36253623
if (curStage==1) curStage++;
36263624
}
@@ -3641,7 +3639,7 @@ Int FlatTerrainShaderPixelShader::set(Int pass)
36413639

36423640
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
36433641
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
3644-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(curStage, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
3642+
DX8Wrapper::Set_DX8_Texture(curStage, W3DShaderManager::getShaderTexture(2)->Peek_D3D_Texture());
36453643
terrainShader2Stage.updateNoise1(&curView,&inv); //update curView with texture matrix
36463644
DX8Wrapper::_Set_DX8_Transform((D3DTRANSFORMSTATETYPE )(D3DTS_TEXTURE0+curStage), curView);
36473645
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
@@ -3668,7 +3666,7 @@ Int FlatTerrainShaderPixelShader::set(Int pass)
36683666

36693667
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP);
36703668
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP);
3671-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(curStage, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
3669+
DX8Wrapper::Set_DX8_Texture(curStage, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture());
36723670
terrainShader2Stage.updateNoise2(&curView,&inv); //update curView with texture matrix
36733671
DX8Wrapper::_Set_DX8_Transform((D3DTRANSFORMSTATETYPE )(D3DTS_TEXTURE0+curStage), curView);
36743672
DX8Wrapper::Set_DX8_Texture_Stage_State(curStage, D3DTSS_MINFILTER, D3DTEXF_LINEAR);
@@ -3678,13 +3676,13 @@ Int FlatTerrainShaderPixelShader::set(Int pass)
36783676
if (curStage==1) curStage++;
36793677
}
36803678
if (curStage<2) {
3681-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBase0PixelShader);
3679+
DX8Wrapper::Set_Pixel_Shader(m_dwBase0PixelShader);
36823680
} else if (curStage==2) {
3683-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBasePixelShader);
3681+
DX8Wrapper::Set_Pixel_Shader(m_dwBasePixelShader);
36843682
} else if (curStage==3) {
3685-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise1PixelShader);
3683+
DX8Wrapper::Set_Pixel_Shader(m_dwBaseNoise1PixelShader);
36863684
}else if (curStage==4) {
3687-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise2PixelShader);
3685+
DX8Wrapper::Set_Pixel_Shader(m_dwBaseNoise2PixelShader);
36883686
}
36893687
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
36903688
DX8Wrapper::Apply_Render_State_Changes();
@@ -3694,13 +3692,13 @@ Int FlatTerrainShaderPixelShader::set(Int pass)
36943692

36953693
void FlatTerrainShaderPixelShader::reset()
36963694
{
3697-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(2,nullptr); //release reference to any texture
3698-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(3,nullptr); //release reference to any texture
3695+
DX8Wrapper::Set_DX8_Texture(2,nullptr); //release reference to any texture
3696+
DX8Wrapper::Set_DX8_Texture(3,nullptr); //release reference to any texture
36993697

3700-
DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(0); //turn off pixel shader
3698+
DX8Wrapper::Set_Pixel_Shader(0); //turn off pixel shader
37013699

3702-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, nullptr);
3703-
DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, nullptr);
3700+
DX8Wrapper::Set_DX8_Texture(0, nullptr);
3701+
DX8Wrapper::Set_DX8_Texture(1, nullptr);
37043702

37053703
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE);
37063704
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|0);

Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2890,11 +2890,8 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig)
28902890
DX8Wrapper::Set_DX8_Render_State(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
28912891

28922892
if (m_riverWaterPixelShader) DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_riverWaterPixelShader);
2893-
DWORD cull;
2894-
DX8Wrapper::_Get_D3D_Device8()->GetRenderState(D3DRS_CULLMODE, &cull);
2895-
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
2896-
2897-
2893+
DWORD cull = DX8Wrapper::Get_DX8_Render_State(D3DRS_CULLMODE);
2894+
DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE);
28982895

28992896
if (wireframeForDebug) {
29002897
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
@@ -2923,7 +2920,7 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig)
29232920
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ZFUNC, D3DCMP_EQUAL);
29242921
W3DShaderManager::resetShader(W3DShaderManager::ST_SHROUD_TEXTURE);
29252922
}
2926-
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_CULLMODE, cull);
2923+
DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, cull);
29272924

29282925

29292926
}
@@ -3265,12 +3262,8 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4])
32653262
DX8Wrapper::Set_DX8_Render_State(D3DRS_DESTBLEND, D3DBLEND_INVDESTALPHA );
32663263
}
32673264

3268-
3269-
DWORD cull;
3270-
DX8Wrapper::_Get_D3D_Device8()->GetRenderState(D3DRS_CULLMODE, &cull);
3271-
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
3272-
3273-
3265+
DWORD cull = DX8Wrapper::Get_DX8_Render_State(D3DRS_CULLMODE);
3266+
DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE);
32743267

32753268
//#ifdef FEATHER_WATER // the NEW WATER a'la LORENZEN
32763269

@@ -3337,7 +3330,7 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4])
33373330
W3DShaderManager::resetShader(W3DShaderManager::ST_SHROUD_TEXTURE);
33383331
}
33393332
}
3340-
DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_CULLMODE, cull);
3333+
DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, cull);
33413334
}
33423335

33433336

Generals/Code/Libraries/Source/WWVegas/WW3D2/dx8wrapper.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -550,10 +550,13 @@ bool DX8Wrapper::Create_Device()
550550
return false;
551551
}
552552

553-
Vertex_Processing_Behavior=D3DCREATE_SOFTWARE_VERTEXPROCESSING;
554-
if (caps.DevCaps&D3DDEVCAPS_HWTRANSFORMANDLIGHT)
553+
Vertex_Processing_Behavior = (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) ?
554+
D3DCREATE_HARDWARE_VERTEXPROCESSING : D3DCREATE_SOFTWARE_VERTEXPROCESSING;
555+
556+
// TheSuperHackers @performance Enable pure device to skip per-draw-call state validation
557+
if (caps.DevCaps & D3DDEVCAPS_PUREDEVICE)
555558
{
556-
Vertex_Processing_Behavior=D3DCREATE_MIXED_VERTEXPROCESSING;
559+
Vertex_Processing_Behavior |= D3DCREATE_PUREDEVICE;
557560
}
558561

559562
#ifdef CREATE_DX8_MULTI_THREADED

0 commit comments

Comments
 (0)