Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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