Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -2318,7 +2318,7 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera)
DX8Wrapper::Set_Material(vmat);
REF_PTR_RELEASE(vmat);
DX8Wrapper::Set_Texture(0,m_destAlphaTexture);
DX8Wrapper::Set_Transform(D3DTS_WORLD,Matrix3D(true));
Renderer::Set_Transform(RenderTransform_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 @@ -2504,7 +2504,7 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera)
DX8Wrapper::Set_Material(vmat);
REF_PTR_RELEASE(vmat);
DX8Wrapper::Set_Texture(0,m_destAlphaTexture);
DX8Wrapper::Set_Transform(D3DTS_WORLD,Matrix3D(true));
Renderer::Set_Transform(RenderTransform_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,7 +2808,7 @@ void BaseHeightMapRenderObjClass::renderTrees(CameraClass * camera)
if (m_map==nullptr) return;
if (Scene==nullptr) return;
if (m_treeBuffer) {
DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
Renderer::Set_Transform(RenderTransform_World,Transform);
DX8Wrapper::Set_Material(m_vertexMaterialClass);
RTS3DScene *pMyScene = (RTS3DScene *)Scene;
RefRenderObjListIterator pDynamicLightsIterator(pMyScene->getDynamicLights());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Texture(1,nullptr);
ShaderClass::Invalidate();

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
Renderer::Set_Transform(RenderTransform_World,Transform);


DX8Wrapper::Set_Material(m_vertexMaterialClass);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1930,7 +1930,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Texture(1,nullptr);
ShaderClass::Invalidate();

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
Renderer::Set_Transform(RenderTransform_World,Transform);

//Apply the shader and material

Expand Down Expand Up @@ -2148,7 +2148,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));
Renderer::Set_Transform(RenderTransform_World,Matrix3D(true));

//Apply the shader and material

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/Renderer.h"

#if defined(RTS_DEBUG)

Expand Down Expand Up @@ -221,7 +222,7 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Texture(0, nullptr);
DX8Wrapper::Apply_Render_State_Changes();

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
Renderer::Set_Transform(RenderTransform_World,Transform);

Int numRect = m_numDebugIcons;
static Real offset = 30;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include "WW3D2/texture.h"
#include "WW3D2/dx8indexbuffer.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"
#include "WW3D2/rinfo.h"
#include "WW3D2/camera.h"
#include "WW3D2/sortingrenderer.h"
Expand Down Expand Up @@ -446,8 +447,8 @@ void W3DSmudgeManager::render(RenderInfoClass &rinfo)
REF_PTR_RELEASE(backBuffer);

Matrix4x4 identity(true);
DX8Wrapper::Set_Transform(D3DTS_WORLD,identity);
DX8Wrapper::Set_Transform(D3DTS_VIEW,identity);
Renderer::Set_Transform(RenderTransform_World,identity);
Renderer::Set_Transform(RenderTransform_View,identity);

DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0);
//DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueSpriteShader);
Expand Down
5 changes: 3 additions & 2 deletions Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "W3DDevice/GameClient/HeightMap.h"
#include "GameClient/View.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"
#include "WW3D2/rinfo.h"
#include "WW3D2/camera.h"
#include "WW3D2/assetmgr.h"
Expand Down Expand Up @@ -394,7 +395,7 @@ void W3DSnowManager::render(RenderInfoClass &rinfo)
m_heightTraveled=m_time*m_velocity+cameraOffset; //height that snow flake traveled this frame.

Matrix4x4 identity(true);
DX8Wrapper::Set_Transform(D3DTS_WORLD,identity);
Renderer::Set_Transform(RenderTransform_World,identity);

DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader);

Expand Down Expand Up @@ -485,7 +486,7 @@ void W3DSnowManager::renderAsQuads(RenderInfoClass &rinfo, Int cubeOriginX, Int
}

Matrix4x4 identity(true);
DX8Wrapper::Set_Transform(D3DTS_VIEW,identity);
Renderer::Set_Transform(RenderTransform_View,identity);

DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "WW3D2/dx8indexbuffer.h"
#include "WW3D2/dx8vertexbuffer.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"
#include "WW3D2/statistics.h"
#include "WW3D2/texture.h"
#include "WW3D2/vertmaterial.h"
Expand Down Expand Up @@ -318,7 +319,7 @@ void W3DTerrainParticles::updateSettings()
}
m_shader.Set_Cull_Mode(ShaderClass::CULL_MODE_ENABLE);

DX8Wrapper::Set_World_Identity();
Renderer::Set_World_Identity();
RefCountPtr<VertexMaterialClass> material;
material.Assign_No_Add_Ref(VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE));
DX8Wrapper::Set_Material(material.Peek());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#include "WW3D2/camera.h"
#include "WW3D2/assetmgr.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"
#include "WW3D2/scene.h"
#include "GameLogic/TerrainLogic.h"
#include "GameLogic/Object.h"
Expand Down Expand Up @@ -906,7 +907,7 @@ Try improving the fit to vertical surfaces like cliffs.

