Skip to content
Draft
37 changes: 19 additions & 18 deletions Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
#include "W3DDevice/GameClient/W3DWater.h"
#include "W3DDevice/GameClient/W3DShroud.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/IRenderBackend.h"
#include "WW3D2/light.h"
#include "WW3D2/scene.h"
#include "W3DDevice/GameClient/W3DPoly.h"
Expand Down Expand Up @@ -2296,7 +2297,7 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera)
return;

//Check if video card is capable of using this effect
if (DX8Wrapper::getBackBufferFormat() != WW3D_FORMAT_A8R8G8B8)
if (WW3D::Get_Render_Backend()->Get_Back_Buffer_Format() != WW3D_FORMAT_A8R8G8B8)
return; //can't apply effect on cards without destination alpha

Int vertexCount = 0;
Expand All @@ -2313,12 +2314,12 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera)

ShaderClass unlitShader=ShaderClass::_PresetOpaque2DShader;
unlitShader.Set_Depth_Compare(ShaderClass::PASS_LEQUAL);
DX8Wrapper::Set_Shader(unlitShader);
WW3D::Get_Render_Backend()->Set_Shader(unlitShader);
VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE);
DX8Wrapper::Set_Material(vmat);
WW3D::Get_Render_Backend()->Set_Material(vmat);
REF_PTR_RELEASE(vmat);
DX8Wrapper::Set_Texture(0,m_destAlphaTexture);
DX8Wrapper::Set_Transform(D3DTS_WORLD,Matrix3D(true));
WW3D::Get_Render_Backend()->Set_Texture(0,m_destAlphaTexture);
WW3D::Get_Render_Backend()->Set_Transform(RB_TRANSFORM_WORLD,Matrix3D(true));
//Enabled writes to destination alpha only
DX8Wrapper::Set_DX8_Render_State(D3DRS_COLORWRITEENABLE,D3DCOLORWRITEENABLE_ALPHA);
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXCOORDINDEX, 0);
Expand Down Expand Up @@ -2434,9 +2435,9 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera)

if (indexCount > 0 && vertexCount > 0)
{
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);
DX8Wrapper::Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts
WW3D::Get_Render_Backend()->Set_Index_Buffer(ib_access,0);
WW3D::Get_Render_Backend()->Set_Vertex_Buffer(vb_access);
WW3D::Get_Render_Backend()->Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts
m_numVisibleShoreLineTiles += indexCount/6;
}

Expand All @@ -2461,7 +2462,7 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera)
return;

//Check if video card is capable of using this effect
if (DX8Wrapper::getBackBufferFormat() != WW3D_FORMAT_A8R8G8B8)
if (WW3D::Get_Render_Backend()->Get_Back_Buffer_Format() != WW3D_FORMAT_A8R8G8B8)
return; //can't apply effect on cards without destination alpha

Int vertexCount = 0;
Expand Down Expand Up @@ -2499,12 +2500,12 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera)

ShaderClass unlitShader=ShaderClass::_PresetOpaque2DShader;
unlitShader.Set_Depth_Compare(ShaderClass::PASS_LEQUAL);
DX8Wrapper::Set_Shader(unlitShader);
WW3D::Get_Render_Backend()->Set_Shader(unlitShader);
VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE);
DX8Wrapper::Set_Material(vmat);
WW3D::Get_Render_Backend()->Set_Material(vmat);
REF_PTR_RELEASE(vmat);
DX8Wrapper::Set_Texture(0,m_destAlphaTexture);
DX8Wrapper::Set_Transform(D3DTS_WORLD,Matrix3D(true));
WW3D::Get_Render_Backend()->Set_Texture(0,m_destAlphaTexture);
WW3D::Get_Render_Backend()->Set_Transform(RB_TRANSFORM_WORLD,Matrix3D(true));
//Enabled writes to destination alpha only
DX8Wrapper::Set_DX8_Render_State(D3DRS_COLORWRITEENABLE,D3DCOLORWRITEENABLE_ALPHA);
DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXCOORDINDEX, 0);
Expand Down Expand Up @@ -2777,9 +2778,9 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera)

if (indexCount > 0 && vertexCount > 0)
{
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);
DX8Wrapper::Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts
WW3D::Get_Render_Backend()->Set_Index_Buffer(ib_access,0);
WW3D::Get_Render_Backend()->Set_Vertex_Buffer(vb_access);
WW3D::Get_Render_Backend()->Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts
m_numVisibleShoreLineTiles += indexCount/6;
}

