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
21 changes: 11 additions & 10 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_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 @@ -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_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 @@ -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
21 changes: 11 additions & 10 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);
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,7 +550,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
for (pass=0; pass<devicePasses; pass++) {
Bool disableTex = m_disableTextures;
if (m_disableTextures ) {
DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaque2DShader);
WW3D::Get_Render_Backend()->Set_Shader(ShaderClass::_PresetOpaque2DShader);
DX8Wrapper::Set_Texture(0,nullptr);
} else {
W3DShaderManager::setShader(st, pass);
Expand Down Expand Up @@ -595,7 +596,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)

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 @@ -615,15 +616,15 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::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);

Expand All @@ -634,7 +635,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Texture(1,nullptr);
m_stageTwoTexture->restore();
ShaderClass::Invalidate();
DX8Wrapper::Set_Material(nullptr);
WW3D::Get_Render_Backend()->Set_Material(nullptr);

}

43 changes: 22 additions & 21 deletions Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.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 @@ -1923,15 +1924,15 @@ void HeightMapRenderObjClass::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);
ShaderClass::Invalidate();

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

//Apply the shader and material

Expand Down Expand Up @@ -1961,11 +1962,11 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
{
//wireframe pass
//Set to vertex diffuse lighting
DX8Wrapper::Set_Material(m_vertexMaterialClass);
WW3D::Get_Render_Backend()->Set_Material(m_vertexMaterialClass);
//Set shader to non-textured solid color from vertex
DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueSolidShader);
WW3D::Get_Render_Backend()->Set_Shader(ShaderClass::_PresetOpaqueSolidShader);
devicePasses=1; //one pass solid, next in wireframe.
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_COLORARG2, D3DTA_TFACTOR );
DX8Wrapper::Set_DX8_Render_State(D3DRS_TEXTUREFACTOR,0xff808080);
doMultiPassWireFrame=TRUE;
Expand All @@ -1976,8 +1977,8 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
}
else
{
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_TERRAIN_BASE; //set default shader

Expand Down Expand Up @@ -2019,7 +2020,7 @@ void HeightMapRenderObjClass::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 @@ -2030,7 +2031,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
if (!doMultiPassWireFrame) //multi-pass wireframe doesn't use regular shaders.
{
if (m_disableTextures ) {
DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaque2DShader);
WW3D::Get_Render_Backend()->Set_Shader(ShaderClass::_PresetOpaque2DShader);
DX8Wrapper::Set_Texture(0,nullptr);
} else {
W3DShaderManager::setShader(st, pass);
Expand All @@ -2044,13 +2045,13 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
#ifdef PRE_TRANSFORM_VERTEX
if (m_xformedVertexBuffer && pass==0) {
// Note - m_xformedVertexBuffer should only be used for non T&L hardware. jba.
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
int code = DX8Wrapper::_Get_D3D_Device8()->ProcessVertices(0, 0, numVertex, m_xformedVertexBuffer[j*m_numVBTilesX+i], 0);
::OutputDebugString("did process vertex\n");
}
if (m_xformedVertexBuffer) {
// Note - m_xformedVertexBuffer should only be used for non T&L hardware. jba.
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
DX8Wrapper::_Get_D3D_Device8()->SetStreamSource(
0,
m_xformedVertexBuffer[j*m_numVBTilesX+i],
Expand Down Expand Up @@ -2088,7 +2089,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)

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 @@ -2110,7 +2111,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::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, doCloud?m_stageTwoTexture:nullptr);

Expand All @@ -2125,7 +2126,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
}

ShaderClass::Invalidate();
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
}
else
m_bridgeBuffer->drawBridges(&rinfo.Camera, m_disableTextures, m_stageTwoTexture);
Expand All @@ -2140,7 +2141,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Texture(1,nullptr);
m_stageTwoTexture->restore();
ShaderClass::Invalidate();
DX8Wrapper::Set_Material(nullptr);
WW3D::Get_Render_Backend()->Set_Material(nullptr);

}