trackStartIndex=0;
mod=m_usedModules;
DX8Wrapper::Set_Transform(D3DTS_WORLD,mod->Transform);
Renderer::Set_Transform(RenderTransform_World,mod->Transform);
while (mod)
{
if (mod->m_activeEdgeCount >= 2 && mod->Is_Really_Visible())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ enum
#include "W3DDevice/GameClient/W3DProjectedShadow.h"
#include "WW3D2/camera.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"
#include "WW3D2/dx8renderer.h"
#include "WW3D2/matinfo.h"
#include "WW3D2/mesh.h"
Expand Down Expand Up @@ -1630,7 +1631,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD
DX8Wrapper::Set_Vertex_Buffer(vb_access);

Matrix3D tm(1);
DX8Wrapper::Set_Transform(D3DTS_WORLD,tm);
Renderer::Set_Transform(RenderTransform_World,tm);

DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1788,7 +1788,7 @@ void WaterRenderObjClass::drawSea(RenderInfoClass & rinfo)
matWW3D._23=1.0f;
matWW3D._44=1.0f;

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform); //position the water surface
Renderer::Set_Transform(RenderTransform_World,Transform); //position the water surface
DX8Wrapper::Set_Texture(0,nullptr); //we'll be setting our own textures, so reset W3D
DX8Wrapper::Set_Texture(1,nullptr); //we'll be setting our own textures, so reset W3D

Expand Down Expand Up @@ -2108,7 +2108,7 @@ void WaterRenderObjClass::renderSky()

Matrix3D tm(1);
tm.Set_Translation(Vector3(0,0,0));
DX8Wrapper::Set_Transform(D3DTS_WORLD,tm);
Renderer::Set_Transform(RenderTransform_World,tm);

DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts
}
Expand Down Expand Up @@ -2150,7 +2150,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat)
tm.Adjust_Translation(Vector3(SKYBODY_X,SKYBODY_Y,SKYBODY_HEIGHT));


DX8Wrapper::Set_Transform(D3DTS_WORLD,tm);
Renderer::Set_Transform(RenderTransform_World,tm);


VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE);
Expand Down Expand Up @@ -2359,7 +2359,7 @@ void WaterRenderObjClass::renderWaterMesh()

m_vertexBufferD3D->Unlock();

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform); //position the water surface
Renderer::Set_Transform(RenderTransform_World,Transform); //position the water surface
DX8Wrapper::Set_Material(m_meshVertexMaterialClass);

ShaderClass::CullModeType oldCullMode=m_shaderClass.Get_Cull_Mode();
Expand Down Expand Up @@ -2890,7 +2890,7 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig)

Matrix3D tm(1);

DX8Wrapper::Set_Transform(D3DTS_WORLD,tm); //position the water surface
Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);
DX8Wrapper::Set_Texture(0,m_riverTexture); //set to blue
Expand Down Expand Up @@ -3254,7 +3254,7 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4])

Matrix3D tm(1);

DX8Wrapper::Set_Transform(D3DTS_WORLD,tm); //position the water surface
Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface
DX8Wrapper::Set_Index_Buffer(ib_access,0);
DX8Wrapper::Set_Vertex_Buffer(vb_access);

Expand Down Expand Up @@ -3419,7 +3419,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat)
Matrix3D tm(1);
//set position of skybody in world
// tm.Set_Translation(Vector3(40,0,0));
DX8Wrapper::Set_Transform(D3DTS_WORLD,tm);
Renderer::Set_Transform(RenderTransform_World,tm);

DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
#include "WW3D2/camera.h"
#include "WW3D2/assetmgr.h"
#include "WW3D2/dx8wrapper.h"
#include "WW3D2/Renderer.h"

//number of vertex pages allocated - allows double buffering of vertex updates.
//while one is being rendered, another is being updated. Improves HW parallelism.
Expand Down Expand Up @@ -900,7 +901,7 @@ Try improving the fit to vertical surfaces like cliffs.
diffuseLight=REAL_TO_INT(shadeB) | (REAL_TO_INT(shadeG) << 8) | (REAL_TO_INT(shadeR) << 16);

Matrix3D tm(1); ///set to identity
DX8Wrapper::Set_Transform(D3DTS_WORLD,tm); //position the water surface
Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface

DX8Wrapper::Set_Material(m_vertexMaterialClass);
DX8Wrapper::Set_Shader(m_shaderClass);
Expand Down
45 changes: 45 additions & 0 deletions Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,21 @@
#include "WW3D2/lightenvironment.h"
#include "WWDebug/wwdebug.h"

static D3DTRANSFORMSTATETYPE To_D3D_Transform(RenderTransform transform)
{
switch (transform)
{
case RenderTransform_World:
return D3DTS_WORLD;
case RenderTransform_View:
return D3DTS_VIEW;
case RenderTransform_Projection:
return D3DTS_PROJECTION;
}
WWASSERT(0);
return D3DTS_WORLD;
}

static bool Initialized = false;
static bool Lite = false;