Expand Down Expand Up @@ -2808,8 +2809,8 @@ void BaseHeightMapRenderObjClass::renderTrees(CameraClass * camera)
if (m_map==nullptr) return;
if (Scene==nullptr) return;
if (m_treeBuffer) {
DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
DX8Wrapper::Set_Material(m_vertexMaterialClass);
WW3D::Get_Render_Backend()->Set_Transform(RB_TRANSFORM_WORLD,Transform);
WW3D::Get_Render_Backend()->Set_Material(m_vertexMaterialClass);
RTS3DScene *pMyScene = (RTS3DScene *)Scene;
RefRenderObjListIterator pDynamicLightsIterator(pMyScene->getDynamicLights());
m_treeBuffer->drawTrees(camera, &pDynamicLightsIterator);
Expand Down
43 changes: 22 additions & 21 deletions Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@
#include "W3DDevice/GameClient/W3DWater.h"
#include "W3DDevice/GameClient/W3DShroud.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/IRenderBackend.h"
#include "WW3D2/light.h"
#include "WW3D2/scene.h"
#include "W3DDevice/GameClient/W3DPoly.h"
Expand Down Expand Up @@ -485,19 +486,19 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
}
#endif

DX8Wrapper::Set_Light_Environment(rinfo.light_environment);
WW3D::Get_Render_Backend()->Set_Light_Environment(rinfo.light_environment);

// Force shaders to update.
m_stageTwoTexture->restore();
DX8Wrapper::Set_Texture(0,nullptr);
DX8Wrapper::Set_Texture(1,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(1,nullptr);
ShaderClass::Invalidate();

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
WW3D::Get_Render_Backend()->Set_Transform(RB_TRANSFORM_WORLD,Transform);


DX8Wrapper::Set_Material(m_vertexMaterialClass);
DX8Wrapper::Set_Shader(m_shaderClass);
WW3D::Get_Render_Backend()->Set_Material(m_vertexMaterialClass);
WW3D::Get_Render_Backend()->Set_Shader(m_shaderClass);

st=W3DShaderManager::ST_FLAT_TERRAIN_BASE; //set default shader

Expand Down Expand Up @@ -537,7 +538,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
W3DShaderManager::setTexture(2,m_stageTwoTexture); //cloud
W3DShaderManager::setTexture(3,m_stageThreeTexture);//noise
//Disable writes to destination alpha channel (if there is one)
if (DX8Wrapper::getBackBufferFormat() == WW3D_FORMAT_A8R8G8B8) {
if (WW3D::Get_Render_Backend()->Get_Back_Buffer_Format() == WW3D_FORMAT_A8R8G8B8) {
DX8Wrapper::Set_DX8_Render_State(D3DRS_COLORWRITEENABLE,D3DCOLORWRITEENABLE_BLUE|D3DCOLORWRITEENABLE_GREEN|D3DCOLORWRITEENABLE_RED);
}

Expand All @@ -549,8 +550,8 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
for (pass=0; pass<devicePasses; pass++) {
Bool disableTex = m_disableTextures;
if (m_disableTextures ) {
DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaque2DShader);
DX8Wrapper::Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Shader(ShaderClass::_PresetOpaque2DShader);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
} else {
W3DShaderManager::setShader(st, pass);
}
Expand Down Expand Up @@ -589,13 +590,13 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
renderShoreLines(&rinfo.Camera);

#ifdef DO_ROADS
DX8Wrapper::Set_Texture(0,nullptr);
DX8Wrapper::Set_Texture(1,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(1,nullptr);
m_stageTwoTexture->restore();

ShaderClass::Invalidate();
if (!ShaderClass::Is_Backface_Culling_Inverted()) {
DX8Wrapper::Set_Material(m_vertexMaterialClass);
WW3D::Get_Render_Backend()->Set_Material(m_vertexMaterialClass);
if (Scene) {
RTS3DScene *pMyScene = (RTS3DScene *)Scene;
RefRenderObjListIterator pDynamicLightsIterator(pMyScene->getDynamicLights());
Expand All @@ -605,36 +606,36 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
}
#endif

DX8Wrapper::Set_Texture(0,nullptr);
DX8Wrapper::Set_Texture(1,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(1,nullptr);
m_stageTwoTexture->restore();

drawScorches();

DX8Wrapper::Set_Texture(0,nullptr);
DX8Wrapper::Set_Texture(1,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(1,nullptr);
m_stageTwoTexture->restore();
ShaderClass::Invalidate();
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();

m_bridgeBuffer->drawBridges(&rinfo.Camera, m_disableTextures, m_stageTwoTexture);

if (TheTerrainTracksRenderObjClassSystem)
TheTerrainTracksRenderObjClassSystem->flush();

ShaderClass::Invalidate();
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();

m_waypointBuffer->drawWaypoints(rinfo);

m_bibBuffer->renderBibs();
#endif
// We do some custom blending, so tell the shader class to reset everything.
DX8Wrapper::Set_Texture(0,nullptr);
DX8Wrapper::Set_Texture(1,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(0,nullptr);
WW3D::Get_Render_Backend()->Set_Texture(1,nullptr);
m_stageTwoTexture->restore();
ShaderClass::Invalidate();
DX8Wrapper::Set_Material(nullptr);
WW3D::Get_Render_Backend()->Set_Material(nullptr);

}

Loading
Loading