Expand All @@ -2149,7 +2150,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
///Performs additional terrain rendering pass, blending in the black shroud texture.
void HeightMapRenderObjClass::renderTerrainPass(CameraClass *pCamera)
{
DX8Wrapper::Set_Transform(D3DTS_WORLD,Matrix3D(true));
WW3D::Get_Render_Backend()->Set_Transform(RB_TRANSFORM_WORLD,Matrix3D(true));

//Apply the shader and material

Expand All @@ -2162,13 +2163,13 @@ void HeightMapRenderObjClass::renderTerrainPass(CameraClass *pCamera)
#ifdef PRE_TRANSFORM_VERTEX
if (m_xformedVertexBuffer && pass==0) {
// Note - m_xformedVertexBuffer should only be used for non T&L hardware. jba.
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
int code = DX8Wrapper::_Get_D3D_Device8()->ProcessVertices(0, 0, numVertex, m_xformedVertexBuffer[j*m_numVBTilesX+i], 0);
::OutputDebugString("did process vertex\n");
}
if (m_xformedVertexBuffer) {
// Note - m_xformedVertexBuffer should only be used for non T&L hardware. jba.
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();
DX8Wrapper::_Get_D3D_Device8()->SetStreamSource(
0,
m_xformedVertexBuffer[j*m_numVBTilesX+i],
Expand Down Expand Up @@ -2339,17 +2340,17 @@ void HeightMapRenderObjClass::renderExtraBlendTiles()
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);
VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE);
DX8Wrapper::Set_Material(vmat);
WW3D::Get_Render_Backend()->Set_Material(vmat);
REF_PTR_RELEASE(vmat);
ShaderClass shader=ShaderClass::_PresetOpaqueShader;
shader.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); //disable writes to z
DX8Wrapper::Set_Shader(shader);
WW3D::Get_Render_Backend()->Set_Shader(shader);

if (TheGlobalData->m_use3WayTerrainBlends == 2)
{
shader.Set_Primary_Gradient(ShaderClass::GRADIENT_DISABLE); //disable lighting.
shader.Set_Texturing(ShaderClass::TEXTURING_DISABLE); //disable texturing.
DX8Wrapper::Set_Shader(shader);
WW3D::Get_Render_Backend()->Set_Shader(shader);
DX8Wrapper::Set_Texture(0,nullptr); //debug mode which draws terrain tiles in white.
if (Is_Hidden() == 0) {
DX8Wrapper::Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
#include "GameLogic/GameLogic.h"
#include "Common/MapObject.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/IRenderBackend.h"

#if defined(RTS_DEBUG)

Expand Down Expand Up @@ -215,13 +216,13 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo)
//
Bool anyVanished = false;
if (m_numDebugIcons==0) return;
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();

DX8Wrapper::Set_Material(m_vertexMaterialClass);
WW3D::Get_Render_Backend()->Set_Material(m_vertexMaterialClass);
DX8Wrapper::Set_Texture(0, nullptr);
DX8Wrapper::Apply_Render_State_Changes();
WW3D::Get_Render_Backend()->Apply_Render_State_Changes();

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

Int numRect = m_numDebugIcons;
static Real offset = 30;
Expand Down Expand Up @@ -302,7 +303,7 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo)
}
}
if (numVertex == 0) break;
DX8Wrapper::Set_Shader(ShaderClass(SC_ALPHA));
WW3D::Get_Render_Backend()->Set_Shader(ShaderClass(SC_ALPHA));
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);
DX8Wrapper::Draw_Triangles( 0,curIndex/3, 0, numVertex); //draw a quad, 2 triangles, 4 verts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ static void drawFramerateBar();
#include "WWMath/wwmath.h"
#include "WWLib/registry.h"
#include "WW3D2/ww3d.h"
#include "WW3D2/IRenderBackend.h"
#include "WW3D2/predlod.h"
#include "WW3D2/part_emt.h"
#include "WW3D2/part_ldr.h"
Expand Down Expand Up @@ -549,7 +550,7 @@ void W3DDisplay::setGamma(Real gamma, Real bright, Real contrast, Bool calibrate
if (m_windowed)
return; //we don't allow gamma to change in window because it would affect desktop.

DX8Wrapper::Set_Gamma(gamma,bright,contrast,calibrate, false);
WW3D::Get_Render_Backend()->Set_Gamma(gamma,bright,contrast,calibrate, false);
}

/** Set resolution of display */
Expand Down Expand Up @@ -2936,7 +2937,7 @@ VideoBuffer* W3DDisplay::createVideoBuffer()

// first try to use the native format

WW3DFormat displayFormat = DX8Wrapper::getBackBufferFormat();
WW3DFormat displayFormat = WW3D::Get_Render_Backend()->Get_Back_Buffer_Format();

if ( DX8Wrapper::Get_Current_Caps()->Support_Texture_Format( displayFormat ))
{
Expand Down
Loading
Loading