Expand Down Expand Up @@ -164,6 +179,36 @@ void Renderer::Invalidate_Cached_Render_States()
DX8Wrapper::Invalidate_Cached_Render_States();
}

void Renderer::Set_Transform(RenderTransform transform, const Matrix4x4 & m)
{
DX8Wrapper::Set_Transform(To_D3D_Transform(transform), m);
}

void Renderer::Set_Transform(RenderTransform transform, const Matrix3D & m)
{
DX8Wrapper::Set_Transform(To_D3D_Transform(transform), m);
}

void Renderer::Get_Transform(RenderTransform transform, Matrix4x4 & m)
{
DX8Wrapper::Get_Transform(To_D3D_Transform(transform), m);
}

void Renderer::Set_World_Identity()
{
DX8Wrapper::Set_World_Identity();
}

void Renderer::Set_View_Identity()
{
DX8Wrapper::Set_View_Identity();
}

void Renderer::Set_Projection_Transform_With_Z_Bias(const Matrix4x4 & matrix, float znear, float zfar)
{
DX8Wrapper::Set_Projection_Transform_With_Z_Bias(matrix, znear, zfar);
}

void Renderer::Set_Ambient(const Vector3 & color)
{
DX8Wrapper::Set_Ambient(color);
Expand Down
16 changes: 16 additions & 0 deletions Core/Libraries/Source/WWVegas/WW3D2/Renderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
// WW3D2 header graph. All W3D classes below are passed by pointer or reference.

class LightEnvironmentClass;
class Matrix3D;
class Matrix4x4;
class Vector3;

struct RenderViewport
Expand All @@ -41,6 +43,13 @@ struct RenderViewport
float max_z;
};

enum RenderTransform
{
RenderTransform_World,
RenderTransform_View,
RenderTransform_Projection
};

// The interface holds only the methods that callers route through. The rest of
// the DX8Wrapper API is called directly.

Expand Down Expand Up @@ -75,6 +84,13 @@ class Renderer
static void Set_Viewport(const RenderViewport & viewport);
static void Invalidate_Cached_Render_States();

static void Set_Transform(RenderTransform transform, const Matrix4x4 & m);
static void Set_Transform(RenderTransform transform, const Matrix3D & m);
static void Get_Transform(RenderTransform transform, Matrix4x4 & m);
static void Set_World_Identity();
static void Set_View_Identity();
static void Set_Projection_Transform_With_Z_Bias(const Matrix4x4 & matrix, float znear, float zfar);

static void Set_Ambient(const Vector3 & color);
static void Set_Light_Environment(LightEnvironmentClass * light_env);
};
5 changes: 3 additions & 2 deletions Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@

#include "dx8renderer.h"
#include "dx8wrapper.h"
#include "Renderer.h"
#include "dx8polygonrenderer.h"
#include "dx8vertexbuffer.h"
#include "dx8indexbuffer.h"
Expand Down Expand Up @@ -1852,11 +1853,11 @@ void DX8TextureCategoryClass::Render()

if (identity) {
SNAPSHOT_SAY(("Set_World_Identity"));
DX8Wrapper::Set_World_Identity();
Renderer::Set_World_Identity();
}
else {
SNAPSHOT_SAY(("Set_World_Transform"));
DX8Wrapper::Set_Transform(D3DTS_WORLD,*world_transform);
Renderer::Set_Transform(RenderTransform_World,*world_transform);
}


Expand Down
3 changes: 2 additions & 1 deletion Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include "dx8vertexbuffer.h"
#include "dx8indexbuffer.h"
#include "dx8wrapper.h"
#include "Renderer.h"
#include "sortingrenderer.h"
#include "rinfo.h"
#include "camera.h"
Expand Down Expand Up @@ -432,7 +433,7 @@ void DynamicMeshClass::Render(RenderInfoClass & rinfo)
const FrustumClass & frustum = rinfo.Camera.Get_Frustum();

if (CollisionMath::Overlap_Test(frustum, Get_Bounding_Box()) != CollisionMath::OUTSIDE) {
DX8Wrapper::Set_Transform(D3DTS_WORLD, Transform);
Renderer::Set_Transform(RenderTransform_World, Transform);
Model->Render(rinfo);
}
}
Expand Down
3 changes: 2 additions & 1 deletion Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
#include "ww3d.h"
#include "rinfo.h"
#include "dx8wrapper.h"
#include "Renderer.h"
#include "dx8vertexbuffer.h"
#include "dx8indexbuffer.h"
#include "dx8fvf.h"
Expand Down Expand Up @@ -273,7 +274,7 @@ void Line3DClass::Render(RenderInfoClass & rinfo)
DX8Wrapper::Set_Material(vm);
REF_PTR_RELEASE(vm);

DX8Wrapper::Set_Transform(D3DTS_WORLD,Transform);
Renderer::Set_Transform(RenderTransform_World,Transform);

DynamicVBAccessClass vb(BUFFER_TYPE_DYNAMIC_DX8,dynamic_fvf_type,8);
{
Expand Down
Loading