From 4241619b83e6668db441141a57732fe2d7c9e371 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 07:54:01 -0400 Subject: [PATCH 1/6] refactor(ww3d2): Route lights and fog via Renderer --- .../Source/W3DDevice/GameClient/FlatHeightMap.cpp | 2 +- .../Source/W3DDevice/GameClient/HeightMap.cpp | 2 +- .../W3DDevice/GameClient/Water/W3DWater.cpp | 8 ++++---- .../Source/WWVegas/WW3D2/Backend/DX8Backend.cpp | 15 +++++++++++++++ Core/Libraries/Source/WWVegas/WW3D2/Renderer.h | 4 ++++ .../Source/WWVegas/WW3D2/dx8renderer.cpp | 2 +- .../Source/W3DDevice/GameClient/W3DScene.cpp | 2 +- .../Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp | 2 +- .../Code/Libraries/Source/WWVegas/WW3D2/scene.cpp | 12 ++++++------ 9 files changed, 34 insertions(+), 15 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp index dd7c77732bc..659579c7c29 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp @@ -486,7 +486,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) } #endif - DX8Wrapper::Set_Light_Environment(rinfo.light_environment); + Renderer::Set_Light_Environment(rinfo.light_environment); // Force shaders to update. m_stageTwoTexture->restore(); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index 849035dcc13..0a008cfd7c0 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1922,7 +1922,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) } #endif - DX8Wrapper::Set_Light_Environment(rinfo.light_environment); + Renderer::Set_Light_Environment(rinfo.light_environment); // Force shaders to update. m_stageTwoTexture->restore(); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp index b2e4e86aabc..ecb56bc1cbf 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp @@ -2377,10 +2377,10 @@ void WaterRenderObjClass::renderWaterMesh() DX8Wrapper::Set_Texture(0,setting->waterTexture); DX8Wrapper::Set_Texture(1,setting->waterTexture); - DX8Wrapper::Set_Light(0,*m_meshLight); - DX8Wrapper::Set_Light(1,nullptr); - DX8Wrapper::Set_Light(2,nullptr); - DX8Wrapper::Set_Light(3,nullptr); + Renderer::Set_Light(0,*m_meshLight); + Renderer::Clear_Light(1); + Renderer::Clear_Light(2); + Renderer::Clear_Light(3); /* DX8Wrapper::Set_DX8_Render_State(D3DRS_AMBIENT,0); //turn off scene ambient DX8Wrapper::Set_DX8_Render_State(D3DRS_SPECULARENABLE,TRUE); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index 99497bf2a2e..66e812e9a4c 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -218,3 +218,18 @@ void Renderer::Set_Light_Environment(LightEnvironmentClass * light_env) { DX8Wrapper::Set_Light_Environment(light_env); } + +void Renderer::Set_Light(unsigned index, const LightClass & light) +{ + DX8Wrapper::Set_Light(index, light); +} + +void Renderer::Clear_Light(unsigned index) +{ + DX8Wrapper::Set_Light(index, nullptr); +} + +void Renderer::Set_Fog(bool enable, const Vector3 & color, float start, float end) +{ + DX8Wrapper::Set_Fog(enable, color, start, end); +} diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index f81a2b48d74..8f90892f7d8 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -28,6 +28,7 @@ // Forward declarations keep this header includable without pulling in the full // WW3D2 header graph. All W3D classes below are passed by pointer or reference. +class LightClass; class LightEnvironmentClass; class Matrix3D; class Matrix4x4; @@ -93,4 +94,7 @@ class Renderer static void Set_Ambient(const Vector3 & color); static void Set_Light_Environment(LightEnvironmentClass * light_env); + static void Set_Light(unsigned index, const LightClass & light); + static void Clear_Light(unsigned index); + static void Set_Fog(bool enable, const Vector3 & color, float start, float end); }; diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp index a1a6b6a1056..10b17cea73a 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp @@ -1805,7 +1805,7 @@ void DX8TextureCategoryClass::Render() LightEnvironmentClass * lenv = mesh->Get_Lighting_Environment(); if (lenv != nullptr) { SNAPSHOT_SAY(("LightEnvironment, lights: %d",lenv->Get_Light_Count())); - DX8Wrapper::Set_Light_Environment(lenv); + Renderer::Set_Light_Environment(lenv); } else { SNAPSHOT_SAY(("No light environment")); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index 53de7a8bb57..d7086c2821a 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -972,7 +972,7 @@ void RTS3DScene::updatePlayerColorPasses() void RTS3DScene::Render(RenderInfoClass & rinfo) { //USE_PERF_TIMER(NonTerrainRender) - DX8Wrapper::Set_Fog(FogEnabled, FogColor, FogStart, FogEnd); + Renderer::Set_Fog(FogEnabled, FogColor, FogStart, FogEnd); //Override the behind building selection if it's not available on current hardware (needs stencil). TheWritableGlobalData->m_enableBehindBuildingMarkers = TheWritableGlobalData->m_enableBehindBuildingMarkers && Renderer::Has_Stencil(); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp index eb60894d322..9545580b3de 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp @@ -828,7 +828,7 @@ void MeshClass::Render_Material_Pass(MaterialPassClass * pass,IndexBufferClass * Vector3 oldEmissive(-1,-1,-1); if (LightEnvironment != nullptr) { - DX8Wrapper::Set_Light_Environment(LightEnvironment); + Renderer::Set_Light_Environment(LightEnvironment); } if (Model->Get_Flag(MeshModelClass::SKIN)) { diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/scene.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/scene.cpp index 3e091867147..1e7a5e4c535 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/scene.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/scene.cpp @@ -198,7 +198,7 @@ void SceneClass::Render(RenderInfoClass & rinfo) // Any stuff that needs to get done before anything else Pre_Render_Processing(rinfo); - DX8Wrapper::Set_Fog(FogEnabled, FogColor, FogStart, FogEnd); + Renderer::Set_Fog(FogEnabled, FogColor, FogStart, FogEnd); if (Get_Extra_Pass_Polygon_Mode()==EXTRA_PASS_DISABLE) { Customized_Render(rinfo); @@ -481,10 +481,10 @@ void SimpleSceneClass::Customized_Render(RenderInfoClass & rinfo) // derived classes should use light environment WWASSERT(rinfo.light_environment==nullptr); // Turn off lights in case we have none - DX8Wrapper::Set_Light(0,nullptr); - DX8Wrapper::Set_Light(1,nullptr); - DX8Wrapper::Set_Light(2,nullptr); - DX8Wrapper::Set_Light(3,nullptr); + Renderer::Clear_Light(0); + Renderer::Clear_Light(1); + Renderer::Clear_Light(2); + Renderer::Clear_Light(3); // (gth) WWShade only works with light environments. We need to upgrade LightEnvironment to // support real point lights, etc. It will likely just evolve into "the n most important" lights @@ -495,7 +495,7 @@ void SimpleSceneClass::Customized_Render(RenderInfoClass & rinfo) { if (count<4) { - DX8Wrapper::Set_Light(count,*(LightClass*)it.Peek_Obj()); + Renderer::Set_Light(count,*(LightClass*)it.Peek_Obj()); } else { // Simple scene only supports 4 global lights From a5d1f219e3abe2ae8fc4d15bc912554ccd042089 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 07:56:16 -0400 Subject: [PATCH 2/6] refactor(ww3d2): Route shader and material state via Renderer --- .../W3DDevice/GameClient/BaseHeightMap.cpp | 10 +- .../W3DDevice/GameClient/FlatHeightMap.cpp | 14 +-- .../Source/W3DDevice/GameClient/HeightMap.cpp | 34 +++--- .../W3DDevice/GameClient/W3DDebugIcons.cpp | 8 +- .../Source/W3DDevice/GameClient/W3DScorch.cpp | 3 +- .../W3DDevice/GameClient/W3DShaderManager.cpp | 102 +++++++++--------- .../Source/W3DDevice/GameClient/W3DSmudge.cpp | 12 +-- .../Source/W3DDevice/GameClient/W3DSnow.cpp | 6 +- .../W3DDevice/GameClient/W3DTerrainTracks.cpp | 4 +- .../W3DDevice/GameClient/W3DTreeBuffer.cpp | 12 +-- .../W3DDevice/GameClient/Water/W3DWater.cpp | 44 ++++---- .../GameClient/Water/W3DWaterTracks.cpp | 8 +- .../WWVegas/WW3D2/Backend/DX8Backend.cpp | 15 +++ .../Libraries/Source/WWVegas/WW3D2/Renderer.h | 6 ++ .../Source/WWVegas/WW3D2/dx8renderer.cpp | 18 ++-- .../Source/WWVegas/WW3D2/dynamesh.cpp | 12 +-- .../Libraries/Source/WWVegas/WW3D2/line3d.cpp | 4 +- .../Source/WWVegas/WW3D2/matpass.cpp | 5 +- .../Source/WWVegas/WW3D2/pointgr.cpp | 8 +- .../Source/WWVegas/WW3D2/ringobj.cpp | 4 +- .../Source/WWVegas/WW3D2/seglinerenderer.cpp | 4 +- .../Source/WWVegas/WW3D2/sortingrenderer.cpp | 6 +- .../Source/WWVegas/WW3D2/sphereobj.cpp | 4 +- .../Source/WWVegas/WW3D2/streakRender.cpp | 4 +- Core/Tools/W3DView/ScreenCursor.cpp | 5 +- .../GameClient/Shadow/W3DProjectedShadow.cpp | 16 +-- .../GameClient/Shadow/W3DVolumetricShadow.cpp | 16 +-- .../W3DDevice/GameClient/W3DBibBuffer.cpp | 3 +- .../W3DDevice/GameClient/W3DBridgeBuffer.cpp | 15 +-- .../W3DDevice/GameClient/W3DInGameUI.cpp | 4 +- .../W3DDevice/GameClient/W3DRoadBuffer.cpp | 3 +- .../Source/W3DDevice/GameClient/W3DScene.cpp | 6 +- .../W3DDevice/GameClient/W3DStatusCircle.cpp | 10 +- .../Source/WWVegas/WW3D2/boxrobj.cpp | 4 +- .../Libraries/Source/WWVegas/WW3D2/dazzle.cpp | 8 +- .../Source/WWVegas/WW3D2/decalmsh.cpp | 8 +- .../Source/WWVegas/WW3D2/linegrp.cpp | 4 +- .../Source/WWVegas/WW3D2/render2d.cpp | 8 +- .../Tools/WorldBuilder/src/DrawObject.cpp | 20 ++-- 39 files changed, 252 insertions(+), 225 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp index 5b4e4aa683d..a973bdb8193 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp @@ -2313,9 +2313,9 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera) ShaderClass unlitShader=ShaderClass::_PresetOpaque2DShader; unlitShader.Set_Depth_Compare(ShaderClass::PASS_LEQUAL); - DX8Wrapper::Set_Shader(unlitShader); + Renderer::Set_Shader(unlitShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); DX8Wrapper::Set_Texture(0,m_destAlphaTexture); Renderer::Set_Transform(RenderTransform_World,Matrix3D(true)); @@ -2499,9 +2499,9 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera) ShaderClass unlitShader=ShaderClass::_PresetOpaque2DShader; unlitShader.Set_Depth_Compare(ShaderClass::PASS_LEQUAL); - DX8Wrapper::Set_Shader(unlitShader); + Renderer::Set_Shader(unlitShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); DX8Wrapper::Set_Texture(0,m_destAlphaTexture); Renderer::Set_Transform(RenderTransform_World,Matrix3D(true)); @@ -2809,7 +2809,7 @@ void BaseHeightMapRenderObjClass::renderTrees(CameraClass * camera) if (Scene==nullptr) return; if (m_treeBuffer) { Renderer::Set_Transform(RenderTransform_World,Transform); - DX8Wrapper::Set_Material(m_vertexMaterialClass); + Renderer::Set_Material(m_vertexMaterialClass); RTS3DScene *pMyScene = (RTS3DScene *)Scene; RefRenderObjListIterator pDynamicLightsIterator(pMyScene->getDynamicLights()); m_treeBuffer->drawTrees(camera, &pDynamicLightsIterator); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp index 659579c7c29..5af8fa801a4 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp @@ -497,8 +497,8 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) Renderer::Set_Transform(RenderTransform_World,Transform); - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); st=W3DShaderManager::ST_FLAT_TERRAIN_BASE; //set default shader @@ -550,7 +550,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) for (pass=0; passgetDynamicLights()); @@ -616,7 +616,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) DX8Wrapper::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); m_bridgeBuffer->drawBridges(&rinfo.Camera, m_disableTextures, m_stageTwoTexture); @@ -624,7 +624,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) TheTerrainTracksRenderObjClassSystem->flush(); ShaderClass::Invalidate(); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); m_waypointBuffer->drawWaypoints(rinfo); @@ -635,7 +635,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) DX8Wrapper::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); - DX8Wrapper::Set_Material(nullptr); + Renderer::Set_Material(nullptr); } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index 0a008cfd7c0..4a3aa35a9b3 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1960,11 +1960,11 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) { //wireframe pass //Set to vertex diffuse lighting - DX8Wrapper::Set_Material(m_vertexMaterialClass); + Renderer::Set_Material(m_vertexMaterialClass); //Set shader to non-textured solid color from vertex - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueSolidShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueSolidShader); devicePasses=1; //one pass solid, next in wireframe. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::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; @@ -1975,8 +1975,8 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) } else { - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); st=W3DShaderManager::ST_TERRAIN_BASE; //set default shader @@ -2029,7 +2029,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) if (!doMultiPassWireFrame) //multi-pass wireframe doesn't use regular shaders. { if (m_disableTextures ) { - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaque2DShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaque2DShader); DX8Wrapper::Set_Texture(0,nullptr); } else { W3DShaderManager::setShader(st, pass); @@ -2043,13 +2043,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(); + Renderer::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(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::_Get_D3D_Device8()->SetStreamSource( 0, m_xformedVertexBuffer[j*m_numVBTilesX+i], @@ -2087,7 +2087,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) ShaderClass::Invalidate(); if (!ShaderClass::Is_Backface_Culling_Inverted()) { - DX8Wrapper::Set_Material(m_vertexMaterialClass); + Renderer::Set_Material(m_vertexMaterialClass); if (Scene) { RTS3DScene *pMyScene = (RTS3DScene *)Scene; RefRenderObjListIterator pDynamicLightsIterator(pMyScene->getDynamicLights()); @@ -2109,7 +2109,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) DX8Wrapper::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); m_bridgeBuffer->drawBridges(&rinfo.Camera, m_disableTextures, doCloud?m_stageTwoTexture:nullptr); @@ -2124,7 +2124,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) } ShaderClass::Invalidate(); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); } else m_bridgeBuffer->drawBridges(&rinfo.Camera, m_disableTextures, m_stageTwoTexture); @@ -2139,7 +2139,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) DX8Wrapper::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); - DX8Wrapper::Set_Material(nullptr); + Renderer::Set_Material(nullptr); } @@ -2161,13 +2161,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(); + Renderer::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(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::_Get_D3D_Device8()->SetStreamSource( 0, m_xformedVertexBuffer[j*m_numVBTilesX+i], @@ -2338,17 +2338,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); + Renderer::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); + Renderer::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); + Renderer::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 diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp index 41f01e4e42b..24382eab53a 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp @@ -216,11 +216,11 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo) // Bool anyVanished = false; if (m_numDebugIcons==0) return; - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); - DX8Wrapper::Set_Material(m_vertexMaterialClass); + Renderer::Set_Material(m_vertexMaterialClass); DX8Wrapper::Set_Texture(0, nullptr); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); Renderer::Set_Transform(RenderTransform_World,Transform); @@ -303,7 +303,7 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo) } } if (numVertex == 0) break; - DX8Wrapper::Set_Shader(ShaderClass(SC_ALPHA)); + Renderer::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 diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp index 1a44e3e8fa4..5a06c69b75e 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp @@ -25,6 +25,7 @@ #include "W3DDevice/GameClient/TerrainTex.h" #include "W3DDevice/GameClient/WorldHeightMap.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" W3DScorch::W3DScorch(bool deduplicateScorches) : m_vertexScorch(nullptr) @@ -124,7 +125,7 @@ void W3DScorch::drawScorches(WorldHeightMap& map) } DX8Wrapper::Set_Index_Buffer(m_indexScorch, 0); DX8Wrapper::Set_Vertex_Buffer(m_vertexScorch); - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); DX8Wrapper::Set_Texture(0, m_scorchTexture); DX8Wrapper::Draw_Triangles(0, m_curNumScorchIndices / 3, 0, m_curNumScorchVertices); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp index d0390f4eaf6..857a40f8ae1 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp @@ -234,15 +234,15 @@ Bool ScreenDefaultFilter::postRender(FilterModes mode, Coord2D &scrollDelta,Bool Int ScreenDefaultFilter::set(FilterModes mode) { VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices return true; } @@ -250,7 +250,7 @@ Int ScreenDefaultFilter::set(FilterModes mode) void ScreenDefaultFilter::reset() { DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } /*========= ScreenBWFilter =============================================================*/ @@ -415,15 +415,15 @@ Int ScreenBWFilter::set(FilterModes mode) } VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices hr=DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBWPixelShader); DX8Wrapper::_Get_D3D_Device8()->SetPixelShaderConstant(0, D3DXVECTOR4(0.3f, 0.59f, 0.11f, 1.0f), 1); @@ -474,7 +474,7 @@ void ScreenBWFilter::reset() { DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(0); //turn off pixel shader - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int ScreenBWFilter::shutdown() @@ -590,8 +590,8 @@ Bool ScreenBWFilterDOT3::postRender(FilterModes mode, Coord2D &scrollDelta,Bool ShaderClass::Invalidate(); //reset DOT3 blend from above. ShaderClass shader=ShaderClass::_PresetAlphaShader; shader.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); - DX8Wrapper::Set_Shader(shader); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Set_Shader(shader); + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices //replace texture alpha with vertex alpha DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG2); @@ -644,15 +644,15 @@ Int ScreenBWFilterDOT3::set(FilterModes mode) } VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices return true; } @@ -662,7 +662,7 @@ Int ScreenBWFilterDOT3::set(FilterModes mode) void ScreenBWFilterDOT3::reset() { DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int ScreenBWFilterDOT3::shutdown() @@ -868,12 +868,12 @@ Int ScreenCrossFadeFilter::set(FilterModes mode) { //rendering a quad with redirected rendering surface VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); DX8Wrapper::Set_Texture(0,nullptr); DX8Wrapper::Set_Texture(1,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); @@ -906,7 +906,7 @@ void ScreenCrossFadeFilter::reset() DX8Wrapper::Set_DX8_Texture_Stage_State( 1, D3DTSS_COLOROP, D3DTOP_DISABLE ); DX8Wrapper::Set_DX8_Texture_Stage_State( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE ); DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int ScreenCrossFadeFilter::shutdown() @@ -1007,7 +1007,7 @@ Bool ScreenMotionBlurFilter::postRender(FilterModes mode, Coord2D &scrollDelta,B DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHABLENDENABLE,false); //draw polygons like this is very inefficient but for only 2 triangles, it's //not worth bothering with index/vertex buffers. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); pDev->SetVertexShader(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1); Coord2D center; @@ -1078,7 +1078,7 @@ Bool ScreenMotionBlurFilter::postRender(FilterModes mode, Coord2D &scrollDelta,B pDev->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, v, sizeof(_TRANS_LIT_TEX_VERTEX)); DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHABLENDENABLE,true); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); { Int limit = m_maxCount; if (m_maxCount>30) limit = 30; @@ -1160,16 +1160,16 @@ Int ScreenMotionBlurFilter::set(FilterModes mode) //rendering a quad with redirected rendering surface motion blurred VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); DX8Wrapper::Set_Texture(1,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices } return TRUE; } @@ -1177,7 +1177,7 @@ Int ScreenMotionBlurFilter::set(FilterModes mode) void ScreenMotionBlurFilter::reset() { DX8Wrapper::_Get_D3D_Device8()->SetTexture(0,nullptr); //previously rendered frame inside this texture - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int ScreenMotionBlurFilter::shutdown() @@ -1220,7 +1220,7 @@ Int ShroudTextureShader::set(Int stage) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. DX8Wrapper::Set_Texture(stage, W3DShaderManager::getShaderTexture(0)); //shroud always stored in texture 0 @@ -1228,14 +1228,14 @@ Int ShroudTextureShader::set(Int stage) { #if defined(RTS_DEBUG) if (TheGlobalData && TheGlobalData->m_fogOfWarOn) - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaSpriteShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaSpriteShader); else - DX8Wrapper::Set_Shader(ShaderClass::_PresetMultiplicativeSpriteShader); + Renderer::Set_Shader(ShaderClass::_PresetMultiplicativeSpriteShader); #else - DX8Wrapper::Set_Shader(ShaderClass::_PresetMultiplicativeSpriteShader); + Renderer::Set_Shader(ShaderClass::_PresetMultiplicativeSpriteShader); #endif } - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::Set_DX8_Texture_Stage_State(stage, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION); DX8Wrapper::Set_DX8_Texture_Stage_State(stage, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2); @@ -1421,15 +1421,15 @@ Int MaskTextureShader::set(Int pass) //force WW3D2 system to set it's states so it won't later overwrite our custom settings. VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. //For now we're always going to project the texture coming from the crossfade effect DX8Wrapper::Set_Texture(0, ScreenCrossFadeFilter::getCurrentMaskTexture()); ShaderClass shader=ShaderClass::_PresetOpaqueShader; shader.Set_Primary_Gradient(ShaderClass::GRADIENT_DISABLE); - DX8Wrapper::Set_Shader(shader); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Set_Shader(shader); + Renderer::Apply_Render_State_Changes(); D3DXMATRIX curView; DX8Wrapper::_Get_DX8_Transform(D3DTS_VIEW, curView); @@ -1653,7 +1653,7 @@ void TerrainShader2Stage::updateNoise2(D3DXMATRIX *destMatrix,D3DXMATRIX *curVie Int TerrainShader2Stage::set(Int pass) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (TheGlobalData && (TheGlobalData->m_bilinearTerrainTex || TheGlobalData->m_trilinearTerrainTex)) { DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); @@ -1824,7 +1824,7 @@ Int TerrainShader8Stage::set(Int pass) if (pass == 0) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); @@ -1930,7 +1930,7 @@ Int TerrainShader8Stage::set(Int pass) DX8Wrapper::Set_DX8_Texture_Stage_State( 2, D3DTSS_ALPHAOP, D3DTOP_DISABLE); DX8Wrapper::Set_DX8_Texture_Stage_State( 3, D3DTSS_COLOROP, D3DTOP_DISABLE); DX8Wrapper::Set_DX8_Texture_Stage_State( 3, D3DTSS_ALPHAOP, D3DTOP_DISABLE); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); terrainShader2Stage.set(2); } @@ -1948,7 +1948,7 @@ void TerrainShader8Stage::reset() DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, nullptr); DX8Wrapper::_Get_D3D_Device8()->SetTexture(1, nullptr); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int TerrainShaderPixelShader::shutdown() @@ -2024,7 +2024,7 @@ Int TerrainShaderPixelShader::init() Int TerrainShaderPixelShader::set(Int pass) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); //setup base pass DX8Wrapper::_Get_D3D_Device8()->SetTexture(0, W3DShaderManager::getShaderTexture(0)->Peek_D3D_Texture()); @@ -2155,7 +2155,7 @@ void TerrainShaderPixelShader::reset() DX8Wrapper::Set_DX8_Texture_Stage_State( 3, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|3); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } ///Cloud layer rendering shader - used for objects similar to terrain which only need the cloud layer. @@ -2307,7 +2307,7 @@ Int RoadShaderPixelShader::set(Int pass) { DX8Wrapper::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); //tell pixel shader which UV set to use for each stage DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_TEXCOORDINDEX, 0 ); @@ -2388,7 +2388,7 @@ void RoadShaderPixelShader::reset() DX8Wrapper::Set_DX8_Texture_Stage_State( 3, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|3); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } Int RoadShader2Stage::init() @@ -2411,7 +2411,7 @@ Int RoadShader2Stage::set(Int pass) //First stage always contains base texture. DX8Wrapper::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); //Force system to apply world/view transforms. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZWRITEENABLE,FALSE); @@ -2897,10 +2897,10 @@ void W3DShaderManager::startRenderToTexture() ShaderClass shader=ShaderClass::_PresetOpaqueSolidShader; shader.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); shader.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); - DX8Wrapper::Set_Shader(shader); + Renderer::Set_Shader(shader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. drawViewport(0x00ffffff | (((Int)(TheWaterTransparency->m_minWaterOpacity*255.0f)) <<24)); @@ -3326,7 +3326,7 @@ void FlatTerrainShader2Stage::reset() Int FlatTerrainShader2Stage::set(Int pass) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (TheGlobalData && (TheGlobalData->m_bilinearTerrainTex || TheGlobalData->m_trilinearTerrainTex)) { DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); @@ -3608,7 +3608,7 @@ Int FlatTerrainShaderPixelShader::set(Int pass) DX8Wrapper::Set_Texture(0, W3DShaderManager::getShaderTexture(2)); DX8Wrapper::Set_Texture(1, W3DShaderManager::getShaderTexture(2)); //force WW3D2 system to set it's states so it won't later overwrite our custom settings. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); @@ -3747,7 +3747,7 @@ Int FlatTerrainShaderPixelShader::set(Int pass) DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise2PixelShader); } DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ALPHABLENDENABLE, false); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::_Get_D3D_Device8()->SetTexture(curStage, W3DShaderManager::getShaderTexture(3)->Peek_D3D_Texture()); return TRUE; } @@ -3775,7 +3775,7 @@ void FlatTerrainShaderPixelShader::reset() DX8Wrapper::Set_DX8_Texture_Stage_State( 3, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_PASSTHRU|3); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp index da66895ef4c..e18ef6b6d2d 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp @@ -223,15 +223,15 @@ Bool W3DSmudgeManager::testHardwareSupport() } VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. ShaderClass shader=ShaderClass::_PresetOpaqueShader; shader.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); shader.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); - DX8Wrapper::Set_Shader(shader); + Renderer::Set_Shader(shader); DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices struct _TRANS_LIT_TEX_VERTEX { Vector4 p; @@ -453,7 +453,7 @@ void W3DSmudgeManager::render(RenderInfoClass &rinfo) DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); //DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueSpriteShader); - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); DX8Wrapper::Set_Texture(0,m_backgroundTexture); //Need these states in case texture is non-power-of-2 @@ -464,9 +464,9 @@ void W3DSmudgeManager::render(RenderInfoClass &rinfo) DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_MIPFILTER, D3DTEXF_NONE); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); //Disable reading texture alpha since it's undefined. //DX8Wrapper::Set_DX8_Texture_Stage_State(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp index 1cab794ddfb..3858c941ecc 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp @@ -397,10 +397,10 @@ void W3DSnowManager::render(RenderInfoClass &rinfo) Matrix4x4 identity(true); Renderer::Set_Transform(RenderTransform_World,identity); - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //make sure we have all the resources we need @@ -420,7 +420,7 @@ void W3DSnowManager::render(RenderInfoClass &rinfo) Vector3 snowCenter; - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); // Set the render states for using point sprites DX8Wrapper::Set_DX8_Render_State( D3DRS_POINTSPRITEENABLE, TRUE ); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp index 2d68bdb127c..cb33149db8d 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp @@ -900,8 +900,8 @@ Try improving the fit to vertical surfaces like cliffs. if (m_edgesToFlush >= 2) { ShaderClass::Invalidate(); - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBuffer); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp index 9ebc508789c..e34aa7392d6 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp @@ -1574,7 +1574,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD //#define DEBUG_TEXTURE 1 #ifdef DEBUG_TEXTURE // Draw the combined texture for debugging. jba. [4/21/2003] // Setup the vertex buffer, shader & texture. - DX8Wrapper::Set_Shader(detailAlphaShader); + Renderer::Set_Shader(detailAlphaShader); DX8Wrapper::Set_Texture(0,m_treeTexture); DynamicIBAccessClass ib_access(BUFFER_TYPE_DYNAMIC_DX8, 6); //draw an infinite sky plane @@ -1640,16 +1640,16 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD if (m_curNumTreeIndices[0] == 0) { return; } - DX8Wrapper::Set_Shader(detailAlphaShader); + Renderer::Set_Shader(detailAlphaShader); DX8Wrapper::Set_Texture(0,m_treeTexture); DX8Wrapper::Set_Texture(1,nullptr); DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXCOORDINDEX, 0); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_TEXCOORDINDEX, 1); // Draw all the trees. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); W3DShaderManager::setShroudTex(1); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (m_dwTreeVertexShader) { D3DXMATRIX matProj, matView, matWorld; @@ -1718,7 +1718,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD DX8Wrapper::Set_Index_Buffer(m_indexTree[bNdx],0); DX8Wrapper::Set_Vertex_Buffer(m_vertexTree[bNdx]); // Render the waving grass - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (m_dwTreeVertexShader) { DX8Wrapper::_Get_D3D_Device8()->SetVertexShader(m_dwTreeVertexShader); DX8Wrapper::_Get_D3D_Device8()->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0); @@ -1730,7 +1730,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD DX8Wrapper::Set_Vertex_Shader(DX8_FVF_XYZNDUV1); DX8Wrapper::Set_Pixel_Shader(0); - DX8Wrapper::Invalidate_Cached_Render_States(); //code above mucks around with W3D states so make sure we reset + Renderer::Invalidate_Cached_Render_States(); //code above mucks around with W3D states so make sure we reset } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp index ecb56bc1cbf..5fa9ad74c40 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp @@ -206,12 +206,12 @@ static Bool wireframeForDebug = 0; void WaterRenderObjClass::setupJbaWaterShader() { if (!TheWaterTransparency->m_additiveBlend) - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); else - DX8Wrapper::Set_Shader(ShaderClass::_PresetAdditiveShader); + Renderer::Set_Shader(ShaderClass::_PresetAdditiveShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); m_riverTexture->Get_Filter().Set_Mag_Filter(TextureFilterClass::FILTER_TYPE_BEST); m_riverTexture->Get_Filter().Set_Min_Filter(TextureFilterClass::FILTER_TYPE_BEST); @@ -221,7 +221,7 @@ void WaterRenderObjClass::setupJbaWaterShader() // Setting *setting=&m_settings[m_tod]; - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ALPHAOP, D3DTOP_ADD ); if (!m_riverAlphaEdge->Is_Initialized()) m_riverAlphaEdge->Init(); @@ -1718,8 +1718,8 @@ void WaterRenderObjClass::Render(RenderInfoClass & rinfo) //Clean up after any pixel shaders. //Force render state apply so that the null texture gets applied to D3D, thus releasing shroud reference count. - DX8Wrapper::Apply_Render_State_Changes(); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Apply_Render_State_Changes(); + Renderer::Invalidate_Cached_Render_States(); if (m_waterTrackSystem) m_waterTrackSystem->flush(rinfo); @@ -1793,7 +1793,7 @@ void WaterRenderObjClass::drawSea(RenderInfoClass & rinfo) DX8Wrapper::Set_Texture(1,nullptr); //we'll be setting our own textures, so reset W3D - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices Vector3 camTran; @@ -1946,7 +1946,7 @@ void WaterRenderObjClass::drawSea(RenderInfoClass & rinfo) m_pDev->SetPixelShader(0); //turn off pixel shader m_pDev->SetVertexShader(DX8_FVF_XYZDUV1); //turn off custom vertex shader - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); if (TheTerrainRenderObject->getShroud()) { @@ -2054,7 +2054,7 @@ void WaterRenderObjClass::renderSky() VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); ShaderClass m_shader2=ShaderClass::_PresetOpaqueShader; @@ -2062,7 +2062,7 @@ void WaterRenderObjClass::renderSky() m_shader2.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); //no need to check against z-buffer, sky always rendered first. m_shader2.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); //sky is always behind everything so no need to update z-buffer - DX8Wrapper::Set_Shader(m_shader2); + Renderer::Set_Shader(m_shader2); DX8Wrapper::Set_Texture(0,setting->skyTexture); @@ -2154,7 +2154,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); ShaderClass m_shader2=ShaderClass::_PresetAlphaShader; @@ -2162,7 +2162,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) m_shader2.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); //no need to check against z-buffer, sky always rendered first. m_shader2.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); //sky is always behind everything so no need to update z-buffer - DX8Wrapper::Set_Shader(m_shader2); + Renderer::Set_Shader(m_shader2); // DX8Wrapper::Set_Shader(ShaderClass::/*_PresetAdditiveShader*//*_PresetOpaqueShader*/_PresetAlphaShader); @@ -2360,7 +2360,7 @@ void WaterRenderObjClass::renderWaterMesh() m_vertexBufferD3D->Unlock(); Renderer::Set_Transform(RenderTransform_World,Transform); //position the water surface - DX8Wrapper::Set_Material(m_meshVertexMaterialClass); + Renderer::Set_Material(m_meshVertexMaterialClass); ShaderClass::CullModeType oldCullMode=m_shaderClass.Get_Cull_Mode(); @@ -2369,7 +2369,7 @@ void WaterRenderObjClass::renderWaterMesh() m_shaderClass.Set_Cull_Mode(ShaderClass::CULL_MODE_ENABLE); //water should be visible from both sides - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Shader(m_shaderClass); #if 1 setupFlatWaterShader(); #else @@ -2387,7 +2387,7 @@ void WaterRenderObjClass::renderWaterMesh() DX8Wrapper::Set_DX8_Render_State(D3DRS_LOCALVIEWER,TRUE); */ - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices #endif @@ -2699,7 +2699,7 @@ Real WaterRenderObjClass::getWaterHeight(Real x, Real y) //------------------------------------------------------------------------------------------------- void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig) { - DX8Wrapper::Invalidate_Cached_Render_States(); ///@todo: Figure out why rivers don't draw without reset of all states. + Renderer::Invalidate_Cached_Render_States(); ///@todo: Figure out why rivers don't draw without reset of all states. Int rectangleCount = pTrig->getNumPoints()/2; rectangleCount--; @@ -2933,18 +2933,18 @@ void WaterRenderObjClass::setupFlatWaterShader() DX8Wrapper::Set_Texture(0,m_riverTexture); if (!TheWaterTransparency->m_additiveBlend) - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); else - DX8Wrapper::Set_Shader(ShaderClass::_PresetAdditiveShader); + Renderer::Set_Shader(ShaderClass::_PresetAdditiveShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); m_riverTexture->Get_Filter().Set_Mag_Filter(TextureFilterClass::FILTER_TYPE_BEST); m_riverTexture->Get_Filter().Set_Min_Filter(TextureFilterClass::FILTER_TYPE_BEST); m_riverTexture->Get_Filter().Set_Mip_Mapping(TextureFilterClass::FILTER_TYPE_BEST); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices //Setup shroud to render in same pass as water if (m_trapezoidWaterPixelShader) @@ -3369,9 +3369,9 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) V3=-vRight-vUp; VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Shader(ShaderClass::/*_PresetAdditiveShader*//*_PresetOpaqueShader*/_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::/*_PresetAdditiveShader*//*_PresetOpaqueShader*/_PresetAlphaShader); // DX8Wrapper::Set_Texture(0,setting->skyBodyTexture); DX8Wrapper::Set_Texture(0,m_alphaClippingTexture); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp index 8363e0893ed..1d7f6a2b2f5 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp @@ -903,13 +903,13 @@ Try improving the fit to vertical surfaces like cliffs. Matrix3D tm(1); ///set to identity Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_Vertex_Buffer(m_vertexBuffer); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZBIAS,8); //Force apply of render states so we can override them. - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (TheTerrainRenderObject->getShroud()) { @@ -1323,7 +1323,7 @@ void TestWaterUpdate() Real ydiff=terrainPointEnd.y - terrainPointStart.y; if (sqrt (xdiff * xdiff + ydiff * ydiff) <= waveTypeInfo[currentWaveType].m_finalWidth) { TheDisplay->drawLine(mouseAnchor.x, mouseAnchor.y, screenPoint.x, screenPoint.y,1,0xffccccff); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); ShaderClass::Invalidate(); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index 66e812e9a4c..bbb4484b878 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -179,6 +179,21 @@ void Renderer::Invalidate_Cached_Render_States() DX8Wrapper::Invalidate_Cached_Render_States(); } +void Renderer::Set_Shader(const ShaderClass & shader) +{ + DX8Wrapper::Set_Shader(shader); +} + +void Renderer::Set_Material(const VertexMaterialClass * material) +{ + DX8Wrapper::Set_Material(material); +} + +void Renderer::Apply_Render_State_Changes() +{ + DX8Wrapper::Apply_Render_State_Changes(); +} + void Renderer::Set_Transform(RenderTransform transform, const Matrix4x4 & m) { DX8Wrapper::Set_Transform(To_D3D_Transform(transform), m); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index 8f90892f7d8..32a3f7bb77b 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -32,7 +32,9 @@ class LightClass; class LightEnvironmentClass; class Matrix3D; class Matrix4x4; +class ShaderClass; class Vector3; +class VertexMaterialClass; struct RenderViewport { @@ -85,6 +87,10 @@ class Renderer static void Set_Viewport(const RenderViewport & viewport); static void Invalidate_Cached_Render_States(); + static void Set_Shader(const ShaderClass & shader); + static void Set_Material(const VertexMaterialClass * material); + static void Apply_Render_State_Changes(); + 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); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp index 10b17cea73a..0e82ed825df 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp @@ -1696,7 +1696,7 @@ void DX8TextureCategoryClass::Render() SNAPSHOT_SAY(("Set_Material(%s)",Peek_Material() ? Peek_Material()->Get_Name() : "null")); VertexMaterialClass *vmaterial=(VertexMaterialClass *)Peek_Material(); //ugly cast from const but we'll restore it after changes so okay. -MW - DX8Wrapper::Set_Material(vmaterial); + Renderer::Set_Material(vmaterial); SNAPSHOT_SAY(("Set_Shader(%x)",Get_Shader().Get_Bits())); ShaderClass theShader = Get_Shader(); @@ -1709,16 +1709,16 @@ void DX8TextureCategoryClass::Render() //this will cause sorting errors on this mesh. //theAlphaShader.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); - DX8Wrapper::Set_Shader(theShader); + Renderer::Set_Shader(theShader); if (m_gForceMultiply && theShader.Get_Dst_Blend_Func() == ShaderClass::DSTBLEND_ZERO) { theShader.Set_Dst_Blend_Func(ShaderClass::DSTBLEND_SRC_COLOR); theShader.Set_Src_Blend_Func(ShaderClass::SRCBLEND_ZERO); - DX8Wrapper::Set_Shader(theShader); + Renderer::Set_Shader(theShader); //VertexMaterialClass *material = VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); //DX8Wrapper::Set_Material(material); //REF_PTR_RELEASE(material); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::Set_DX8_Render_State(D3DRS_SRCBLEND,D3DBLEND_DESTCOLOR); } @@ -1906,8 +1906,8 @@ void DX8TextureCategoryClass::Render() theAlphaShader = theShader; //keep using additive blending. } vmaterial->Set_Opacity(mesh->Get_Alpha_Override()); - DX8Wrapper::Set_Shader(theAlphaShader); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Set_Shader(theAlphaShader); + Renderer::Apply_Render_State_Changes(); DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHAREF,(int)((float)0x60*mesh->Get_Alpha_Override())); renderer->Render(mesh->Get_Base_Vertex_Offset()); @@ -1915,7 +1915,7 @@ void DX8TextureCategoryClass::Render() DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHAREF,0x60); vmaterial->Set_Opacity(oldOpacity); //restore previous value vmaterial->Set_Diffuse(oldDiffuse.X,oldDiffuse.Y,oldDiffuse.Z); - DX8Wrapper::Set_Shader(theShader); //restore previous value + Renderer::Set_Shader(theShader); //restore previous value } else renderer->Render(mesh->Get_Base_Vertex_Offset()); @@ -1924,8 +1924,8 @@ void DX8TextureCategoryClass::Render() { oldMapper->Set_LastUsedSyncTime(oldUVOffsetSyncTime); oldMapper->Set_Current_UV_Offset(oldUVOffset); } - DX8Wrapper::Set_Material(nullptr); //force a reset of vertex material since we secretly changed opacity - DX8Wrapper::Set_Material(vmaterial); //restore previous material. + Renderer::Set_Material(nullptr); //force a reset of vertex material since we secretly changed opacity + Renderer::Set_Material(vmaterial); //restore previous material. } else renderer->Render(mesh->Get_Base_Vertex_Offset()); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp index 625d8dfd283..9e2d387de09 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp @@ -316,14 +316,14 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) } if (material_array) { - DX8Wrapper::Set_Material(material_array[tris[0].I]); + Renderer::Set_Material(material_array[tris[0].I]); } else { - DX8Wrapper::Set_Material(MatDesc->Peek_Single_Material(pass)); + Renderer::Set_Material(MatDesc->Peek_Single_Material(pass)); } if (shader_array) { - DX8Wrapper::Set_Shader(shader_array[0]); + Renderer::Set_Shader(shader_array[0]); } else { - DX8Wrapper::Set_Shader(MatDesc->Get_Single_Shader(pass)); + Renderer::Set_Shader(MatDesc->Get_Single_Shader(pass)); } SphereClass sphere; @@ -386,8 +386,8 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) max_vert_idx = 0; if (texture_changed) DX8Wrapper::Set_Texture(0,texture_array0[next_tri_idx]); if (texture1_changed) DX8Wrapper::Set_Texture(1,texture_array1[next_tri_idx]); - if (material_changed) DX8Wrapper::Set_Material(material_array[tris[next_tri_idx].I]); - if (shader_changed) DX8Wrapper::Set_Shader(shader_array[next_tri_idx]); + if (material_changed) Renderer::Set_Material(material_array[tris[next_tri_idx].I]); + if (shader_changed) Renderer::Set_Shader(shader_array[next_tri_idx]); } cur_tri_idx = next_tri_idx; diff --git a/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp b/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp index 1beee57313d..bdefebcfe1e 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp @@ -268,10 +268,10 @@ void Line3DClass::Render(RenderInfoClass & rinfo) return; } - DX8Wrapper::Set_Shader(Shader); + Renderer::Set_Shader(Shader); DX8Wrapper::Set_Texture(0,nullptr); VertexMaterialClass *vm=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vm); + Renderer::Set_Material(vm); REF_PTR_RELEASE(vm); Renderer::Set_Transform(RenderTransform_World,Transform); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp b/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp index f0a6dbb72b9..78fe4cba4e4 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp @@ -52,6 +52,7 @@ #include "texture.h" #include "statistics.h" #include "dx8wrapper.h" +#include "Renderer.h" bool MaterialPassClass::EnablePerPolygonCulling = true; @@ -117,8 +118,8 @@ MaterialPassClass::~MaterialPassClass() *=============================================================================================*/ void MaterialPassClass::Install_Materials() const { - DX8Wrapper::Set_Material(Peek_Material()); - DX8Wrapper::Set_Shader(Peek_Shader()); + Renderer::Set_Material(Peek_Material()); + Renderer::Set_Shader(Peek_Shader()); for (int i=0;iGet_Max_Textures_Per_Pass();++i) { DX8Wrapper::Set_Texture(i,Peek_Texture(i)); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp index c87714e25b5..61c5d4f6cec 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp @@ -923,8 +923,8 @@ void PointGroupClass::Render(RenderInfoClass &rinfo) Renderer::Set_Transform(RenderTransform_World,identity); Renderer::Set_Transform(RenderTransform_View,identity); - DX8Wrapper::Set_Material(PointMaterial); - DX8Wrapper::Set_Shader(Shader); + Renderer::Set_Material(PointMaterial); + Renderer::Set_Shader(Shader); DX8Wrapper::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. @@ -1853,8 +1853,8 @@ void PointGroupClass::RenderVolumeParticle(RenderInfoClass &rinfo, unsigned int Renderer::Set_Transform(RenderTransform_World,identity); Renderer::Set_Transform(RenderTransform_View,identity); - DX8Wrapper::Set_Material(PointMaterial); - DX8Wrapper::Set_Shader(Shader); + Renderer::Set_Material(PointMaterial); + Renderer::Set_Shader(Shader); DX8Wrapper::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. diff --git a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp index d35438a6a88..1ee5a7db528 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp @@ -532,9 +532,9 @@ void RingRenderObjClass::render_ring(RenderInfoClass & rinfo,const Vector3 & cen } else { RingShader.Set_Texturing (ShaderClass::TEXTURING_DISABLE); } - DX8Wrapper::Set_Shader(RingShader); + Renderer::Set_Shader(RingShader); DX8Wrapper::Set_Texture(0,RingTexture); - DX8Wrapper::Set_Material(RingMaterial); + Renderer::Set_Material(RingMaterial); // Enable sorting if the primitive is translucent, alpha testing is not enabled, and sorting is enabled globally. const bool sort = (RingShader.Get_Dst_Blend_Func() != ShaderClass::DSTBLEND_ZERO) && (RingShader.Get_Alpha_Test() == ShaderClass::ALPHATEST_DISABLE) && (WW3D::Is_Sorting_Enabled()); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp index 6c9d8ba4c25..5ed0283b801 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp @@ -1178,9 +1178,9 @@ void SegLineRendererClass::Render DX8Wrapper::Set_Index_Buffer(ib_access,0); DX8Wrapper::Set_Vertex_Buffer(Verts); - DX8Wrapper::Set_Material(mat); + Renderer::Set_Material(mat); DX8Wrapper::Set_Texture(0,Texture); - DX8Wrapper::Set_Shader(shader); + Renderer::Set_Shader(shader); if (sorting) { SortingRendererClass::Insert_Triangles(obj_sphere,0,tidx,0,vnum); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp index dcca23d382c..1355cf3a8f8 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp @@ -365,9 +365,9 @@ void SortingRendererClass::Insert_To_Sorting_Pool(SortingNodeStruct* state) static void Apply_Render_State(RenderStateStruct& render_state) { - DX8Wrapper::Set_Shader(render_state.shader); + Renderer::Set_Shader(render_state.shader); - DX8Wrapper::Set_Material(render_state.material); + Renderer::Set_Material(render_state.material); for (int i=0;iGet_Max_Textures_Per_Pass();++i) { @@ -545,7 +545,7 @@ void SortingRendererClass::Flush_Sorting_Pool() DX8Wrapper::Set_Index_Buffer(dyn_ib_access,0); // Override with this buffer (do something to prevent need for this!) DX8Wrapper::Set_Vertex_Buffer(dyn_vb_access); // Override with this buffer (do something to prevent need for this!) - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); unsigned count_to_render=1; unsigned start_index=0; diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp index 8fbc2e15bf3..d797a75dddd 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp @@ -469,9 +469,9 @@ void SphereRenderObjClass::render_sphere() } else { SphereShader.Set_Texturing (ShaderClass::TEXTURING_DISABLE); } - DX8Wrapper::Set_Shader(SphereShader); + Renderer::Set_Shader(SphereShader); DX8Wrapper::Set_Texture(0,SphereTexture); - DX8Wrapper::Set_Material(SphereMaterial); + Renderer::Set_Material(SphereMaterial); // Enable sorting if the primitive is translucent, alpha testing is not enabled, and sorting is enabled globally. const bool sort = (SphereShader.Get_Dst_Blend_Func() != ShaderClass::DSTBLEND_ZERO) && (SphereShader.Get_Alpha_Test() == ShaderClass::ALPHATEST_DISABLE) && (WW3D::Is_Sorting_Enabled()); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp index 42e8544d862..0eb0ed1dcb6 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp @@ -1305,7 +1305,7 @@ void StreakRendererClass::RenderStreak VertexMaterialClass *mat; mat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(mat); + Renderer::Set_Material(mat); REF_PTR_RELEASE(mat); // If Texture is non-null enable texturing in shader - otherwise disable. @@ -1371,7 +1371,7 @@ void StreakRendererClass::RenderStreak DX8Wrapper::Set_Index_Buffer(ib_access,0); DX8Wrapper::Set_Vertex_Buffer(Verts); DX8Wrapper::Set_Texture(0,Texture); - DX8Wrapper::Set_Shader(shader); + Renderer::Set_Shader(shader); if (sorting) { diff --git a/Core/Tools/W3DView/ScreenCursor.cpp b/Core/Tools/W3DView/ScreenCursor.cpp index 8c358221e59..d67c6a31974 100644 --- a/Core/Tools/W3DView/ScreenCursor.cpp +++ b/Core/Tools/W3DView/ScreenCursor.cpp @@ -41,6 +41,7 @@ #include "WW3D2/rinfo.h" #include "WW3D2/texture.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" #include "WW3D2/dx8vertexbuffer.h" #include "WW3D2/dx8indexbuffer.h" #include "WW3D2/sortingrenderer.h" @@ -288,8 +289,8 @@ ScreenCursorClass::Render (RenderInfoClass &rinfo) /* ** Apply the shader and material */ - DX8Wrapper::Set_Material(m_pVertMaterial.Peek()); - DX8Wrapper::Set_Shader(ShaderClass::_PresetATestBlend2DShader); + Renderer::Set_Material(m_pVertMaterial.Peek()); + Renderer::Set_Shader(ShaderClass::_PresetATestBlend2DShader); DX8Wrapper::Set_Texture(0,m_pTexture.Peek()); DX8Wrapper::Set_Vertex_Buffer(vbaccess); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp index 8d7f7350f28..76b4c5aabf4 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp @@ -655,9 +655,9 @@ void TestBlendRender(RenderInfoClass & rinfo) } VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); Matrix3D tm(1); //identity Renderer::Set_Transform(RenderTransform_World,tm); @@ -695,7 +695,7 @@ void W3DProjectedShadowManager::flushDecals(W3DShadowTexture *texture, ShadowTyp if (!m_pDev) return; //no D3D Device to render VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); DX8Wrapper::Set_Texture(0,texture->getTexture()); @@ -703,13 +703,13 @@ void W3DProjectedShadowManager::flushDecals(W3DShadowTexture *texture, ShadowTyp switch (type) { case SHADOW_DECAL: - DX8Wrapper::Set_Shader(ShaderClass::_PresetMultiplicativeShader); + Renderer::Set_Shader(ShaderClass::_PresetMultiplicativeShader); break; case SHADOW_ALPHA_DECAL: - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlphaShader); + Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); break; case SHADOW_ADDITIVE_DECAL: - DX8Wrapper::Set_Shader(ShaderClass::_PresetAdditiveShader); + Renderer::Set_Shader(ShaderClass::_PresetAdditiveShader); break; } @@ -717,7 +717,7 @@ void W3DProjectedShadowManager::flushDecals(W3DShadowTexture *texture, ShadowTyp // DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL); //_PresetAlphaSpriteShader - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices //Alpha Blended Shadows // m_pDev->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); @@ -1400,7 +1400,7 @@ Int W3DProjectedShadowManager::renderShadows(RenderInfoClass & rinfo) //terrain is always visible and affected by all shadows so must render projector->Peek_Material_Pass()->Install_Materials(); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices if (renderProjectedTerrainShadow(shadow, aaBox)) projectionCount++; projector->Peek_Material_Pass()->UnInstall_Materials(); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp index 302b7f54fe3..7543400f2ec 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp @@ -3488,13 +3488,13 @@ void W3DVolumetricShadowManager::renderShadows( Bool forceStencilFill ) //Set W3D to some known state VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); //turn off textures DX8Wrapper::Set_Texture(1,nullptr); //turn off textures - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices // turn off z writing m_pDev->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL); @@ -3666,7 +3666,7 @@ void W3DVolumetricShadowManager::renderShadows( Bool forceStencilFill ) m_pDev->SetRenderState(D3DRS_ALPHABLENDENABLE , FALSE); m_pDev->SetRenderState(D3DRS_LIGHTING, FALSE); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } else if (forceStencilFill) @@ -3676,15 +3676,15 @@ void W3DVolumetricShadowManager::renderShadows( Bool forceStencilFill ) //Set W3D to some known state VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Apply_Render_State_Changes(); //force update of view and projection matrices + Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices renderStencilShadows(); - DX8Wrapper::Invalidate_Cached_Render_States(); + Renderer::Invalidate_Cached_Render_States(); } } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp index 5f47d7362d7..467126744d3 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp @@ -57,6 +57,7 @@ #include "W3DDevice/GameClient/W3DDynamicLight.h" #include "WW3D2/camera.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/mesh.h" #include "WW3D2/meshmdl.h" @@ -426,7 +427,7 @@ void W3DBibBuffer::renderBibs() // Setup the vertex buffer, shader & texture. DX8Wrapper::Set_Index_Buffer(m_indexBib,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBib); - DX8Wrapper::Set_Shader(detailAlphaShader); + Renderer::Set_Shader(detailAlphaShader); if (m_curNumNormalBibIndices) { DX8Wrapper::Set_Texture(0,m_bibTexture); DX8Wrapper::Draw_Triangles( 0, m_curNumNormalBibIndices/3, 0, m_curNumNormalBibVertex); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp index 7d1bdd79387..d15ee0364c3 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp @@ -66,6 +66,7 @@ #include "W3DDevice/GameClient/W3DShroud.h" #include "WW3D2/camera.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/mesh.h" #include "WW3D2/meshmdl.h" @@ -1160,16 +1161,16 @@ void W3DBridgeBuffer::drawBridges(CameraClass * camera, Bool wireframe, TextureC return; } - DX8Wrapper::Set_Material(m_vertexMaterial); + Renderer::Set_Material(m_vertexMaterial); // Setup the vertex buffer, shader & texture. DX8Wrapper::Set_Index_Buffer(m_indexBridge,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBridge); - DX8Wrapper::Set_Shader(detailAlphaShader); + Renderer::Set_Shader(detailAlphaShader); #ifdef RTS_DEBUG //DX8Wrapper::Set_Shader(detailShader); // shows alpha clipping. #endif - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); if (!wireframe && cloudTexture) { @@ -1192,12 +1193,12 @@ void W3DBridgeBuffer::drawBridges(CameraClass * camera, Bool wireframe, TextureC if (!wireframe && TheTerrainRenderObject->getShroud()) { //Reset to a known shader. - DX8Wrapper::Invalidate_Cached_Render_States(); - DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Material(m_vertexMaterial); + Renderer::Invalidate_Cached_Render_States(); + Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); + Renderer::Set_Material(m_vertexMaterial); DX8Wrapper::Set_Index_Buffer(m_indexBridge,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBridge); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); //Apply custom shroud projection shader. W3DShaderManager::setTexture(0,TheTerrainRenderObject->getShroud()->getShroudTexture()); W3DShaderManager::setShader(W3DShaderManager::ST_SHROUD_TEXTURE, 0); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp index 1abc84aae9c..b4e7d2021b6 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp @@ -241,8 +241,8 @@ void DebugHintObject::Render(RenderInfoClass & rinfo) SphereClass bounds(Vector3(m_myLoc.x, m_myLoc.y, m_myLoc.z), m_mySize); if (!rinfo.Camera.Cull_Sphere(bounds)) { - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp index dd9bc793968..94f1ce4da65 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp @@ -63,6 +63,7 @@ #include "W3DDevice/GameClient/W3DShaderManager.h" #include "WW3D2/camera.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/mesh.h" #include "WW3D2/meshmdl.h" @@ -3381,7 +3382,7 @@ void W3DRoadBuffer::drawRoads(CameraClass * camera, TextureClass *cloudTexture, DX8Wrapper::Set_Texture(1,cloudTexture); } } - DX8Wrapper::Set_Shader(detailAlphaShader); + Renderer::Set_Shader(detailAlphaShader); //Draw all the roads. DX8Wrapper::Draw_Triangles( 0, m_curNumRoadIndices/3, 0, m_curNumRoadVertices); } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp index d7086c2821a..0d7dd3f2bb5 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScene.cpp @@ -1263,11 +1263,11 @@ void renderStenciledPlayerColor( UnsignedInt color, UnsignedInt stencilRef, Bool v[2].color = color; v[3].color = color; - DX8Wrapper::Set_Shader(PlayerColorShader); + Renderer::Set_Shader(PlayerColorShader); VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); - DX8Wrapper::Set_Material(vmat); + Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Apply_Render_State_Changes(); //force update all render states + Renderer::Apply_Render_State_Changes(); //force update all render states LPDIRECT3DDEVICE8 m_pDev=DX8Wrapper::_Get_D3D_Device8(); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp index ad64200679c..8076b68adbc 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp @@ -318,8 +318,8 @@ void W3DStatusCircle::Render(RenderInfoClass & rinfo) updateCircleVB(); } //Apply the shader and material - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferCircle); @@ -341,7 +341,7 @@ void W3DStatusCircle::Render(RenderInfoClass & rinfo) } if (!setIndex) { - DX8Wrapper::Set_Material(m_vertexMaterialClass); + Renderer::Set_Material(m_vertexMaterialClass); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Texture(0, nullptr); } @@ -352,9 +352,9 @@ void W3DStatusCircle::Render(RenderInfoClass & rinfo) Int diffuse = (0xff<<24)|(clr<<16)|(clr<<8)|clr; // b g<<8 r<<16 a<<24. updateScreenVB(diffuse); Renderer::Set_Transform(RenderTransform_World,tm); - DX8Wrapper::Set_Shader(ShaderClass(SC_ADD)); + Renderer::Set_Shader(ShaderClass(SC_ADD)); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferScreen); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); switch (fade) { default: case ScriptEngine::FADE_ADD: diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp index ef33ba4be41..459c9e16d3b 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp @@ -505,8 +505,8 @@ void BoxRenderObjClass::render_box(RenderInfoClass & rinfo,const Vector3 & cente /* ** Apply the shader and material */ - DX8Wrapper::Set_Material(_BoxMaterial); - DX8Wrapper::Set_Shader(_BoxShader); + Renderer::Set_Material(_BoxMaterial); + Renderer::Set_Shader(_BoxShader); DX8Wrapper::Set_Texture(0,nullptr); DX8Wrapper::Set_Index_Buffer(ibaccess,0); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp index e8163cdc1ae..8be4eeb688b 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp @@ -1240,21 +1240,21 @@ void DazzleRenderObjClass::Render_Dazzle(CameraClass* camera) if (halo_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,dazzle_vertex_count); - DX8Wrapper::Set_Shader(default_halo_shader); + Renderer::Set_Shader(default_halo_shader); DX8Wrapper::Set_Texture(0,types[type]->Get_Halo_Texture()); DX8Wrapper::Draw_Triangles(0,halo_poly_count,0,vertex_count); } if (dazzle_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Shader(default_dazzle_shader); + Renderer::Set_Shader(default_dazzle_shader); DX8Wrapper::Set_Texture(0,types[type]->Get_Dazzle_Texture()); DX8Wrapper::Draw_Triangles(0,dazzle_poly_count,0,vertex_count); } if (lensflare_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,dazzle_vertex_count+halo_vertex_count); - DX8Wrapper::Set_Shader(default_dazzle_shader); + Renderer::Set_Shader(default_dazzle_shader); DX8Wrapper::Set_Texture(0,lensflare->Get_Texture()); DX8Wrapper::Draw_Triangles(0,lensflare_poly_count,0,vertex_count); } @@ -1467,7 +1467,7 @@ void DazzleLayerClass::Render(CameraClass* camera) camera->Apply(); - DX8Wrapper::Set_Material(nullptr); + Renderer::Set_Material(nullptr); for (unsigned type=0;typeSupport_Dot3()) { //Override W3D states with customizations for grayscale @@ -695,7 +695,7 @@ void Render2DClass::Render() } } else - DX8Wrapper::Set_Shader(Shader); + Renderer::Set_Shader(Shader); DX8Wrapper::Draw_Triangles(0,Indices.Count()/3,0,Vertices.Count()); Renderer::Set_Transform(RenderTransform_View,view); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp index 3ca07986d06..a7ed425f0dc 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp @@ -2081,13 +2081,13 @@ if (_skip_drawobject_render) { m_lineRenderer->Enable_Texturing(FALSE); } - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); - DX8Wrapper::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Material(m_vertexMaterialClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Apply_Render_State_Changes(); + Renderer::Apply_Render_State_Changes(); Int count=0; Int i; bool linesToRender = false; @@ -2342,7 +2342,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferWater); @@ -2357,7 +2357,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(SC_OPAQUE_Z); + Renderer::Set_Shader(SC_OPAQUE_Z); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME); DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } @@ -2366,7 +2366,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(ShaderClass::_PresetAlpha2DShader); + Renderer::Set_Shader(ShaderClass::_PresetAlpha2DShader); DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } @@ -2378,7 +2378,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(SC_OPAQUE_Z); + Renderer::Set_Shader(SC_OPAQUE_Z); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); @@ -2392,7 +2392,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_SOLID); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting @@ -2410,7 +2410,7 @@ if (pMapObj->isSelected()) { if (m_feedbackIndexCount>0) { DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Set_Shader(m_shaderClass); + Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_SOLID); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting From dedd651ba8ee762a8e0c7bfa97527a93a9073cd7 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 07:57:36 -0400 Subject: [PATCH 3/6] refactor(ww3d2): Route texture binding via Renderer --- .../W3DDevice/GameClient/BaseHeightMap.cpp | 4 +- .../W3DDevice/GameClient/FlatHeightMap.cpp | 22 ++++----- .../Source/W3DDevice/GameClient/HeightMap.cpp | 24 +++++----- .../W3DDevice/GameClient/W3DDebugIcons.cpp | 2 +- .../Source/W3DDevice/GameClient/W3DScorch.cpp | 2 +- .../W3DDevice/GameClient/W3DShaderManager.cpp | 48 +++++++++---------- .../Source/W3DDevice/GameClient/W3DSmudge.cpp | 4 +- .../Source/W3DDevice/GameClient/W3DSnow.cpp | 2 +- .../GameClient/W3DTerrainBackground.cpp | 13 ++--- .../W3DDevice/GameClient/W3DTerrainTracks.cpp | 2 +- .../W3DDevice/GameClient/W3DTreeBuffer.cpp | 6 +-- .../W3DDevice/GameClient/Water/W3DWater.cpp | 24 +++++----- .../GameClient/Water/W3DWaterTracks.cpp | 2 +- .../WWVegas/WW3D2/Backend/DX8Backend.cpp | 5 ++ .../Libraries/Source/WWVegas/WW3D2/Renderer.h | 2 + .../Source/WWVegas/WW3D2/dx8renderer.cpp | 2 +- .../Source/WWVegas/WW3D2/dynamesh.cpp | 12 ++--- .../Libraries/Source/WWVegas/WW3D2/line3d.cpp | 2 +- .../Source/WWVegas/WW3D2/matpass.cpp | 2 +- .../Source/WWVegas/WW3D2/pointgr.cpp | 4 +- .../Source/WWVegas/WW3D2/ringobj.cpp | 2 +- .../Source/WWVegas/WW3D2/seglinerenderer.cpp | 2 +- .../Source/WWVegas/WW3D2/sortingrenderer.cpp | 2 +- .../Source/WWVegas/WW3D2/sphereobj.cpp | 2 +- .../Source/WWVegas/WW3D2/streakRender.cpp | 2 +- Core/Tools/W3DView/ScreenCursor.cpp | 2 +- .../GameClient/Shadow/W3DProjectedShadow.cpp | 4 +- .../GameClient/Shadow/W3DVolumetricShadow.cpp | 6 +-- .../W3DDevice/GameClient/W3DBibBuffer.cpp | 4 +- .../W3DDevice/GameClient/W3DBridgeBuffer.cpp | 2 +- .../W3DDevice/GameClient/W3DInGameUI.cpp | 2 +- .../W3DDevice/GameClient/W3DRoadBuffer.cpp | 6 +-- .../W3DDevice/GameClient/W3DStatusCircle.cpp | 4 +- .../Source/WWVegas/WW3D2/boxrobj.cpp | 2 +- .../Libraries/Source/WWVegas/WW3D2/dazzle.cpp | 6 +-- .../Source/WWVegas/WW3D2/decalmsh.cpp | 4 +- .../Source/WWVegas/WW3D2/linegrp.cpp | 2 +- .../Source/WWVegas/WW3D2/render2d.cpp | 2 +- .../Tools/WorldBuilder/src/DrawObject.cpp | 2 +- 39 files changed, 125 insertions(+), 117 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp index a973bdb8193..aae457c294f 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp @@ -2317,7 +2317,7 @@ void BaseHeightMapRenderObjClass::renderShoreLines(CameraClass *pCamera) VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Texture(0,m_destAlphaTexture); + Renderer::Set_Texture(0,m_destAlphaTexture); Renderer::Set_Transform(RenderTransform_World,Matrix3D(true)); //Enabled writes to destination alpha only DX8Wrapper::Set_DX8_Render_State(D3DRS_COLORWRITEENABLE,D3DCOLORWRITEENABLE_ALPHA); @@ -2503,7 +2503,7 @@ void BaseHeightMapRenderObjClass::renderShoreLinesSorted(CameraClass *pCamera) VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Texture(0,m_destAlphaTexture); + Renderer::Set_Texture(0,m_destAlphaTexture); Renderer::Set_Transform(RenderTransform_World,Matrix3D(true)); //Enabled writes to destination alpha only DX8Wrapper::Set_DX8_Render_State(D3DRS_COLORWRITEENABLE,D3DCOLORWRITEENABLE_ALPHA); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp index 5af8fa801a4..d3830aaca84 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/FlatHeightMap.cpp @@ -490,8 +490,8 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) // Force shaders to update. m_stageTwoTexture->restore(); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); ShaderClass::Invalidate(); Renderer::Set_Transform(RenderTransform_World,Transform); @@ -551,7 +551,7 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) Bool disableTex = m_disableTextures; if (m_disableTextures ) { Renderer::Set_Shader(ShaderClass::_PresetOpaque2DShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); } else { W3DShaderManager::setShader(st, pass); } @@ -590,8 +590,8 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) renderShoreLines(&rinfo.Camera); #ifdef DO_ROADS - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); @@ -606,14 +606,14 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & rinfo) } #endif - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); drawScorches(); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); Renderer::Apply_Render_State_Changes(); @@ -631,8 +631,8 @@ void FlatHeightMapRenderObjClass::Render(RenderInfoClass & 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); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); Renderer::Set_Material(nullptr); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index 4a3aa35a9b3..a15ef415d6b 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1926,8 +1926,8 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) // Force shaders to update. m_stageTwoTexture->restore(); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); ShaderClass::Invalidate(); Renderer::Set_Transform(RenderTransform_World,Transform); @@ -2030,7 +2030,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) { if (m_disableTextures ) { Renderer::Set_Shader(ShaderClass::_PresetOpaque2DShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); } else { W3DShaderManager::setShader(st, pass); } @@ -2081,8 +2081,8 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) Int xCoordMin = m_map->getDrawOrgX(); Int xCoordMax = m_x+m_map->getDrawOrgX()-1; #ifdef DO_ROADS - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); @@ -2099,14 +2099,14 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) if (m_propBuffer) { m_propBuffer->drawProps(rinfo); } - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); drawScorches(); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); Renderer::Apply_Render_State_Changes(); @@ -2135,8 +2135,8 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) m_bibBuffer->renderBibs(); // We do some custom blending, so tell the shader class to reset everything. - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); m_stageTwoTexture->restore(); ShaderClass::Invalidate(); Renderer::Set_Material(nullptr); @@ -2349,7 +2349,7 @@ void HeightMapRenderObjClass::renderExtraBlendTiles() shader.Set_Primary_Gradient(ShaderClass::GRADIENT_DISABLE); //disable lighting. shader.Set_Texturing(ShaderClass::TEXTURING_DISABLE); //disable texturing. Renderer::Set_Shader(shader); - DX8Wrapper::Set_Texture(0,nullptr); //debug mode which draws terrain tiles in white. + Renderer::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 m_numVisibleExtraBlendTiles += indexCount/6; diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp index 24382eab53a..f7fb42b28c1 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DDebugIcons.cpp @@ -219,7 +219,7 @@ void W3DDebugIcons::Render(RenderInfoClass & rinfo) Renderer::Apply_Render_State_Changes(); Renderer::Set_Material(m_vertexMaterialClass); - DX8Wrapper::Set_Texture(0, nullptr); + Renderer::Set_Texture(0, nullptr); Renderer::Apply_Render_State_Changes(); Renderer::Set_Transform(RenderTransform_World,Transform); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp index 5a06c69b75e..dfb18130bb1 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DScorch.cpp @@ -127,7 +127,7 @@ void W3DScorch::drawScorches(WorldHeightMap& map) DX8Wrapper::Set_Vertex_Buffer(m_vertexScorch); Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); - DX8Wrapper::Set_Texture(0, m_scorchTexture); + Renderer::Set_Texture(0, m_scorchTexture); DX8Wrapper::Draw_Triangles(0, m_curNumScorchIndices / 3, 0, m_curNumScorchVertices); } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp index 857a40f8ae1..4fd55d1eb6a 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DShaderManager.cpp @@ -237,7 +237,7 @@ Int ScreenDefaultFilter::set(FilterModes mode) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); @@ -418,7 +418,7 @@ Int ScreenBWFilter::set(FilterModes mode) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); @@ -647,7 +647,7 @@ Int ScreenBWFilterDOT3::set(FilterModes mode) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); @@ -871,8 +871,8 @@ Int ScreenCrossFadeFilter::set(FilterModes mode) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); @@ -1163,8 +1163,8 @@ Int ScreenMotionBlurFilter::set(FilterModes mode) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_ALWAYS); @@ -1222,7 +1222,7 @@ Int ShroudTextureShader::set(Int stage) VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. - DX8Wrapper::Set_Texture(stage, W3DShaderManager::getShaderTexture(0)); //shroud always stored in texture 0 + Renderer::Set_Texture(stage, W3DShaderManager::getShaderTexture(0)); //shroud always stored in texture 0 if (stage == 0) { @@ -1285,7 +1285,7 @@ Int ShroudTextureShader::set(Int stage) void ShroudTextureShader::reset() { - DX8Wrapper::Set_Texture(m_stageOfSet,nullptr); + Renderer::Set_Texture(m_stageOfSet,nullptr); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); DX8Wrapper::Set_DX8_Texture_Stage_State(m_stageOfSet, D3DTSS_TEXCOORDINDEX, m_stageOfSet); DX8Wrapper::Set_DX8_Texture_Stage_State(m_stageOfSet, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE); @@ -1322,7 +1322,7 @@ Int FlatShroudTextureShader::set(Int stage) { //force WW3D2 system to set it's states so it won't later overwrite our custom settings. if (stage < 2) - DX8Wrapper::Set_Texture(stage, W3DShaderManager::getShaderTexture(stage)); + Renderer::Set_Texture(stage, W3DShaderManager::getShaderTexture(stage)); else //stages larger than 1 are not supported by W3D so set them directly DX8Wrapper::Set_DX8_Texture(stage, W3DShaderManager::getShaderTexture(stage)->Peek_D3D_Texture()); @@ -1380,7 +1380,7 @@ Int FlatShroudTextureShader::set(Int stage) void FlatShroudTextureShader::reset() { if (m_stageOfSet < MAX_TEXTURE_STAGES) - DX8Wrapper::Set_Texture(m_stageOfSet,nullptr); + Renderer::Set_Texture(m_stageOfSet,nullptr); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); DX8Wrapper::Set_DX8_Texture_Stage_State(m_stageOfSet, D3DTSS_TEXCOORDINDEX, m_stageOfSet); DX8Wrapper::Set_DX8_Texture_Stage_State(m_stageOfSet, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE); @@ -1425,7 +1425,7 @@ Int MaskTextureShader::set(Int pass) REF_PTR_RELEASE(vmat); //no need to keep a reference since it's a preset. //For now we're always going to project the texture coming from the crossfade effect - DX8Wrapper::Set_Texture(0, ScreenCrossFadeFilter::getCurrentMaskTexture()); + Renderer::Set_Texture(0, ScreenCrossFadeFilter::getCurrentMaskTexture()); ShaderClass shader=ShaderClass::_PresetOpaqueShader; shader.Set_Primary_Gradient(ShaderClass::GRADIENT_DISABLE); Renderer::Set_Shader(shader); @@ -1488,7 +1488,7 @@ Int MaskTextureShader::set(Int pass) void MaskTextureShader::reset() { - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXCOORDINDEX, 0); DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE); } @@ -2305,7 +2305,7 @@ Int RoadShaderPixelShader::init() Int RoadShaderPixelShader::set(Int pass) { - DX8Wrapper::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); + Renderer::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); //force WW3D2 system to set it's states so it won't later overwrite our custom settings. Renderer::Apply_Render_State_Changes(); @@ -2346,8 +2346,8 @@ Int RoadShaderPixelShader::set(Int pass) DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_ADDRESSU, D3DTADDRESS_WRAP); DX8Wrapper::Set_DX8_Texture_Stage_State(2, D3DTSS_ADDRESSV, D3DTADDRESS_WRAP); - DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); - DX8Wrapper::Set_Texture(2,W3DShaderManager::getShaderTexture(2)); + Renderer::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); + Renderer::Set_Texture(2,W3DShaderManager::getShaderTexture(2)); DX8Wrapper::_Get_D3D_Device8()->SetPixelShader(m_dwBaseNoise2PixelShader); @@ -2409,7 +2409,7 @@ Int RoadShader2Stage::init() Int RoadShader2Stage::set(Int pass) { //First stage always contains base texture. - DX8Wrapper::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); + Renderer::Set_Texture(0,W3DShaderManager::getShaderTexture(0)); //Force system to apply world/view transforms. Renderer::Apply_Render_State_Changes(); @@ -2465,7 +2465,7 @@ Int RoadShader2Stage::set(Int pass) if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_ROAD_BASE_NOISE12) { //full shader, apply noise 1 in pass 0. - DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); + Renderer::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MINFILTER, D3DTEXF_LINEAR); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); @@ -2478,7 +2478,7 @@ Int RoadShader2Stage::set(Int pass) if (W3DShaderManager::getCurrentShader() == W3DShaderManager::ST_ROAD_BASE_NOISE1) { //cloud map - DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); + Renderer::Set_Texture(1,W3DShaderManager::getShaderTexture(1)); terrainShader2Stage.updateNoise1(&curView, &inv, false); //update curView with texture matrix DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MINFILTER, D3DTEXF_LINEAR); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); @@ -2486,7 +2486,7 @@ Int RoadShader2Stage::set(Int pass) else { //light map - DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(2)); + Renderer::Set_Texture(1,W3DShaderManager::getShaderTexture(2)); terrainShader2Stage.updateNoise2(&curView,&inv, false); //update curView with texture matrix DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MINFILTER, D3DTEXF_POINT); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); @@ -2516,7 +2516,7 @@ Int RoadShader2Stage::set(Int pass) else DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MIPFILTER, D3DTEXF_POINT); - DX8Wrapper::Set_Texture(1,W3DShaderManager::getShaderTexture(2)); + Renderer::Set_Texture(1,W3DShaderManager::getShaderTexture(2)); terrainShader2Stage.updateNoise2(&curView, &inv, false); //update curView with texture matrix DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_MINFILTER, D3DTEXF_POINT); @@ -3242,7 +3242,7 @@ Int W3DShaderManager::setShroudTex(Int stage) W3DShroud *shroud; if ((shroud=TheTerrainRenderObject->getShroud()) != nullptr) { - DX8Wrapper::Set_Texture(stage, shroud->getShroudTexture()); + Renderer::Set_Texture(stage, shroud->getShroudTexture()); DX8Wrapper::Set_DX8_Texture_Stage_State(stage, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION); DX8Wrapper::Set_DX8_Texture_Stage_State(stage, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2); @@ -3605,8 +3605,8 @@ Int FlatTerrainShaderPixelShader::set(Int pass) DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); - DX8Wrapper::Set_Texture(0, W3DShaderManager::getShaderTexture(2)); - DX8Wrapper::Set_Texture(1, W3DShaderManager::getShaderTexture(2)); + Renderer::Set_Texture(0, W3DShaderManager::getShaderTexture(2)); + Renderer::Set_Texture(1, W3DShaderManager::getShaderTexture(2)); //force WW3D2 system to set it's states so it won't later overwrite our custom settings. Renderer::Apply_Render_State_Changes(); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp index e18ef6b6d2d..55a42180732 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp @@ -230,7 +230,7 @@ Bool W3DSmudgeManager::testHardwareSupport() shader.Set_Depth_Compare(ShaderClass::PASS_ALWAYS); shader.Set_Depth_Mask(ShaderClass::DEPTH_WRITE_DISABLE); Renderer::Set_Shader(shader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices struct _TRANS_LIT_TEX_VERTEX { @@ -455,7 +455,7 @@ void W3DSmudgeManager::render(RenderInfoClass &rinfo) Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); - DX8Wrapper::Set_Texture(0,m_backgroundTexture); + Renderer::Set_Texture(0,m_backgroundTexture); //Need these states in case texture is non-power-of-2 DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP); DX8Wrapper::Set_DX8_Texture_Stage_State( 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp index 3858c941ecc..c9836a4b127 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp @@ -410,7 +410,7 @@ void W3DSnowManager::render(RenderInfoClass &rinfo) if (!usePointSprites && !m_indexBuffer) ReAcquireResources(); - DX8Wrapper::Set_Texture(0,m_snowTexture); + Renderer::Set_Texture(0,m_snowTexture); if (!usePointSprites) { diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp index 04e637acd33..4ef894febdb 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp @@ -55,6 +55,7 @@ #include "W3DDevice/GameClient/TerrainTex.h" #include "W3DDevice/GameClient/HeightMap.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/camera.h" @@ -767,11 +768,11 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl DX8Wrapper::Set_Vertex_Buffer(m_vertexTerrain); if (!disableTextures) { if (m_terrainTexture4X) { - DX8Wrapper::Set_Texture(1, m_terrainTexture4X); + Renderer::Set_Texture(1, m_terrainTexture4X); } else if (m_terrainTexture2X) { - DX8Wrapper::Set_Texture(1, m_terrainTexture2X); + Renderer::Set_Texture(1, m_terrainTexture2X); } else { - DX8Wrapper::Set_Texture(1, m_terrainTexture); + Renderer::Set_Texture(1, m_terrainTexture); } } DX8Wrapper::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); @@ -787,11 +788,11 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl DX8Wrapper::Set_Vertex_Buffer(m_vertexTerrain); if (!disableTextures) { if (m_terrainTexture4X) { - DX8Wrapper::Set_Texture(0, m_terrainTexture4X); + Renderer::Set_Texture(0, m_terrainTexture4X); } else if (m_terrainTexture2X) { - DX8Wrapper::Set_Texture(0, m_terrainTexture2X); + Renderer::Set_Texture(0, m_terrainTexture2X); } else { - DX8Wrapper::Set_Texture(0, m_terrainTexture); + Renderer::Set_Texture(0, m_terrainTexture); } } DX8Wrapper::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp index cb33149db8d..b7532d2d034 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp @@ -912,7 +912,7 @@ Try improving the fit to vertical surfaces like cliffs. { if (mod->m_activeEdgeCount >= 2 && mod->Is_Really_Visible()) { - DX8Wrapper::Set_Texture(0,mod->m_stageZeroTexture); + Renderer::Set_Texture(0,mod->m_stageZeroTexture); DX8Wrapper::Set_Index_Buffer_Index_Offset(trackStartIndex); DX8Wrapper::Draw_Triangles( 0,(mod->m_activeEdgeCount-1)*2, 0, mod->m_activeEdgeCount*2); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp index e34aa7392d6..033919cb09d 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp @@ -1575,7 +1575,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD #ifdef DEBUG_TEXTURE // Draw the combined texture for debugging. jba. [4/21/2003] // Setup the vertex buffer, shader & texture. Renderer::Set_Shader(detailAlphaShader); - DX8Wrapper::Set_Texture(0,m_treeTexture); + Renderer::Set_Texture(0,m_treeTexture); DynamicIBAccessClass ib_access(BUFFER_TYPE_DYNAMIC_DX8, 6); //draw an infinite sky plane DynamicVBAccessClass vb_access(BUFFER_TYPE_DYNAMIC_DX8, DX8_FVF_XYZNDUV2, 4); @@ -1642,8 +1642,8 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD } Renderer::Set_Shader(detailAlphaShader); - DX8Wrapper::Set_Texture(0,m_treeTexture); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,m_treeTexture); + Renderer::Set_Texture(1,nullptr); DX8Wrapper::Set_DX8_Texture_Stage_State(0, D3DTSS_TEXCOORDINDEX, 0); DX8Wrapper::Set_DX8_Texture_Stage_State(1, D3DTSS_TEXCOORDINDEX, 1); // Draw all the trees. diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp index 5fa9ad74c40..de9c9efee4f 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp @@ -1647,7 +1647,7 @@ void WaterRenderObjClass::Render(RenderInfoClass & rinfo) m_alphaClippingTexture->Set_Mag_Filter(TextureClass::FILTER_TYPE_NONE); m_alphaClippingTexture->Set_Mip_Mapping(TextureClass::FILTER_TYPE_NONE); - DX8Wrapper::Set_Texture(0,m_alphaClippingTexture); + Renderer::Set_Texture(0,m_alphaClippingTexture); //TODO: Will have to make sure that the shader system is not resetting my stage 1 setup //while rendering the scene @@ -1789,8 +1789,8 @@ void WaterRenderObjClass::drawSea(RenderInfoClass & rinfo) matWW3D._44=1.0f; 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 + Renderer::Set_Texture(0,nullptr); //we'll be setting our own textures, so reset W3D + Renderer::Set_Texture(1,nullptr); //we'll be setting our own textures, so reset W3D Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices @@ -2064,7 +2064,7 @@ void WaterRenderObjClass::renderSky() Renderer::Set_Shader(m_shader2); - DX8Wrapper::Set_Texture(0,setting->skyTexture); + Renderer::Set_Texture(0,setting->skyTexture); //draw an infinite sky plane DynamicVBAccessClass vb_access(BUFFER_TYPE_DYNAMIC_DX8,dynamic_fvf_type,4); @@ -2168,7 +2168,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) // DX8Wrapper::Set_Shader(ShaderClass::/*_PresetAdditiveShader*//*_PresetOpaqueShader*/_PresetAlphaShader); // DX8Wrapper::Set_Texture(0,setting->skyBodyTexture); - DX8Wrapper::Set_Texture(0,m_alphaClippingTexture); + Renderer::Set_Texture(0,m_alphaClippingTexture); //draw an infinite sky plane DynamicVBAccessClass vb_access(BUFFER_TYPE_DYNAMIC_DX8,dynamic_fvf_type,4); @@ -2374,8 +2374,8 @@ void WaterRenderObjClass::renderWaterMesh() setupFlatWaterShader(); #else //DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,setting->waterTexture); - DX8Wrapper::Set_Texture(1,setting->waterTexture); + Renderer::Set_Texture(0,setting->waterTexture); + Renderer::Set_Texture(1,setting->waterTexture); Renderer::Set_Light(0,*m_meshLight); Renderer::Clear_Light(1); @@ -2429,8 +2429,8 @@ void WaterRenderObjClass::renderWaterMesh() m_vertexBufferD3DOffset += mx*my; //advance past vertices already in buffer - DX8Wrapper::Set_Texture(0,nullptr); - DX8Wrapper::Set_Texture(1,nullptr); + Renderer::Set_Texture(0,nullptr); + Renderer::Set_Texture(1,nullptr); ShaderClass::Invalidate(); m_shaderClass.Set_Cull_Mode(oldCullMode); //water should be visible from both sides @@ -2893,7 +2893,7 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig) 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 + Renderer::Set_Texture(0,m_riverTexture); //set to blue setupJbaWaterShader(); @@ -2931,7 +2931,7 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig) void WaterRenderObjClass::setupFlatWaterShader() { - DX8Wrapper::Set_Texture(0,m_riverTexture); + Renderer::Set_Texture(0,m_riverTexture); if (!TheWaterTransparency->m_additiveBlend) Renderer::Set_Shader(ShaderClass::_PresetAlphaShader); else @@ -3374,7 +3374,7 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) Renderer::Set_Shader(ShaderClass::/*_PresetAdditiveShader*//*_PresetOpaqueShader*/_PresetAlphaShader); // DX8Wrapper::Set_Texture(0,setting->skyBodyTexture); - DX8Wrapper::Set_Texture(0,m_alphaClippingTexture); + Renderer::Set_Texture(0,m_alphaClippingTexture); //draw an infinite sky plane DynamicVBAccessClass vb_access(BUFFER_TYPE_DYNAMIC_DX8,4); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp index 1d7f6a2b2f5..41e5ffa5370 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp @@ -934,7 +934,7 @@ Try improving the fit to vertical surfaces like cliffs. while( mod ) { if (LastTextureType != mod->m_type) - DX8Wrapper::Set_Texture(0,mod->m_stageZeroTexture); + Renderer::Set_Texture(0,mod->m_stageZeroTexture); Int vertsRendered=mod->render(m_vertexBuffer,m_batchStart); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index bbb4484b878..4c4412f5675 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -189,6 +189,11 @@ void Renderer::Set_Material(const VertexMaterialClass * material) DX8Wrapper::Set_Material(material); } +void Renderer::Set_Texture(unsigned stage, TextureBaseClass * texture) +{ + DX8Wrapper::Set_Texture(stage, texture); +} + void Renderer::Apply_Render_State_Changes() { DX8Wrapper::Apply_Render_State_Changes(); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index 32a3f7bb77b..15eda13f2a3 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -33,6 +33,7 @@ class LightEnvironmentClass; class Matrix3D; class Matrix4x4; class ShaderClass; +class TextureBaseClass; class Vector3; class VertexMaterialClass; @@ -89,6 +90,7 @@ class Renderer static void Set_Shader(const ShaderClass & shader); static void Set_Material(const VertexMaterialClass * material); + static void Set_Texture(unsigned stage, TextureBaseClass * texture); static void Apply_Render_State_Changes(); static void Set_Transform(RenderTransform transform, const Matrix4x4 & m); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp index 0e82ed825df..38fff92e20e 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp @@ -1687,7 +1687,7 @@ void DX8TextureCategoryClass::Render() for (unsigned i=0;iGet_Texture_Name().str() : "null")); - DX8Wrapper::Set_Texture(i,Peek_Texture(i)); + Renderer::Set_Texture(i,Peek_Texture(i)); } #ifdef WWDEBUG diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp index 9e2d387de09..b1b077869c0 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dynamesh.cpp @@ -304,15 +304,15 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) // Set the DX8 state to the first triangle's state if (texture_array0) { - DX8Wrapper::Set_Texture(0,texture_array0[0]); + Renderer::Set_Texture(0,texture_array0[0]); } else { - DX8Wrapper::Set_Texture(0,MatDesc->Peek_Single_Texture(pass, 0)); + Renderer::Set_Texture(0,MatDesc->Peek_Single_Texture(pass, 0)); } if (texture_array1) { - DX8Wrapper::Set_Texture(1,texture_array1[0]); + Renderer::Set_Texture(1,texture_array1[0]); } else { - DX8Wrapper::Set_Texture(1,MatDesc->Peek_Single_Texture(pass, 1)); + Renderer::Set_Texture(1,MatDesc->Peek_Single_Texture(pass, 1)); } if (material_array) { @@ -384,8 +384,8 @@ void DynamicMeshModel::Render(RenderInfoClass & rinfo) start_tri_idx = next_tri_idx; min_vert_idx = DynamicMeshVNum - 1; max_vert_idx = 0; - if (texture_changed) DX8Wrapper::Set_Texture(0,texture_array0[next_tri_idx]); - if (texture1_changed) DX8Wrapper::Set_Texture(1,texture_array1[next_tri_idx]); + if (texture_changed) Renderer::Set_Texture(0,texture_array0[next_tri_idx]); + if (texture1_changed) Renderer::Set_Texture(1,texture_array1[next_tri_idx]); if (material_changed) Renderer::Set_Material(material_array[tris[next_tri_idx].I]); if (shader_changed) Renderer::Set_Shader(shader_array[next_tri_idx]); } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp b/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp index bdefebcfe1e..ff28fb210d7 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/line3d.cpp @@ -269,7 +269,7 @@ void Line3DClass::Render(RenderInfoClass & rinfo) } Renderer::Set_Shader(Shader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); VertexMaterialClass *vm=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vm); REF_PTR_RELEASE(vm); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp b/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp index 78fe4cba4e4..df8e560e9a5 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/matpass.cpp @@ -122,7 +122,7 @@ void MaterialPassClass::Install_Materials() const Renderer::Set_Shader(Peek_Shader()); for (int i=0;iGet_Max_Textures_Per_Pass();++i) { - DX8Wrapper::Set_Texture(i,Peek_Texture(i)); + Renderer::Set_Texture(i,Peek_Texture(i)); } } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp index 61c5d4f6cec..c086647bd0c 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/pointgr.cpp @@ -925,7 +925,7 @@ void PointGroupClass::Render(RenderInfoClass &rinfo) Renderer::Set_Material(PointMaterial); Renderer::Set_Shader(Shader); - DX8Wrapper::Set_Texture(0,Texture); + Renderer::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. // TheSuperHackers @bugfix stephanmeesters 30/06/2026 However, do not apply sorting to ground-aligned particles. @@ -1855,7 +1855,7 @@ void PointGroupClass::RenderVolumeParticle(RenderInfoClass &rinfo, unsigned int Renderer::Set_Material(PointMaterial); Renderer::Set_Shader(Shader); - DX8Wrapper::Set_Texture(0,Texture); + Renderer::Set_Texture(0,Texture); // Enable sorting if the primitives are translucent and alpha testing is not enabled. // TheSuperHackers @info Volumetric particles, both billboarded and ground-aligned, must have sorting enabled to diff --git a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp index 1ee5a7db528..cc4353deb15 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/ringobj.cpp @@ -533,7 +533,7 @@ void RingRenderObjClass::render_ring(RenderInfoClass & rinfo,const Vector3 & cen RingShader.Set_Texturing (ShaderClass::TEXTURING_DISABLE); } Renderer::Set_Shader(RingShader); - DX8Wrapper::Set_Texture(0,RingTexture); + Renderer::Set_Texture(0,RingTexture); Renderer::Set_Material(RingMaterial); // Enable sorting if the primitive is translucent, alpha testing is not enabled, and sorting is enabled globally. diff --git a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp index 5ed0283b801..75368e99dd2 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/seglinerenderer.cpp @@ -1179,7 +1179,7 @@ void SegLineRendererClass::Render DX8Wrapper::Set_Index_Buffer(ib_access,0); DX8Wrapper::Set_Vertex_Buffer(Verts); Renderer::Set_Material(mat); - DX8Wrapper::Set_Texture(0,Texture); + Renderer::Set_Texture(0,Texture); Renderer::Set_Shader(shader); if (sorting) { diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp index 1355cf3a8f8..b88d1ef0a5d 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp @@ -371,7 +371,7 @@ static void Apply_Render_State(RenderStateStruct& render_state) for (int i=0;iGet_Max_Textures_Per_Pass();++i) { - DX8Wrapper::Set_Texture(i,render_state.Textures[i]); + Renderer::Set_Texture(i,render_state.Textures[i]); } DX8Wrapper::_Set_DX8_Transform(D3DTS_WORLD,render_state.world); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp index d797a75dddd..577c89b5689 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp @@ -470,7 +470,7 @@ void SphereRenderObjClass::render_sphere() SphereShader.Set_Texturing (ShaderClass::TEXTURING_DISABLE); } Renderer::Set_Shader(SphereShader); - DX8Wrapper::Set_Texture(0,SphereTexture); + Renderer::Set_Texture(0,SphereTexture); Renderer::Set_Material(SphereMaterial); // Enable sorting if the primitive is translucent, alpha testing is not enabled, and sorting is enabled globally. diff --git a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp index 0eb0ed1dcb6..85c26cecb9e 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp @@ -1370,7 +1370,7 @@ void StreakRendererClass::RenderStreak DX8Wrapper::Set_Index_Buffer(ib_access,0); DX8Wrapper::Set_Vertex_Buffer(Verts); - DX8Wrapper::Set_Texture(0,Texture); + Renderer::Set_Texture(0,Texture); Renderer::Set_Shader(shader); if (sorting) diff --git a/Core/Tools/W3DView/ScreenCursor.cpp b/Core/Tools/W3DView/ScreenCursor.cpp index d67c6a31974..15218aa171a 100644 --- a/Core/Tools/W3DView/ScreenCursor.cpp +++ b/Core/Tools/W3DView/ScreenCursor.cpp @@ -291,7 +291,7 @@ ScreenCursorClass::Render (RenderInfoClass &rinfo) */ Renderer::Set_Material(m_pVertMaterial.Peek()); Renderer::Set_Shader(ShaderClass::_PresetATestBlend2DShader); - DX8Wrapper::Set_Texture(0,m_pTexture.Peek()); + Renderer::Set_Texture(0,m_pTexture.Peek()); DX8Wrapper::Set_Vertex_Buffer(vbaccess); DX8Wrapper::Set_Index_Buffer(ibaccess,0); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp index 76b4c5aabf4..3a39849d933 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp @@ -634,7 +634,7 @@ static void RenderVBTile(TextureClass *text, Real ox, Real oy, Real ou, Real ov, DX8Wrapper::Set_Index_Buffer(ib_access,0); DX8Wrapper::Set_Vertex_Buffer(vb_access); - DX8Wrapper::Set_Texture(0, text); + Renderer::Set_Texture(0, text); DX8Wrapper::Set_DX8_Render_State(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); DX8Wrapper::Set_DX8_Render_State(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHABLENDENABLE, TRUE ); @@ -697,7 +697,7 @@ void W3DProjectedShadowManager::flushDecals(W3DShadowTexture *texture, ShadowTyp VertexMaterialClass *vmat=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); - DX8Wrapper::Set_Texture(0,texture->getTexture()); + Renderer::Set_Texture(0,texture->getTexture()); // DX8Wrapper::Set_Shader(ShaderClass::_PresetOpaqueShader); //good for debugging, draws without alpha switch (type) diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp index 7543400f2ec..d5a2ac0c5d7 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DVolumetricShadow.cpp @@ -3492,8 +3492,8 @@ void W3DVolumetricShadowManager::renderShadows( Bool forceStencilFill ) REF_PTR_RELEASE(vmat); Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); //turn off textures - DX8Wrapper::Set_Texture(1,nullptr); //turn off textures + Renderer::Set_Texture(0,nullptr); //turn off textures + Renderer::Set_Texture(1,nullptr); //turn off textures Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices // turn off z writing @@ -3679,7 +3679,7 @@ void W3DVolumetricShadowManager::renderShadows( Bool forceStencilFill ) Renderer::Set_Material(vmat); REF_PTR_RELEASE(vmat); Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); Renderer::Apply_Render_State_Changes(); //force update of view and projection matrices renderStencilShadows(); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp index 467126744d3..27d5c25d381 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp @@ -429,11 +429,11 @@ void W3DBibBuffer::renderBibs() DX8Wrapper::Set_Vertex_Buffer(m_vertexBib); Renderer::Set_Shader(detailAlphaShader); if (m_curNumNormalBibIndices) { - DX8Wrapper::Set_Texture(0,m_bibTexture); + Renderer::Set_Texture(0,m_bibTexture); DX8Wrapper::Draw_Triangles( 0, m_curNumNormalBibIndices/3, 0, m_curNumNormalBibVertex); } if (m_curNumBibIndices>m_curNumNormalBibIndices) { - DX8Wrapper::Set_Texture(0,m_highlightBibTexture); + Renderer::Set_Texture(0,m_highlightBibTexture); DX8Wrapper::Draw_Triangles( m_curNumNormalBibIndices, (m_curNumBibIndices-m_curNumNormalBibIndices)/3, m_curNumNormalBibVertex, m_curNumBibVertices-m_curNumNormalBibVertex); } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp index d15ee0364c3..bd786de3c51 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp @@ -132,7 +132,7 @@ are already set. */ void W3DBridge::renderBridge(Bool wireframe) { if (m_visible && m_numPolygons && m_numVertex) { - if (!wireframe) DX8Wrapper::Set_Texture(0,m_bridgeTexture); + if (!wireframe) Renderer::Set_Texture(0,m_bridgeTexture); // Draw all the bridges. DX8Wrapper::Draw_Triangles( m_firstIndex, m_numPolygons, m_firstVertex, m_numVertex); } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp index b4e7d2021b6..cf2e0009fe9 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp @@ -243,7 +243,7 @@ void DebugHintObject::Render(RenderInfoClass & rinfo) { Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Set_Texture(0, nullptr); + Renderer::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp index 94f1ce4da65..f03afe36e3f 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp @@ -3335,7 +3335,7 @@ void W3DRoadBuffer::drawRoads(CameraClass * camera, TextureClass *cloudTexture, if (m_roadTypes[i].getNumIndices() == 0) continue; if (wireframe) { m_roadTypes[i].applyTexture(); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); } else { m_roadTypes[i].applyTexture(); } @@ -3375,11 +3375,11 @@ void W3DRoadBuffer::drawRoads(CameraClass * camera, TextureClass *cloudTexture, loadLitRoadsInVertexAndIndexBuffers(pDynamicLightsIterator); if (this->m_curNumRoadIndices == 0) continue; if (wireframe) { - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); } else { m_roadTypes[i].applyTexture(); if (cloudTexture) { - DX8Wrapper::Set_Texture(1,cloudTexture); + Renderer::Set_Texture(1,cloudTexture); } } Renderer::Set_Shader(detailAlphaShader); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp index 8076b68adbc..e2838260aa1 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DStatusCircle.cpp @@ -320,7 +320,7 @@ void W3DStatusCircle::Render(RenderInfoClass & rinfo) //Apply the shader and material Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Set_Texture(0, nullptr); + Renderer::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferCircle); setIndex = true; @@ -343,7 +343,7 @@ void W3DStatusCircle::Render(RenderInfoClass & rinfo) if (!setIndex) { Renderer::Set_Material(m_vertexMaterialClass); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Texture(0, nullptr); + Renderer::Set_Texture(0, nullptr); } tm.Make_Identity(); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp index 459c9e16d3b..0e04df18475 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/boxrobj.cpp @@ -507,7 +507,7 @@ void BoxRenderObjClass::render_box(RenderInfoClass & rinfo,const Vector3 & cente */ Renderer::Set_Material(_BoxMaterial); Renderer::Set_Shader(_BoxShader); - DX8Wrapper::Set_Texture(0,nullptr); + Renderer::Set_Texture(0,nullptr); DX8Wrapper::Set_Index_Buffer(ibaccess,0); DX8Wrapper::Set_Vertex_Buffer(vbaccess); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp index 8be4eeb688b..0df564993d2 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp @@ -1241,21 +1241,21 @@ void DazzleRenderObjClass::Render_Dazzle(CameraClass* camera) if (halo_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,dazzle_vertex_count); Renderer::Set_Shader(default_halo_shader); - DX8Wrapper::Set_Texture(0,types[type]->Get_Halo_Texture()); + Renderer::Set_Texture(0,types[type]->Get_Halo_Texture()); DX8Wrapper::Draw_Triangles(0,halo_poly_count,0,vertex_count); } if (dazzle_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,0); Renderer::Set_Shader(default_dazzle_shader); - DX8Wrapper::Set_Texture(0,types[type]->Get_Dazzle_Texture()); + Renderer::Set_Texture(0,types[type]->Get_Dazzle_Texture()); DX8Wrapper::Draw_Triangles(0,dazzle_poly_count,0,vertex_count); } if (lensflare_poly_count) { DX8Wrapper::Set_Index_Buffer(ib_access,dazzle_vertex_count+halo_vertex_count); Renderer::Set_Shader(default_dazzle_shader); - DX8Wrapper::Set_Texture(0,lensflare->Get_Texture()); + Renderer::Set_Texture(0,lensflare->Get_Texture()); DX8Wrapper::Draw_Triangles(0,lensflare_poly_count,0,vertex_count); } diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp index c564d182d5f..2ee37cc3bf0 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp @@ -384,7 +384,7 @@ void RigidDecalMeshClass::Render() *=============================================================================================*/ int RigidDecalMeshClass::Process_Material_Run(int start_index) { - DX8Wrapper::Set_Texture(0,Textures[start_index]); + Renderer::Set_Texture(0,Textures[start_index]); Renderer::Set_Material(VertexMaterials[Polys[start_index].I]); Renderer::Set_Shader(Shaders[start_index]); @@ -882,7 +882,7 @@ void SkinDecalMeshClass::Render() *=============================================================================================*/ int SkinDecalMeshClass::Process_Material_Run(int start_index) { - DX8Wrapper::Set_Texture(0,Textures[start_index]); + Renderer::Set_Texture(0,Textures[start_index]); Renderer::Set_Material(VertexMaterials[Polys[start_index].I]); Renderer::Set_Shader(Shaders[start_index]); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp index 1bac424bb32..45880bed22a 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp @@ -260,7 +260,7 @@ void LineGroupClass::Render(RenderInfoClass &rinfo) VertexMaterialClass * linemat = VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(linemat); Renderer::Set_Shader(Shader); - DX8Wrapper::Set_Texture(0, Texture); + Renderer::Set_Texture(0, Texture); REF_PTR_RELEASE(linemat); WWASSERT(StartLineLoc && StartLineLoc->Get_Array()); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp index a7c3f6e26ea..fb4ff755e34 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp @@ -626,7 +626,7 @@ void Render2DClass::Render() vp.min_z = 0; vp.max_z = 1; Renderer::Set_Viewport(vp); - DX8Wrapper::Set_Texture(0,Texture); + Renderer::Set_Texture(0,Texture); VertexMaterialClass *vm=VertexMaterialClass::Get_Preset(VertexMaterialClass::PRELIT_DIFFUSE); Renderer::Set_Material(vm); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp index a7ed425f0dc..2e46cd0d6b7 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp @@ -2085,7 +2085,7 @@ if (_skip_drawobject_render) { Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Set_Texture(0, nullptr); + Renderer::Set_Texture(0, nullptr); DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); Renderer::Apply_Render_State_Changes(); Int count=0; From 8f76332116c7e831a5f29c1be68b12aee5378d12 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 07:59:13 -0400 Subject: [PATCH 4/6] refactor(ww3d2): Route buffers and draw calls via Renderer --- .../W3DDevice/GameClient/BaseHeightMap.cpp | 12 +-- .../Source/W3DDevice/GameClient/HeightMap.cpp | 20 ++-- .../W3DDevice/GameClient/W3DDebugIcons.cpp | 6 +- .../Source/W3DDevice/GameClient/W3DScorch.cpp | 6 +- .../Source/W3DDevice/GameClient/W3DSmudge.cpp | 8 +- .../Source/W3DDevice/GameClient/W3DSnow.cpp | 6 +- .../GameClient/W3DTerrainBackground.cpp | 13 ++- .../W3DDevice/GameClient/W3DTerrainTracks.cpp | 9 +- .../W3DDevice/GameClient/W3DTreeBuffer.cpp | 12 +-- .../W3DDevice/GameClient/Water/W3DWater.cpp | 34 +++---- .../GameClient/Water/W3DWaterTracks.cpp | 6 +- .../WWVegas/WW3D2/Backend/DX8Backend.cpp | 43 +++++++++ .../Libraries/Source/WWVegas/WW3D2/Renderer.h | 17 ++++ .../Source/WWVegas/WW3D2/dx8polygonrenderer.h | 10 +- .../Source/WWVegas/WW3D2/dx8renderer.cpp | 18 ++-- .../Source/WWVegas/WW3D2/dynamesh.cpp | 8 +- .../Libraries/Source/WWVegas/WW3D2/line3d.cpp | 6 +- .../Source/WWVegas/WW3D2/ringobj.cpp | 6 +- .../Source/WWVegas/WW3D2/seglinerenderer.cpp | 6 +- .../Source/WWVegas/WW3D2/sortingrenderer.cpp | 16 ++-- .../Source/WWVegas/WW3D2/sphereobj.cpp | 6 +- .../Source/WWVegas/WW3D2/streakRender.cpp | 6 +- Core/Tools/W3DView/ScreenCursor.cpp | 4 +- .../GameClient/Shadow/W3DProjectedShadow.cpp | 6 +- .../W3DDevice/GameClient/W3DBibBuffer.cpp | 9 +- .../W3DDevice/GameClient/W3DBridgeBuffer.cpp | 10 +- .../W3DDevice/GameClient/W3DInGameUI.cpp | 6 +- .../W3DDevice/GameClient/W3DRoadBuffer.cpp | 12 +-- .../W3DDevice/GameClient/W3DStatusCircle.cpp | 20 ++-- .../Source/WWVegas/WW3D2/boxrobj.cpp | 6 +- .../Libraries/Source/WWVegas/WW3D2/dazzle.cpp | 14 +-- .../Source/WWVegas/WW3D2/decalmsh.cpp | 12 +-- .../Source/WWVegas/WW3D2/linegrp.cpp | 6 +- .../Libraries/Source/WWVegas/WW3D2/mesh.cpp | 8 +- .../Source/WWVegas/WW3D2/render2d.cpp | 6 +- .../Tools/WorldBuilder/src/DrawObject.cpp | 92 +++++++++---------- 36 files changed, 272 insertions(+), 213 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp index aae457c294f..1eaabd81261 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/BaseHeightMap.cpp @@ -2434,9 +2434,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 + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); + Renderer::Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts m_numVisibleShoreLineTiles += indexCount/6; } @@ -2777,9 +2777,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 + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); + Renderer::Draw_Triangles( 0,indexCount/3, 0, vertexCount); //draw a quad, 2 triangles, 4 verts m_numVisibleShoreLineTiles += indexCount/6; } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp index a15ef415d6b..9cec7073429 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/HeightMap.cpp @@ -1934,7 +1934,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) //Apply the shader and material - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); Bool doMultiPassWireFrame=FALSE; @@ -2039,7 +2039,7 @@ void HeightMapRenderObjClass::Render(RenderInfoClass & rinfo) for (j=0; jSetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME); DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ALPHABLENDENABLE,FALSE); DX8Wrapper::Set_DX8_Texture_Stage_State(0,D3DTSS_COLOROP,D3DTOP_SELECTARG2); - DX8Wrapper::Draw_Triangles( 0,smudgesInRenderBatch*4, 0, smudgesInRenderBatch*5); + Renderer::Draw_Triangles( 0,smudgesInRenderBatch*4, 0, smudgesInRenderBatch*5); DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID); DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE); DX8Wrapper::Set_DX8_Texture_Stage_State(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp index c9836a4b127..06b2eef0e34 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSnow.cpp @@ -488,7 +488,7 @@ void W3DSnowManager::renderAsQuads(RenderInfoClass &rinfo, Int cubeOriginX, Int Matrix4x4 identity(true); Renderer::Set_Transform(RenderTransform_View,identity); - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); Int y=cubeOriginY; //loop counter. Int cubeOriginXRemainder = cubeOriginX; //loop counter - adjusted when not all particles fit into render buffer. @@ -566,8 +566,8 @@ void W3DSnowManager::renderAsQuads(RenderInfoClass &rinfo, Int cubeOriginX, Int //Render any particles that may be queued up. if (numberInBatch) { - DX8Wrapper::Set_Vertex_Buffer(vb_access); - DX8Wrapper::Draw_Triangles( 0,numberInBatch*2, 0, numberInBatch*4); + Renderer::Set_Vertex_Buffer(vb_access); + Renderer::Draw_Triangles( 0,numberInBatch*2, 0, numberInBatch*4); totalPart -= numberInBatch; } } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp index 4ef894febdb..721c0aec043 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainBackground.cpp @@ -54,7 +54,6 @@ #include "GameClient/View.h" #include "W3DDevice/GameClient/TerrainTex.h" #include "W3DDevice/GameClient/HeightMap.h" -#include "WW3D2/dx8wrapper.h" #include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/camera.h" @@ -764,8 +763,8 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl return; } // Setup the vertex buffer, shader & texture. - DX8Wrapper::Set_Index_Buffer(m_indexTerrain,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexTerrain); + Renderer::Set_Index_Buffer(m_indexTerrain,0); + Renderer::Set_Vertex_Buffer(m_vertexTerrain); if (!disableTextures) { if (m_terrainTexture4X) { Renderer::Set_Texture(1, m_terrainTexture4X); @@ -775,7 +774,7 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl Renderer::Set_Texture(1, m_terrainTexture); } } - DX8Wrapper::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); + Renderer::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); #else if (m_curNumTerrainIndices == 0) { return; @@ -784,8 +783,8 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl return; } // Setup the vertex buffer, shader & texture. - DX8Wrapper::Set_Index_Buffer(m_indexTerrain,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexTerrain); + Renderer::Set_Index_Buffer(m_indexTerrain,0); + Renderer::Set_Vertex_Buffer(m_vertexTerrain); if (!disableTextures) { if (m_terrainTexture4X) { Renderer::Set_Texture(0, m_terrainTexture4X); @@ -795,7 +794,7 @@ void W3DTerrainBackground::drawVisiblePolys(RenderInfoClass & rinfo, Bool disabl Renderer::Set_Texture(0, m_terrainTexture); } } - DX8Wrapper::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); + Renderer::Draw_Triangles( 0, m_curNumTerrainIndices/3, 0, m_curNumTerrainVertices); #endif } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp index b7532d2d034..eefefe4a434 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTerrainTracks.cpp @@ -54,7 +54,6 @@ #include "WW3D2/rinfo.h" #include "WW3D2/camera.h" #include "WW3D2/assetmgr.h" -#include "WW3D2/dx8wrapper.h" #include "WW3D2/Renderer.h" #include "WW3D2/scene.h" #include "GameLogic/TerrainLogic.h" @@ -902,8 +901,8 @@ Try improving the fit to vertical surfaces like cliffs. ShaderClass::Invalidate(); Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBuffer); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(m_vertexBuffer); trackStartIndex=0; mod=m_usedModules; @@ -913,8 +912,8 @@ Try improving the fit to vertical surfaces like cliffs. if (mod->m_activeEdgeCount >= 2 && mod->Is_Really_Visible()) { Renderer::Set_Texture(0,mod->m_stageZeroTexture); - DX8Wrapper::Set_Index_Buffer_Index_Offset(trackStartIndex); - DX8Wrapper::Draw_Triangles( 0,(mod->m_activeEdgeCount-1)*2, 0, mod->m_activeEdgeCount*2); + Renderer::Set_Index_Buffer_Index_Offset(trackStartIndex); + Renderer::Draw_Triangles( 0,(mod->m_activeEdgeCount-1)*2, 0, mod->m_activeEdgeCount*2); trackStartIndex += mod->m_activeEdgeCount*2; } diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp index 033919cb09d..e2832f1e13e 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DTreeBuffer.cpp @@ -1627,13 +1627,13 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD } } - DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); Matrix3D tm(1); Renderer::Set_Transform(RenderTransform_World,tm); - DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts + Renderer::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts #endif @@ -1715,8 +1715,8 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD if (m_curNumTreeIndices[bNdx]==0) { break; } - DX8Wrapper::Set_Index_Buffer(m_indexTree[bNdx],0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexTree[bNdx]); + Renderer::Set_Index_Buffer(m_indexTree[bNdx],0); + Renderer::Set_Vertex_Buffer(m_vertexTree[bNdx]); // Render the waving grass Renderer::Apply_Render_State_Changes(); if (m_dwTreeVertexShader) { @@ -1725,7 +1725,7 @@ void W3DTreeBuffer::drawTrees(CameraClass * camera, RefRenderObjListIterator *pD DX8Wrapper::_Get_D3D_Device8()->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1); DX8Wrapper::_Get_D3D_Device8()->SetTextureStageState(1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_DISABLE); } - DX8Wrapper::Draw_Triangles( 0, m_curNumTreeIndices[bNdx]/3, 0, m_curNumTreeVertices[bNdx]); + Renderer::Draw_Triangles( 0, m_curNumTreeIndices[bNdx]/3, 0, m_curNumTreeVertices[bNdx]); } DX8Wrapper::Set_Vertex_Shader(DX8_FVF_XYZNDUV1); diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp index de9c9efee4f..72ffdf9e102 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp @@ -2103,14 +2103,14 @@ void WaterRenderObjClass::renderSky() } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(vb_access); Matrix3D tm(1); tm.Set_Translation(Vector3(0,0,0)); Renderer::Set_Transform(RenderTransform_World,tm); - DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts + Renderer::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts } //------------------------------------------------------------------------------------------------- @@ -2207,10 +2207,10 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(vb_access); - DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts + Renderer::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts } //Defines for procedural water animation. @@ -2891,8 +2891,8 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig) Matrix3D tm(1); Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface - DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); Renderer::Set_Texture(0,m_riverTexture); //set to blue setupJbaWaterShader(); @@ -2912,7 +2912,7 @@ void WaterRenderObjClass::drawRiverWater(PolygonTrigger *pTrig) if (wireframeForDebug) { DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME); } - DX8Wrapper::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); + Renderer::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); if (wireframeForDebug) { DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID); } @@ -3255,8 +3255,8 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4]) Matrix3D tm(1); Renderer::Set_Transform(RenderTransform_World,tm); //position the water surface - DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); setupFlatWaterShader();// lorenzen sez use the alpha shader @@ -3292,7 +3292,7 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4]) // } //#endif // FEATHER_WATER //#endif //WAVY_WATER - DX8Wrapper::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2);//lorenzen thinks this is where to itereate the soft shoreline effect + Renderer::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2);//lorenzen thinks this is where to itereate the soft shoreline effect } @@ -3301,7 +3301,7 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4]) if (false) { DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME); m_pDev->SetRenderState(D3DRS_ALPHABLENDENABLE , false); - DX8Wrapper::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); + Renderer::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); m_pDev->SetRenderState(D3DRS_ALPHABLENDENABLE , true); DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID); } @@ -3336,7 +3336,7 @@ void WaterRenderObjClass::drawTrapezoidWater(Vector3 points[4]) //Shroud shader uses z-compare of EQUAL which wouldn't work on water because it doesn't //write to the zbuffer. Change to LESSEQUAL. DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL); - DX8Wrapper::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); + Renderer::Draw_Triangles( 0,rectangleCount*2, 0, (rectangleCount+1)*2); DX8Wrapper::_Get_D3D_Device8()->SetRenderState(D3DRS_ZFUNC, D3DCMP_EQUAL); W3DShaderManager::resetShader(W3DShaderManager::ST_SHROUD_TEXTURE); } @@ -3413,15 +3413,15 @@ void WaterRenderObjClass::renderSkyBody(Matrix3D *mat) } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(vb_access); Matrix3D tm(1); //set position of skybody in world // tm.Set_Translation(Vector3(40,0,0)); Renderer::Set_Transform(RenderTransform_World,tm); - DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts + Renderer::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts } #endif diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp index 41e5ffa5370..bfc9cc48f81 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWaterTracks.cpp @@ -485,8 +485,8 @@ Int WaterTracksObj::render(DX8VertexBufferClass *vertexBuffer, Int batchStart) Int idxCount=(m_y-1)*(m_x*2+2) - 2; //index count - DX8Wrapper::Set_Index_Buffer(TheWaterTracksRenderSystem->m_indexBuffer,batchStart); - DX8Wrapper::Draw_Strip(0,idxCount-2,0,m_x*m_y); //there are always n-2 primitives for n index strip. + Renderer::Set_Index_Buffer(TheWaterTracksRenderSystem->m_indexBuffer,batchStart); + Renderer::Draw_Strip(0,idxCount-2,0,m_x*m_y); //there are always n-2 primitives for n index strip. return batchStart+m_x*m_y; //return new offset into unused area of vertex buffer } @@ -906,7 +906,7 @@ Try improving the fit to vertical surfaces like cliffs. Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBuffer); + Renderer::Set_Vertex_Buffer(m_vertexBuffer); DX8Wrapper::Set_DX8_Render_State(D3DRS_ZBIAS,8); //Force apply of render states so we can override them. Renderer::Apply_Render_State_Changes(); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index 4c4412f5675..91e1da6c783 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -199,6 +199,49 @@ void Renderer::Apply_Render_State_Changes() DX8Wrapper::Apply_Render_State_Changes(); } +void Renderer::Set_Vertex_Buffer(const VertexBufferClass * vb, unsigned stream) +{ + DX8Wrapper::Set_Vertex_Buffer(vb, stream); +} + +void Renderer::Set_Vertex_Buffer(const DynamicVBAccessClass & vba) +{ + DX8Wrapper::Set_Vertex_Buffer(vba); +} + +void Renderer::Set_Index_Buffer(const IndexBufferClass * ib, unsigned short index_base_offset) +{ + DX8Wrapper::Set_Index_Buffer(ib, index_base_offset); +} + +void Renderer::Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned short index_base_offset) +{ + DX8Wrapper::Set_Index_Buffer(iba, index_base_offset); +} + +void Renderer::Set_Index_Buffer_Index_Offset(unsigned offset) +{ + DX8Wrapper::Set_Index_Buffer_Index_Offset(offset); +} + +void Renderer::Draw_Triangles(unsigned buffer_type, unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count) +{ + DX8Wrapper::Draw_Triangles(buffer_type, start_index, polygon_count, min_vertex_index, vertex_count); +} + +void Renderer::Draw_Triangles(unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count) +{ + DX8Wrapper::Draw_Triangles(start_index, polygon_count, min_vertex_index, vertex_count); +} + +void Renderer::Draw_Strip(unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count) +{ + DX8Wrapper::Draw_Strip(start_index, polygon_count, min_vertex_index, vertex_count); +} + void Renderer::Set_Transform(RenderTransform transform, const Matrix4x4 & m) { DX8Wrapper::Set_Transform(To_D3D_Transform(transform), m); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index 15eda13f2a3..51926c80cbe 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -28,6 +28,9 @@ // Forward declarations keep this header includable without pulling in the full // WW3D2 header graph. All W3D classes below are passed by pointer or reference. +class DynamicIBAccessClass; +class DynamicVBAccessClass; +class IndexBufferClass; class LightClass; class LightEnvironmentClass; class Matrix3D; @@ -35,6 +38,7 @@ class Matrix4x4; class ShaderClass; class TextureBaseClass; class Vector3; +class VertexBufferClass; class VertexMaterialClass; struct RenderViewport @@ -93,6 +97,19 @@ class Renderer static void Set_Texture(unsigned stage, TextureBaseClass * texture); static void Apply_Render_State_Changes(); + static void Set_Vertex_Buffer(const VertexBufferClass * vb, unsigned stream = 0); + static void Set_Vertex_Buffer(const DynamicVBAccessClass & vba); + static void Set_Index_Buffer(const IndexBufferClass * ib, unsigned short index_base_offset); + static void Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned short index_base_offset); + static void Set_Index_Buffer_Index_Offset(unsigned offset); + + static void Draw_Triangles(unsigned buffer_type, unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count); + static void Draw_Triangles(unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count); + static void Draw_Strip(unsigned short start_index, unsigned short polygon_count, + unsigned short min_vertex_index, unsigned short vertex_count); + 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); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h index 17b7558049a..0fc32fcdf7d 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8polygonrenderer.h @@ -44,6 +44,8 @@ #include "sortingrenderer.h" #include "WW3D2/mesh.h" #include "dx8wrapper.h" +#include "ww3d.h" +#include "Renderer.h" class DX8PolygonRendererClass; class DX8TextureCategoryClass; @@ -114,10 +116,10 @@ inline void DX8PolygonRendererClass::Render(/*const Matrix3D & tm,*/int base_ver // SNAPSHOT_SAY(("Set_Transform")); SNAPSHOT_SAY(("Set_Index_Buffer_Index_Offset(%d)",base_vertex_offset)); - DX8Wrapper::Set_Index_Buffer_Index_Offset(base_vertex_offset); + Renderer::Set_Index_Buffer_Index_Offset(base_vertex_offset); if (strip) { SNAPSHOT_SAY(("Draw_Strip(%d,%d,%d,%d)",index_offset,index_count-2,min_vertex_index,vertex_index_range)); - DX8Wrapper::Draw_Strip( + Renderer::Draw_Strip( index_offset, index_count-2, min_vertex_index, @@ -125,7 +127,7 @@ inline void DX8PolygonRendererClass::Render(/*const Matrix3D & tm,*/int base_ver } else { SNAPSHOT_SAY(("Draw_Triangles(%d,%d,%d,%d)",index_offset,index_count-2,min_vertex_index,vertex_index_range)); - DX8Wrapper::Draw_Triangles( + Renderer::Draw_Triangles( index_offset, index_count/3, min_vertex_index, @@ -141,7 +143,7 @@ inline void DX8PolygonRendererClass::Render_Sorted(/*const Matrix3D & tm,*/int b SNAPSHOT_SAY(("Set_Index_Buffer_Index_Offset(%d)",base_vertex_offset)); SNAPSHOT_SAY(("Insert_Sorting_Triangles(%d,%d,%d,%d)",index_offset,index_count-2,min_vertex_index,vertex_index_range)); - DX8Wrapper::Set_Index_Buffer_Index_Offset(base_vertex_offset); + Renderer::Set_Index_Buffer_Index_Offset(base_vertex_offset); SortingRendererClass::Insert_Triangles( bounding_sphere, index_offset, diff --git a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp index 38fff92e20e..94a487bc223 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/dx8renderer.cpp @@ -351,8 +351,8 @@ void DX8RigidFVFCategoryContainer::Render_Delayed_Procedural_Material_Passes() if (!Any_Delayed_Passes_To_Render()) return; AnyDelayedPassesToRender=false; - DX8Wrapper::Set_Vertex_Buffer(vertex_buffer); - DX8Wrapper::Set_Index_Buffer(index_buffer,0); + Renderer::Set_Vertex_Buffer(vertex_buffer); + Renderer::Set_Index_Buffer(index_buffer,0); SNAPSHOT_SAY(("DX8RigidFVFCategoryContainer::Render_Delayed_Procedural_Material_Passes()")); @@ -804,8 +804,8 @@ void DX8RigidFVFCategoryContainer::Render() if (!Anything_To_Render()) return; AnythingToRender=false; - DX8Wrapper::Set_Vertex_Buffer(vertex_buffer); - DX8Wrapper::Set_Index_Buffer(index_buffer,0); + Renderer::Set_Vertex_Buffer(vertex_buffer); + Renderer::Set_Index_Buffer(index_buffer,0); SNAPSHOT_SAY(("DX8RigidFVFCategoryContainer::Render()")); for (unsigned p=0;psorting_state); - DX8Wrapper::Draw_Triangles( + Renderer::Draw_Triangles( start_index*3, count_to_render, state->min_vertex_index, @@ -573,7 +573,7 @@ void SortingRendererClass::Flush_Sorting_Pool() SortingNodeStruct* state=overlapping_nodes[node_id]; Apply_Render_State(state->sorting_state); - DX8Wrapper::Draw_Triangles( + Renderer::Draw_Triangles( start_index*3, count_to_render, state->min_vertex_index, @@ -625,7 +625,7 @@ void SortingRendererClass::Flush() } else { DX8Wrapper::Set_Render_State(state->sorting_state); - DX8Wrapper::Draw_Triangles(state->start_index,state->polygon_count,state->min_vertex_index,state->vertex_count); + Renderer::Draw_Triangles(state->start_index,state->polygon_count,state->min_vertex_index,state->vertex_count); DX8Wrapper::Release_Render_State(); Release_Refs(state); clean_list.push_front(state); @@ -637,8 +637,8 @@ void SortingRendererClass::Flush() Flush_Sorting_Pool(); DX8Wrapper::_Enable_Triangle_Draw(old_enable); - DX8Wrapper::Set_Index_Buffer(nullptr,0); - DX8Wrapper::Set_Vertex_Buffer(nullptr); + Renderer::Set_Index_Buffer(nullptr,0); + Renderer::Set_Vertex_Buffer(nullptr); total_sorting_vertices=0; DynamicIBAccessClass::_Reset(false); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp index 577c89b5689..41b00bc31cf 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/sphereobj.cpp @@ -518,13 +518,13 @@ void SphereRenderObjClass::render_sphere() } } - DX8Wrapper::Set_Vertex_Buffer(vb); - DX8Wrapper::Set_Index_Buffer(ib,0); + Renderer::Set_Vertex_Buffer(vb); + Renderer::Set_Index_Buffer(ib,0); if (sort) { SortingRendererClass::Insert_Triangles(Get_Bounding_Sphere(), 0, mesh.face_ct, 0, mesh.Vertex_ct); } else { - DX8Wrapper::Draw_Triangles(0,mesh.face_ct,0,mesh.Vertex_ct); + Renderer::Draw_Triangles(0,mesh.face_ct,0,mesh.Vertex_ct); } } diff --git a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp index 85c26cecb9e..d7b1798a38b 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/streakRender.cpp @@ -1368,8 +1368,8 @@ void StreakRendererClass::RenderStreak } - DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Vertex_Buffer(Verts); + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(Verts); Renderer::Set_Texture(0,Texture); Renderer::Set_Shader(shader); @@ -1379,7 +1379,7 @@ void StreakRendererClass::RenderStreak } else { - DX8Wrapper::Draw_Triangles(0,triangleIndex,0,vnum); + Renderer::Draw_Triangles(0,triangleIndex,0,vnum); } } diff --git a/Core/Tools/W3DView/ScreenCursor.cpp b/Core/Tools/W3DView/ScreenCursor.cpp index 15218aa171a..34100d5a22c 100644 --- a/Core/Tools/W3DView/ScreenCursor.cpp +++ b/Core/Tools/W3DView/ScreenCursor.cpp @@ -293,8 +293,8 @@ ScreenCursorClass::Render (RenderInfoClass &rinfo) Renderer::Set_Shader(ShaderClass::_PresetATestBlend2DShader); Renderer::Set_Texture(0,m_pTexture.Peek()); - DX8Wrapper::Set_Vertex_Buffer(vbaccess); - DX8Wrapper::Set_Index_Buffer(ibaccess,0); + Renderer::Set_Vertex_Buffer(vbaccess); + Renderer::Set_Index_Buffer(ibaccess,0); SphereClass sphere; Get_Obj_Space_Bounding_Sphere(sphere); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp index 3a39849d933..bcc62e9a9b1 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/Shadow/W3DProjectedShadow.cpp @@ -632,14 +632,14 @@ static void RenderVBTile(TextureClass *text, Real ox, Real oy, Real ou, Real ov, ib[4]=0; } - DX8Wrapper::Set_Index_Buffer(ib_access,0); - DX8Wrapper::Set_Vertex_Buffer(vb_access); + Renderer::Set_Index_Buffer(ib_access,0); + Renderer::Set_Vertex_Buffer(vb_access); Renderer::Set_Texture(0, text); DX8Wrapper::Set_DX8_Render_State(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA ); DX8Wrapper::Set_DX8_Render_State(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA ); DX8Wrapper::Set_DX8_Render_State(D3DRS_ALPHABLENDENABLE, TRUE ); ShaderClass::Invalidate(); //invalidate to force shader to reset since we directly changed states - DX8Wrapper::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts + Renderer::Draw_Triangles( 0,2, 0, 4); //draw a quad, 2 triangles, 4 verts } //Debug code used to draw some dummy polygons. diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp index 27d5c25d381..c62d71953fc 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBibBuffer.cpp @@ -56,7 +56,6 @@ #include "W3DDevice/GameClient/HeightMap.h" #include "W3DDevice/GameClient/W3DDynamicLight.h" #include "WW3D2/camera.h" -#include "WW3D2/dx8wrapper.h" #include "WW3D2/Renderer.h" #include "WW3D2/dx8renderer.h" #include "WW3D2/mesh.h" @@ -425,16 +424,16 @@ void W3DBibBuffer::renderBibs() return; } // Setup the vertex buffer, shader & texture. - DX8Wrapper::Set_Index_Buffer(m_indexBib,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBib); + Renderer::Set_Index_Buffer(m_indexBib,0); + Renderer::Set_Vertex_Buffer(m_vertexBib); Renderer::Set_Shader(detailAlphaShader); if (m_curNumNormalBibIndices) { Renderer::Set_Texture(0,m_bibTexture); - DX8Wrapper::Draw_Triangles( 0, m_curNumNormalBibIndices/3, 0, m_curNumNormalBibVertex); + Renderer::Draw_Triangles( 0, m_curNumNormalBibIndices/3, 0, m_curNumNormalBibVertex); } if (m_curNumBibIndices>m_curNumNormalBibIndices) { Renderer::Set_Texture(0,m_highlightBibTexture); - DX8Wrapper::Draw_Triangles( m_curNumNormalBibIndices, (m_curNumBibIndices-m_curNumNormalBibIndices)/3, + Renderer::Draw_Triangles( m_curNumNormalBibIndices, (m_curNumBibIndices-m_curNumNormalBibIndices)/3, m_curNumNormalBibVertex, m_curNumBibVertices-m_curNumNormalBibVertex); } } diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp index bd786de3c51..d7cb2c1c5bd 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DBridgeBuffer.cpp @@ -134,7 +134,7 @@ void W3DBridge::renderBridge(Bool wireframe) if (m_visible && m_numPolygons && m_numVertex) { if (!wireframe) Renderer::Set_Texture(0,m_bridgeTexture); // Draw all the bridges. - DX8Wrapper::Draw_Triangles( m_firstIndex, m_numPolygons, m_firstVertex, m_numVertex); + Renderer::Draw_Triangles( m_firstIndex, m_numPolygons, m_firstVertex, m_numVertex); } } @@ -1163,8 +1163,8 @@ void W3DBridgeBuffer::drawBridges(CameraClass * camera, Bool wireframe, TextureC Renderer::Set_Material(m_vertexMaterial); // Setup the vertex buffer, shader & texture. - DX8Wrapper::Set_Index_Buffer(m_indexBridge,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBridge); + Renderer::Set_Index_Buffer(m_indexBridge,0); + Renderer::Set_Vertex_Buffer(m_vertexBridge); Renderer::Set_Shader(detailAlphaShader); #ifdef RTS_DEBUG //DX8Wrapper::Set_Shader(detailShader); // shows alpha clipping. @@ -1196,8 +1196,8 @@ void W3DBridgeBuffer::drawBridges(CameraClass * camera, Bool wireframe, TextureC Renderer::Invalidate_Cached_Render_States(); Renderer::Set_Shader(ShaderClass::_PresetOpaqueShader); Renderer::Set_Material(m_vertexMaterial); - DX8Wrapper::Set_Index_Buffer(m_indexBridge,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBridge); + Renderer::Set_Index_Buffer(m_indexBridge,0); + Renderer::Set_Vertex_Buffer(m_vertexBridge); Renderer::Apply_Render_State_Changes(); //Apply custom shroud projection shader. W3DShaderManager::setTexture(0,TheTerrainRenderObject->getShroud()->getShroudTexture()); diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp index cf2e0009fe9..7bfeec5d065 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DInGameUI.cpp @@ -244,15 +244,15 @@ void DebugHintObject::Render(RenderInfoClass & rinfo) Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); Renderer::Set_Texture(0, nullptr); - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile); Matrix3D tm = Transform; Vector3 vec(m_myLoc.x, m_myLoc.y, m_myLoc.z); tm.Set_Translation(vec); Renderer::Set_Transform(RenderTransform_World, tm); - DX8Wrapper::Draw_Triangles( 0, 1, 0, 3); + Renderer::Draw_Triangles( 0, 1, 0, 3); } } #endif // RTS_DEBUG diff --git a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp index f03afe36e3f..7cd1b38d558 100644 --- a/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp +++ b/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DRoadBuffer.cpp @@ -160,8 +160,8 @@ RoadType::~RoadType() void RoadType::applyTexture() { W3DShaderManager::setTexture(0,m_roadTexture); - DX8Wrapper::Set_Index_Buffer(m_indexRoad,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexRoad); + Renderer::Set_Index_Buffer(m_indexRoad,0); + Renderer::Set_Vertex_Buffer(m_vertexRoad); } @@ -3347,7 +3347,7 @@ void W3DRoadBuffer::drawRoads(CameraClass * camera, TextureClass *cloudTexture, if (!wireframe) W3DShaderManager::setShader(st, pass); //Draw all this road type. - DX8Wrapper::Draw_Triangles( 0, m_roadTypes[i].getNumIndices()/3, 0, m_roadTypes[i].getNumVertices()); + Renderer::Draw_Triangles( 0, m_roadTypes[i].getNumIndices()/3, 0, m_roadTypes[i].getNumVertices()); #ifdef LOG_STATS polys += m_roadTypes[i].getNumIndices()/3; #endif @@ -3365,8 +3365,8 @@ void W3DRoadBuffer::drawRoads(CameraClass * camera, TextureClass *cloudTexture, #if 0 // Need to use a separate set of index & vertex buffers for this. jba. - DX8Wrapper::Set_Index_Buffer(nullptr,0); - DX8Wrapper::Set_Vertex_Buffer(nullptr); + Renderer::Set_Index_Buffer(nullptr,0); + Renderer::Set_Vertex_Buffer(nullptr); if (pDynamicLightsIterator) { for (i=0; iGet_Halo_Texture()); - DX8Wrapper::Draw_Triangles(0,halo_poly_count,0,vertex_count); + Renderer::Draw_Triangles(0,halo_poly_count,0,vertex_count); } if (dazzle_poly_count) { - DX8Wrapper::Set_Index_Buffer(ib_access,0); + Renderer::Set_Index_Buffer(ib_access,0); Renderer::Set_Shader(default_dazzle_shader); Renderer::Set_Texture(0,types[type]->Get_Dazzle_Texture()); - DX8Wrapper::Draw_Triangles(0,dazzle_poly_count,0,vertex_count); + Renderer::Draw_Triangles(0,dazzle_poly_count,0,vertex_count); } if (lensflare_poly_count) { - DX8Wrapper::Set_Index_Buffer(ib_access,dazzle_vertex_count+halo_vertex_count); + Renderer::Set_Index_Buffer(ib_access,dazzle_vertex_count+halo_vertex_count); Renderer::Set_Shader(default_dazzle_shader); Renderer::Set_Texture(0,lensflare->Get_Texture()); - DX8Wrapper::Draw_Triangles(0,lensflare_poly_count,0,vertex_count); + Renderer::Draw_Triangles(0,lensflare_poly_count,0,vertex_count); } Renderer::Set_Transform(RenderTransform_Projection,old_projection_transform); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp index 2ee37cc3bf0..2d76f894827 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/decalmsh.cpp @@ -355,9 +355,9 @@ void RigidDecalMeshClass::Render() while (next_poly_index < Polys.Count()) { next_poly_index = Process_Material_Run(cur_poly_index); - DX8Wrapper::Set_Index_Buffer(dynamic_ib,0); - DX8Wrapper::Set_Vertex_Buffer(dynamic_vb); - DX8Wrapper::Draw_Triangles( 3*cur_poly_index, + Renderer::Set_Index_Buffer(dynamic_ib,0); + Renderer::Set_Vertex_Buffer(dynamic_vb); + Renderer::Draw_Triangles( 3*cur_poly_index, (next_poly_index - cur_poly_index), // poly count Polys[cur_poly_index].I, 1 + Polys[next_poly_index-1].K - Polys[cur_poly_index].I); @@ -853,9 +853,9 @@ void SkinDecalMeshClass::Render() while (next_poly_index < Polys.Count()) { next_poly_index = Process_Material_Run(cur_poly_index); - DX8Wrapper::Set_Index_Buffer(dynamic_ib,0); - DX8Wrapper::Set_Vertex_Buffer(dynamic_vb); - DX8Wrapper::Draw_Triangles(3*cur_poly_index, + Renderer::Set_Index_Buffer(dynamic_ib,0); + Renderer::Set_Vertex_Buffer(dynamic_vb); + Renderer::Draw_Triangles(3*cur_poly_index, (next_poly_index - cur_poly_index), // poly count Polys[cur_poly_index].I, 1 + Polys[next_poly_index-1].K - Polys[cur_poly_index].I); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp index 45880bed22a..fe0edfe25c8 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/linegrp.cpp @@ -466,13 +466,13 @@ void LineGroupClass::Render(RenderInfoClass &rinfo) } } - DX8Wrapper::Set_Index_Buffer(iba, 0); - DX8Wrapper::Set_Vertex_Buffer(vba); + Renderer::Set_Index_Buffer(iba, 0); + Renderer::Set_Vertex_Buffer(vba); if (sort) { SortingRendererClass::Insert_Triangles(0, num_tris, 0, num_vertices); } else { - DX8Wrapper::Draw_Triangles(0, num_tris, 0, num_vertices); + Renderer::Draw_Triangles(0, num_tris, 0, num_vertices); } // restore the matrices diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp index 9545580b3de..8a2cd10a38d 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/mesh.cpp @@ -853,7 +853,7 @@ void MeshClass::Render_Material_Pass(MaterialPassClass * pass,IndexBufferClass * } } pass->Install_Materials(); - DX8Wrapper::Set_Index_Buffer(ib,0); + Renderer::Set_Index_Buffer(ib,0); SNAPSHOT_SAY(("Set_World_Identity")); Renderer::Set_World_Identity(); @@ -949,9 +949,9 @@ void MeshClass::Render_Material_Pass(MaterialPassClass * pass,IndexBufferClass * pass->Install_Materials(); Renderer::Set_Transform(RenderTransform_World,Get_Transform()); - DX8Wrapper::Set_Index_Buffer(dynamic_ib,vertex_offset); + Renderer::Set_Index_Buffer(dynamic_ib,vertex_offset); - DX8Wrapper::Draw_Triangles( + Renderer::Draw_Triangles( 0, temp_apt.Count(), min_v, @@ -981,7 +981,7 @@ void MeshClass::Render_Material_Pass(MaterialPassClass * pass,IndexBufferClass * } } pass->Install_Materials(); - DX8Wrapper::Set_Index_Buffer(ib,0); + Renderer::Set_Index_Buffer(ib,0); SNAPSHOT_SAY(("Set_World_Transform")); Renderer::Set_Transform(RenderTransform_World,Transform); diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp index fb4ff755e34..e594751eca6 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/render2d.cpp @@ -661,8 +661,8 @@ void Render2DClass::Render() mem[i]=Indices[i]; } - DX8Wrapper::Set_Vertex_Buffer(vb); - DX8Wrapper::Set_Index_Buffer(ib,0); + Renderer::Set_Vertex_Buffer(vb); + Renderer::Set_Index_Buffer(ib,0); if (IsGrayScale) { @@ -696,7 +696,7 @@ void Render2DClass::Render() } else Renderer::Set_Shader(Shader); - DX8Wrapper::Draw_Triangles(0,Indices.Count()/3,0,Vertices.Count()); + Renderer::Draw_Triangles(0,Indices.Count()/3,0,Vertices.Count()); Renderer::Set_Transform(RenderTransform_View,view); Renderer::Set_Transform(RenderTransform_Projection,proj); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp index 2e46cd0d6b7..1509552e1e8 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/DrawObject.cpp @@ -2086,7 +2086,7 @@ if (_skip_drawobject_render) { Renderer::Set_Material(m_vertexMaterialClass); Renderer::Set_Shader(m_shaderClass); Renderer::Set_Texture(0, nullptr); - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); Renderer::Apply_Render_State_Changes(); Int count=0; Int i; @@ -2097,7 +2097,7 @@ if (_skip_drawobject_render) { curHighlight = 0; } m_waterDrawObject->update(); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile1); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile1); if (m_drawObjects || m_drawWaypoints || m_drawBoundingBoxes || m_drawSightRanges || m_drawWeaponRanges || m_drawSoundRanges || m_drawTestArtHighlight) { //Apply the shader and material @@ -2185,7 +2185,7 @@ if (pMapObj->isSelected()) { rememberLastSettingVB1 = setting; updateVB(m_vertexBufferTile1,pMapObj->getColor(), doArrow, doDiamond); } - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile1); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile1); } else { int setting = pMapObj->getColor(); @@ -2201,7 +2201,7 @@ if (pMapObj->isSelected()) { rememberLastSettingVB2 = setting; updateVB(m_vertexBufferTile2, pMapObj->getColor(), doArrow, doDiamond); } - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile2); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile2); } ///@todo - remove the istree stuff, or get the info from the thing template. jba. @@ -2218,20 +2218,20 @@ if (pMapObj->isSelected()) { Renderer::Set_Transform(RenderTransform_World,tm); if (isTree) { - DX8Wrapper::Draw_Triangles( NUM_TRI*3,polyCount, 0, (m_numTriangles*3)); + Renderer::Draw_Triangles( NUM_TRI*3,polyCount, 0, (m_numTriangles*3)); } else { - DX8Wrapper::Draw_Triangles( 0,polyCount, 0, (m_numTriangles*3)); + Renderer::Draw_Triangles( 0,polyCount, 0, (m_numTriangles*3)); } count++; } } if (m_drawPolygonAreas) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferWater); + Renderer::Set_Vertex_Buffer(m_vertexBufferWater); Int selected; for (selected = 0; selected < 2; selected++) { for (PolygonTrigger *pTrig=PolygonTrigger::getFirstPolygonTrigger(); pTrig; pTrig = pTrig->getNext()) { - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); if (!pTrig->getShouldRender()) continue; Bool polySelected = PolygonTool::isSelected(pTrig); if (polySelected && !selected) continue; @@ -2257,10 +2257,10 @@ if (pMapObj->isSelected()) { } if (count&1) { updateVB(m_vertexBufferTile1, color, ARROW, DIAMOND); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile1); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile1); } else { updateVB(m_vertexBufferTile2, color, ARROW, DIAMOND); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile2); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile2); } count++; @@ -2273,20 +2273,20 @@ if (pMapObj->isSelected()) { polyCount -= NUM_ARROW_TRI+NUM_SELECT_TRI; } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); Renderer::Set_Transform(RenderTransform_World,tm); - DX8Wrapper::Draw_Triangles( 0,polyCount, 0, (m_numTriangles*3)); + Renderer::Draw_Triangles( 0,polyCount, 0, (m_numTriangles*3)); } Renderer::Set_Transform(RenderTransform_World,Transform); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile1); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile1); updatePolygonVB(pTrig, polySelected, polySelected && PolygonTool::isSelectedOpen()); - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Index_Buffer(m_indexBuffer,0); } } @@ -2309,10 +2309,10 @@ if (pMapObj->isSelected()) { const Int GREEN = 0x00FF00; // GREEN in BGR. if (count&1) { updateVB(m_vertexBufferTile1, GREEN, true, false); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile1); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile1); } else { updateVB(m_vertexBufferTile2, GREEN, true, false); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferTile2); + Renderer::Set_Vertex_Buffer(m_vertexBufferTile2); } count++; // ok to here. @@ -2327,25 +2327,25 @@ if (pMapObj->isSelected()) { #if 1 Renderer::Set_Transform(RenderTransform_World,tmXX); - DX8Wrapper::Draw_Triangles( 0,polyCountA, 0, (m_numTriangles*3)); + Renderer::Draw_Triangles( 0,polyCountA, 0, (m_numTriangles*3)); #endif } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferWater); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(m_vertexBufferWater); Renderer::Set_Transform(RenderTransform_World,Transform); if (m_drawWaypoints) { updateWaypointVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(m_shaderClass); - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferWater); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(m_vertexBufferWater); } } @@ -2355,19 +2355,19 @@ if (pMapObj->isSelected()) { if (m_meshFeedback) { updateMeshVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(SC_OPAQUE_Z); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME); - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } else if (m_toolWantsFeedback && !m_disableFeedback) { updateFeedbackVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(ShaderClass::_PresetAlpha2DShader); - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } #endif @@ -2376,12 +2376,12 @@ if (pMapObj->isSelected()) { if (m_rampFeedback) { updateRampVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(SC_OPAQUE_Z); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_WIREFRAME); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } #endif @@ -2390,36 +2390,36 @@ if (pMapObj->isSelected()) { if (m_boundaryFeedback) { updateBoundaryVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_SOLID); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } #endif - DX8Wrapper::Set_Vertex_Buffer(nullptr); //release reference to vertex buffer - DX8Wrapper::Set_Index_Buffer(nullptr,0); //release reference to vertex buffer + Renderer::Set_Vertex_Buffer(nullptr); //release reference to vertex buffer + Renderer::Set_Index_Buffer(nullptr,0); //release reference to vertex buffer if (m_ambientSoundFeedback) { updateAmbientSoundVB(); if (m_feedbackIndexCount>0) { - DX8Wrapper::Set_Vertex_Buffer(m_vertexFeedback); - DX8Wrapper::Set_Index_Buffer(m_indexFeedback,0); + Renderer::Set_Vertex_Buffer(m_vertexFeedback); + Renderer::Set_Index_Buffer(m_indexFeedback,0); Renderer::Set_Shader(m_shaderClass); DX8Wrapper::Set_DX8_Render_State(D3DRS_CULLMODE, D3DCULL_NONE); DX8Wrapper::Set_DX8_Render_State(D3DRS_FILLMODE,D3DFILL_SOLID); // we want a solid ramp DX8Wrapper::Set_DX8_Render_State(D3DRS_LIGHTING, FALSE); // disable lighting - DX8Wrapper::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); + Renderer::Draw_Triangles( 0, m_feedbackIndexCount/3, 0, m_feedbackVertexCount); } } - DX8Wrapper::Set_Index_Buffer(m_indexBuffer,0); - DX8Wrapper::Set_Vertex_Buffer(m_vertexBufferWater); + Renderer::Set_Index_Buffer(m_indexBuffer,0); + Renderer::Set_Vertex_Buffer(m_vertexBufferWater); if (m_waterDrawObject) { m_waterDrawObject->renderWater(); From 906929f304b352932309853aa7e5a9f1a78924a8 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 08:00:24 -0400 Subject: [PATCH 5/6] refactor(ww3d2): Route render-target binding via Renderer --- .../W3DDevice/GameClient/Water/W3DWater.cpp | 4 ++-- .../Source/WWVegas/WW3D2/Backend/DX8Backend.cpp | 15 +++++++++++++++ Core/Libraries/Source/WWVegas/WW3D2/Renderer.h | 6 ++++++ .../Libraries/Source/WWVegas/WW3D2/texproject.cpp | 6 +++--- .../Libraries/Source/WWVegas/WW3D2/dazzle.cpp | 2 +- .../Code/Tools/WorldBuilder/src/ObjectPreview.cpp | 6 ++++-- 6 files changed, 31 insertions(+), 8 deletions(-) diff --git a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp index 72ffdf9e102..64ffd916a15 100644 --- a/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp +++ b/Core/GameEngineDevice/Source/W3DDevice/GameClient/Water/W3DWater.cpp @@ -1473,7 +1473,7 @@ void WaterRenderObjClass::renderMirror(CameraClass *cam) Matrix3D OldCameraMatrix=cam->Get_Transform(); - DX8Wrapper::Set_Render_Target_With_Z((TextureClass*)m_pReflectionTexture); + Renderer::Set_Render_Target_With_Z((TextureClass*)m_pReflectionTexture); // Clear the backbuffer if (WW3D::Begin_Render(false,true,Vector3(0.0f,0.0f,0.0f)) == WW3D_ERROR_OK) //clearing only z-buffer since background always filled with clouds @@ -1511,7 +1511,7 @@ void WaterRenderObjClass::renderMirror(CameraClass *cam) } // Change the rendertarget back to the main backbuffer - DX8Wrapper::Set_Render_Target((IDirect3DSurface8 *)nullptr); + Renderer::Set_Default_Render_Target(); } //------------------------------------------------------------------------------------------------- diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index 91e1da6c783..b85ba17ca54 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -179,6 +179,21 @@ void Renderer::Invalidate_Cached_Render_States() DX8Wrapper::Invalidate_Cached_Render_States(); } +void Renderer::Set_Render_Target_With_Z(TextureClass * texture, ZTextureClass * ztexture) +{ + DX8Wrapper::Set_Render_Target_With_Z(texture, ztexture); +} + +void Renderer::Set_Default_Render_Target() +{ + DX8Wrapper::Set_Render_Target(static_cast(nullptr)); +} + +bool Renderer::Is_Render_To_Texture() +{ + return DX8Wrapper::Is_Render_To_Texture(); +} + void Renderer::Set_Shader(const ShaderClass & shader) { DX8Wrapper::Set_Shader(shader); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index 51926c80cbe..b8f2f4dfe85 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -37,9 +37,11 @@ class Matrix3D; class Matrix4x4; class ShaderClass; class TextureBaseClass; +class TextureClass; class Vector3; class VertexBufferClass; class VertexMaterialClass; +class ZTextureClass; struct RenderViewport { @@ -92,6 +94,10 @@ class Renderer static void Set_Viewport(const RenderViewport & viewport); static void Invalidate_Cached_Render_States(); + static void Set_Render_Target_With_Z(TextureClass * texture, ZTextureClass * ztexture = nullptr); + static void Set_Default_Render_Target(); + static bool Is_Render_To_Texture(); + static void Set_Shader(const ShaderClass & shader); static void Set_Material(const VertexMaterialClass * material); static void Set_Texture(unsigned stage, TextureBaseClass * texture); diff --git a/Core/Libraries/Source/WWVegas/WW3D2/texproject.cpp b/Core/Libraries/Source/WWVegas/WW3D2/texproject.cpp index 017fff3efa1..44c7729f512 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/texproject.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/texproject.cpp @@ -84,7 +84,7 @@ #include "matpass.h" #include "bwrender.h" #include "assetmgr.h" -#include "dx8wrapper.h" +#include "Renderer.h" // DEBUG DEBUG @@ -1136,7 +1136,7 @@ bool TexProjectClass::Compute_Texture /* ** Set the render target */ - DX8Wrapper::Set_Render_Target_With_Z (rtarget,ztarget); + Renderer::Set_Render_Target_With_Z (rtarget,ztarget); /* ** Set up the camera @@ -1164,7 +1164,7 @@ bool TexProjectClass::Compute_Texture } WW3D::Activate_Snapshot(snapshot); // End_Render() ends the shapsnot, so restore the state - DX8Wrapper::Set_Render_Target((IDirect3DSurface8 *)nullptr); + Renderer::Set_Default_Render_Target(); return renderResult == WW3D_ERROR_OK; } diff --git a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp index e3f28ef60bd..8bb186dc1a3 100644 --- a/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp +++ b/GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/dazzle.cpp @@ -918,7 +918,7 @@ void DazzleRenderObjClass::Render(RenderInfoClass & rinfo) if ( Is_Not_Hidden_At_All() && _dazzle_rendering_enabled && - !DX8Wrapper::Is_Render_To_Texture() ) + !Renderer::Is_Render_To_Texture() ) { // First check if the dazzle is blinking and is "off" bool is_on = true; diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectPreview.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectPreview.cpp index 515e2ee57dc..f3315c651a5 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectPreview.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectPreview.cpp @@ -47,6 +47,8 @@ #include "W3DDevice/GameClient/W3DAssetManager.h" #include "WW3D2/dx8wrapper.h" +#include "WW3D2/ww3d.h" +#include "WW3D2/Renderer.h" #include "WWLib/TARGA.h" ///////////////////////////////////////////////////////////////////////////// @@ -218,7 +220,7 @@ static UnsignedByte * generatePreview( const ThingTemplate *tt ) } // Set the render target - DX8Wrapper::Set_Render_Target_With_Z(objectTexture); + Renderer::Set_Render_Target_With_Z(objectTexture); // create the camera Bool orthoCamera = false; @@ -250,7 +252,7 @@ static UnsignedByte * generatePreview( const ThingTemplate *tt ) } // Change the rendertarget back to the main backbuffer - DX8Wrapper::Set_Render_Target((IDirect3DSurface8 *)nullptr); + Renderer::Set_Default_Render_Target(); if (renderResult == WW3D_ERROR_OK) { From 1407d163b5aaf12a9d7c1f8e61cd0022d2aa2ecf Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 4 Oct 2026 10:55:15 -0400 Subject: [PATCH 6/6] refactor(ww3d2): Widen Renderer draw arguments to 32 bits --- .../WWVegas/WW3D2/Backend/DX8Backend.cpp | 36 ++++++++++++------- .../Libraries/Source/WWVegas/WW3D2/Renderer.h | 16 ++++----- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp index b85ba17ca54..d6b7df0a4e1 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/Backend/DX8Backend.cpp @@ -28,6 +28,13 @@ #include "WW3D2/lightenvironment.h" #include "WWDebug/wwdebug.h" +static unsigned short To_Unsigned_Short(unsigned int value) +{ + const unsigned short narrowed = static_cast(value); + WWASSERT(narrowed == value); + return narrowed; +} + static D3DTRANSFORMSTATETYPE To_D3D_Transform(RenderTransform transform) { switch (transform) @@ -224,14 +231,14 @@ void Renderer::Set_Vertex_Buffer(const DynamicVBAccessClass & vba) DX8Wrapper::Set_Vertex_Buffer(vba); } -void Renderer::Set_Index_Buffer(const IndexBufferClass * ib, unsigned short index_base_offset) +void Renderer::Set_Index_Buffer(const IndexBufferClass * ib, unsigned int index_base_offset) { - DX8Wrapper::Set_Index_Buffer(ib, index_base_offset); + DX8Wrapper::Set_Index_Buffer(ib, To_Unsigned_Short(index_base_offset)); } -void Renderer::Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned short index_base_offset) +void Renderer::Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned int index_base_offset) { - DX8Wrapper::Set_Index_Buffer(iba, index_base_offset); + DX8Wrapper::Set_Index_Buffer(iba, To_Unsigned_Short(index_base_offset)); } void Renderer::Set_Index_Buffer_Index_Offset(unsigned offset) @@ -239,22 +246,25 @@ void Renderer::Set_Index_Buffer_Index_Offset(unsigned offset) DX8Wrapper::Set_Index_Buffer_Index_Offset(offset); } -void Renderer::Draw_Triangles(unsigned buffer_type, unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count) +void Renderer::Draw_Triangles(unsigned buffer_type, unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count) { - DX8Wrapper::Draw_Triangles(buffer_type, start_index, polygon_count, min_vertex_index, vertex_count); + DX8Wrapper::Draw_Triangles(buffer_type, To_Unsigned_Short(start_index), To_Unsigned_Short(polygon_count), + To_Unsigned_Short(min_vertex_index), To_Unsigned_Short(vertex_count)); } -void Renderer::Draw_Triangles(unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count) +void Renderer::Draw_Triangles(unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count) { - DX8Wrapper::Draw_Triangles(start_index, polygon_count, min_vertex_index, vertex_count); + DX8Wrapper::Draw_Triangles(To_Unsigned_Short(start_index), To_Unsigned_Short(polygon_count), + To_Unsigned_Short(min_vertex_index), To_Unsigned_Short(vertex_count)); } -void Renderer::Draw_Strip(unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count) +void Renderer::Draw_Strip(unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count) { - DX8Wrapper::Draw_Strip(start_index, polygon_count, min_vertex_index, vertex_count); + DX8Wrapper::Draw_Strip(To_Unsigned_Short(start_index), To_Unsigned_Short(polygon_count), + To_Unsigned_Short(min_vertex_index), To_Unsigned_Short(vertex_count)); } void Renderer::Set_Transform(RenderTransform transform, const Matrix4x4 & m) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h index b8f2f4dfe85..4882417fcba 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h +++ b/Core/Libraries/Source/WWVegas/WW3D2/Renderer.h @@ -105,16 +105,16 @@ class Renderer static void Set_Vertex_Buffer(const VertexBufferClass * vb, unsigned stream = 0); static void Set_Vertex_Buffer(const DynamicVBAccessClass & vba); - static void Set_Index_Buffer(const IndexBufferClass * ib, unsigned short index_base_offset); - static void Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned short index_base_offset); + static void Set_Index_Buffer(const IndexBufferClass * ib, unsigned int index_base_offset); + static void Set_Index_Buffer(const DynamicIBAccessClass & iba, unsigned int index_base_offset); static void Set_Index_Buffer_Index_Offset(unsigned offset); - static void Draw_Triangles(unsigned buffer_type, unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count); - static void Draw_Triangles(unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count); - static void Draw_Strip(unsigned short start_index, unsigned short polygon_count, - unsigned short min_vertex_index, unsigned short vertex_count); + static void Draw_Triangles(unsigned buffer_type, unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count); + static void Draw_Triangles(unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count); + static void Draw_Strip(unsigned int start_index, unsigned int polygon_count, + unsigned int min_vertex_index, unsigned int vertex_count); static void Set_Transform(RenderTransform transform, const Matrix4x4 & m); static void Set_Transform(RenderTransform transform, const Matrix3D & m);