diff --git a/source/ps/Profiler2GPU.cpp b/source/ps/Profiler2GPU.cpp index 9be0df5922..8cfd0a07d9 100644 --- a/source/ps/Profiler2GPU.cpp +++ b/source/ps/Profiler2GPU.cpp @@ -24,14 +24,20 @@ #include "Profiler2GPU.h" +#include "lib/debug.h" +#include "lib/types.h" #include "ps/ConfigDB.h" #include "ps/Profiler2.h" #include "ps/VideoMode.h" #include "renderer/backend/IDevice.h" -#include "renderer/Renderer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include +#include #include -#include +#include +#include +#include #include /** diff --git a/source/ps/Profiler2GPU.h b/source/ps/Profiler2GPU.h index b80768de79..c9324b4496 100644 --- a/source/ps/Profiler2GPU.h +++ b/source/ps/Profiler2GPU.h @@ -20,18 +20,13 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include "lib/code_annotation.h" + #include class CProfiler2; class CProfiler2GPUImpl; - -namespace Renderer -{ -namespace Backend -{ -class IDeviceCommandContext; -} -} +namespace Renderer::Backend { class IDeviceCommandContext; } /** * Used by CProfiler2 for GPU profiling support. diff --git a/source/ps/VideoMode.cpp b/source/ps/VideoMode.cpp index 43c4a09e0d..70aaac57fb 100644 --- a/source/ps/VideoMode.cpp +++ b/source/ps/VideoMode.cpp @@ -20,6 +20,7 @@ #include "VideoMode.h" #include "graphics/GameView.h" +#include "graphics/ShaderDefines.h" #include "gui/GUIManager.h" #include "lib/config2.h" #include "lib/external_libraries/libsdl.h" diff --git a/source/renderer/AlphaMapCalculator.cpp b/source/renderer/AlphaMapCalculator.cpp index 65c5b927ee..d488070211 100644 --- a/source/renderer/AlphaMapCalculator.cpp +++ b/source/renderer/AlphaMapCalculator.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -22,8 +22,8 @@ #include "precompiled.h" #include "AlphaMapCalculator.h" -#include -#include + +#include "renderer/BlendShapes.h" /////////////////////////////////////////////////////////////////////////////// // CAlphaMapCalculator: functionality for calculating which alpha blend map diff --git a/source/renderer/AlphaMapCalculator.h b/source/renderer/AlphaMapCalculator.h index 2e4c3a860a..d6b21b5c94 100644 --- a/source/renderer/AlphaMapCalculator.h +++ b/source/renderer/AlphaMapCalculator.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -22,8 +22,7 @@ #ifndef INCLUDED_ALPHAMAPCALCULATOR #define INCLUDED_ALPHAMAPCALCULATOR -#include -#include "BlendShapes.h" +struct BlendShape8; // defines for blendmap flipping/rotating #define BLENDMAP_FLIPV 0x01 diff --git a/source/renderer/CPUSkinnedModelRenderer.cpp b/source/renderer/CPUSkinnedModelRenderer.cpp index 916c360774..b0e9955f7b 100644 --- a/source/renderer/CPUSkinnedModelRenderer.cpp +++ b/source/renderer/CPUSkinnedModelRenderer.cpp @@ -17,23 +17,29 @@ #include "precompiled.h" -#include "renderer/CPUSkinnedModelRenderer.h" +#include "CPUSkinnedModelRenderer.h" -#include "graphics/Color.h" -#include "graphics/LightEnv.h" +#include "graphics/MeshManager.h" #include "graphics/Model.h" #include "graphics/ModelDef.h" -#include "graphics/ShaderProgram.h" -#include "lib/bits.h" -#include "lib/sysdep/rtl.h" -#include "maths/Vector3D.h" +#include "graphics/RenderableObject.h" +#include "lib/debug.h" +#include "ps/containers/Span.h" #include "ps/containers/StaticVector.h" +#include "renderer/ModelRenderer.h" #include "renderer/Renderer.h" -#include "renderer/RenderModifiers.h" #include "renderer/VertexArray.h" +#include "renderer/backend/Format.h" +#include "renderer/backend/IBuffer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" +#include +#include #include +class CVector3D; + namespace { diff --git a/source/renderer/CPUSkinnedModelRenderer.h b/source/renderer/CPUSkinnedModelRenderer.h index 361c9c8fe5..b274233fa4 100644 --- a/source/renderer/CPUSkinnedModelRenderer.h +++ b/source/renderer/CPUSkinnedModelRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -22,6 +22,10 @@ #include +class CModel; +class CModelRData; +namespace Renderer::Backend { class IDeviceCommandContext; } + /** * Render animated models using a ShaderRenderModifier. * It calculates vertex data for models on the CPU side. diff --git a/source/renderer/DebugRenderer.h b/source/renderer/DebugRenderer.h index d84972b6db..6caff98ca8 100644 --- a/source/renderer/DebugRenderer.h +++ b/source/renderer/DebugRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -20,8 +20,8 @@ #include "graphics/ShaderTechniquePtr.h" #include "ps/CStrIntern.h" -#include "renderer/backend/IShaderProgram.h" +#include #include #include @@ -30,7 +30,7 @@ class CBrush; class CCamera; class CMatrix3D; class CVector3D; - +namespace Renderer::Backend { class IVertexInputLayout; } struct CColor; // Helper for unoptimized rendering of geometrics primitives. Should not be diff --git a/source/renderer/DecalRData.h b/source/renderer/DecalRData.h index 4729dbbdd1..ffc00cba8f 100644 --- a/source/renderer/DecalRData.h +++ b/source/renderer/DecalRData.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,18 +19,18 @@ #define INCLUDED_DECALRDATA #include "graphics/RenderableObject.h" +#include "lib/code_annotation.h" #include "maths/Vector2D.h" #include "maths/Vector3D.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" #include "renderer/VertexBufferManager.h" - #include class CModelDecal; class CShaderDefines; class CSimulation2; class ShadowMap; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IVertexInputLayout; } class CDecalRData : public CRenderData { diff --git a/source/renderer/GPUSkinnedModelRenderer.cpp b/source/renderer/GPUSkinnedModelRenderer.cpp index ba2a9a0af2..088af8e3d7 100644 --- a/source/renderer/GPUSkinnedModelRenderer.cpp +++ b/source/renderer/GPUSkinnedModelRenderer.cpp @@ -30,6 +30,7 @@ #include "ps/CLogger.h" #include "ps/containers/StaticVector.h" #include "ps/CStrInternStatic.h" +#include "renderer/ModelRenderer.h" #include "renderer/RenderModifiers.h" #include "renderer/Renderer.h" #include "renderer/VertexArray.h" diff --git a/source/renderer/GPUSkinnedModelRenderer.h b/source/renderer/GPUSkinnedModelRenderer.h index 51fd4686a6..60f73ca94e 100644 --- a/source/renderer/GPUSkinnedModelRenderer.h +++ b/source/renderer/GPUSkinnedModelRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -22,6 +22,11 @@ #include +class CModel; +class CModelRData; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } + /** * Render animated models using a ShaderRenderModifier. * It calculates vertex data for models on the GPU side. diff --git a/source/renderer/InstancingModelRenderer.cpp b/source/renderer/InstancingModelRenderer.cpp index b57580ef50..c64b737984 100644 --- a/source/renderer/InstancingModelRenderer.cpp +++ b/source/renderer/InstancingModelRenderer.cpp @@ -16,22 +16,32 @@ */ #include "precompiled.h" -#include "renderer/InstancingModelRenderer.h" -#include "graphics/Color.h" -#include "graphics/LightEnv.h" +#include "InstancingModelRenderer.h" + +#include "graphics/MeshManager.h" #include "graphics/Model.h" #include "graphics/ModelDef.h" +#include "lib/debug.h" +#include "lib/types.h" #include "maths/Vector3D.h" #include "maths/Vector4D.h" -#include "ps/CLogger.h" +#include "ps/containers/Span.h" #include "ps/containers/StaticVector.h" -#include "ps/CStrInternStatic.h" +#include "renderer/ModelRenderer.h" #include "renderer/Renderer.h" -#include "renderer/RenderModifiers.h" #include "renderer/VertexArray.h" +#include "renderer/backend/Format.h" +#include "renderer/backend/IBuffer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" #include "third_party/mikktspace/weldmesh.h" +#include +#include +#include +#include +#include struct IModelDef : public CModelDefRPrivate { diff --git a/source/renderer/MikktspaceWrap.cpp b/source/renderer/MikktspaceWrap.cpp index f3c55d0775..7cd96a772c 100644 --- a/source/renderer/MikktspaceWrap.cpp +++ b/source/renderer/MikktspaceWrap.cpp @@ -17,7 +17,15 @@ #include "precompiled.h" -#include "renderer/MikktspaceWrap.h" +#include "MikktspaceWrap.h" + +#include "graphics/ModelDef.h" +#include "lib/types.h" +#include "maths/Vector2D.h" +#include "maths/Vector3D.h" + +#include +#include MikkTSpace::MikkTSpace(const CModelDefPtr& m, std::vector& v, bool gpuSkinning) : m_Model(m), m_NewVertices(v), m_GpuSkinning(gpuSkinning) diff --git a/source/renderer/MikktspaceWrap.h b/source/renderer/MikktspaceWrap.h index 253ded00df..016db9c78d 100644 --- a/source/renderer/MikktspaceWrap.h +++ b/source/renderer/MikktspaceWrap.h @@ -19,11 +19,12 @@ #define INCLUDED_MIKKWRAP #include "graphics/MeshManager.h" -#include "graphics/ModelDef.h" #include "third_party/mikktspace/mikktspace.h" #include +struct SModelVertex; + class MikkTSpace { diff --git a/source/renderer/ModelRenderer.h b/source/renderer/ModelRenderer.h index c0cd477667..daacebe2e8 100644 --- a/source/renderer/ModelRenderer.h +++ b/source/renderer/ModelRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -24,13 +24,19 @@ #ifndef INCLUDED_MODELRENDERER #define INCLUDED_MODELRENDERER -#include - #include "graphics/MeshManager.h" #include "graphics/RenderableObject.h" -#include "graphics/SColor.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/VertexArray.h" +#include "lib/types.h" + +#include +#include + +class CModel; +class CShaderDefines; +class CVector3D; +namespace Renderer::Backend { class IDeviceCommandContext; } +struct SColor4ub; +template class VertexArrayIterator; class RenderModifier; typedef std::shared_ptr RenderModifierPtr; @@ -44,9 +50,6 @@ typedef std::shared_ptr ModelVertexRendererPtr; class ModelRenderer; typedef std::shared_ptr ModelRendererPtr; -class CModel; -class CShaderDefines; - /** * Class CModelRData: Render data that is maintained per CModel. * ModelRenderer implementations may derive from this class to store diff --git a/source/renderer/ModelVertexRenderer.h b/source/renderer/ModelVertexRenderer.h index dcbfb62501..e0d9b360b1 100644 --- a/source/renderer/ModelVertexRenderer.h +++ b/source/renderer/ModelVertexRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -24,13 +24,13 @@ #define INCLUDED_MODELVERTEXRENDERER #include "graphics/MeshManager.h" -#include "graphics/ShaderProgramPtr.h" -#include "ps/containers/Span.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" class CModel; +class CModelDef; class CModelRData; +namespace PS { template class span; } +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } /** * Class ModelVertexRenderer: Normal ModelRenderer implementations delegate diff --git a/source/renderer/OverlayRenderer.h b/source/renderer/OverlayRenderer.h index 33a6999803..f3a18b33bd 100644 --- a/source/renderer/OverlayRenderer.h +++ b/source/renderer/OverlayRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,16 +19,17 @@ #define INCLUDED_OVERLAYRENDERER #include "graphics/ShaderProgram.h" -#include "renderer/backend/IDeviceCommandContext.h" +#include "lib/code_annotation.h" +class CCamera; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } +struct OverlayRendererInternals; struct SOverlayLine; -struct SOverlayTexturedLine; -struct SOverlaySprite; struct SOverlayQuad; struct SOverlaySphere; -class CCamera; - -struct OverlayRendererInternals; +struct SOverlaySprite; +struct SOverlayTexturedLine; /** * Class OverlayRenderer: Render various bits of data that overlay the diff --git a/source/renderer/ParticleRenderer.cpp b/source/renderer/ParticleRenderer.cpp index d176d04705..b843bc04e1 100644 --- a/source/renderer/ParticleRenderer.cpp +++ b/source/renderer/ParticleRenderer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,15 +19,32 @@ #include "ParticleRenderer.h" +#include "graphics/Camera.h" +#include "graphics/Color.h" #include "graphics/ParticleEmitter.h" +#include "graphics/ParticleEmitterType.h" #include "graphics/ShaderDefines.h" #include "graphics/ShaderManager.h" -#include "graphics/TextureManager.h" +#include "graphics/ShaderTechnique.h" +#include "graphics/ShaderTechniquePtr.h" +#include "lib/debug.h" +#include "maths/BoundingBoxAligned.h" +#include "maths/Matrix3D.h" +#include "maths/Vector3D.h" +#include "ps/CStrIntern.h" #include "ps/CStrInternStatic.h" #include "ps/Profile.h" #include "renderer/DebugRenderer.h" #include "renderer/Renderer.h" #include "renderer/SceneRenderer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" + +#include +#include +#include +#include +#include struct ParticleRendererInternals { diff --git a/source/renderer/ParticleRenderer.h b/source/renderer/ParticleRenderer.h index 725c7cdaae..c3bde08a14 100644 --- a/source/renderer/ParticleRenderer.h +++ b/source/renderer/ParticleRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -18,10 +18,11 @@ #ifndef INCLUDED_PARTICLERENDERER #define INCLUDED_PARTICLERENDERER -#include "renderer/backend/IDeviceCommandContext.h" +#include "lib/code_annotation.h" class CParticleEmitter; class CShaderDefines; +namespace Renderer::Backend { class IDeviceCommandContext; } struct ParticleRendererInternals; /** diff --git a/source/renderer/PatchRData.cpp b/source/renderer/PatchRData.cpp index 31cfa6ef98..83c6d44f39 100644 --- a/source/renderer/PatchRData.cpp +++ b/source/renderer/PatchRData.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -20,8 +20,8 @@ #include "renderer/PatchRData.h" #include "graphics/GameView.h" -#include "graphics/LightEnv.h" #include "graphics/LOSTexture.h" +#include "graphics/LightEnv.h" #include "graphics/Patch.h" #include "graphics/ShaderManager.h" #include "graphics/Terrain.h" @@ -40,13 +40,14 @@ #include "ps/VideoMode.h" #include "ps/World.h" #include "renderer/AlphaMapCalculator.h" +#include "renderer/BlendShapes.h" #include "renderer/DebugRenderer.h" #include "renderer/Renderer.h" #include "renderer/SceneRenderer.h" #include "renderer/TerrainRenderer.h" #include "renderer/WaterManager.h" -#include "simulation2/components/ICmpWaterManager.h" #include "simulation2/Simulation2.h" +#include "simulation2/components/ICmpWaterManager.h" #include #include diff --git a/source/renderer/PatchRData.h b/source/renderer/PatchRData.h index e7b78c6249..55939baca8 100644 --- a/source/renderer/PatchRData.h +++ b/source/renderer/PatchRData.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -20,20 +20,24 @@ #include "graphics/Patch.h" #include "graphics/RenderableObject.h" +#include "lib/code_annotation.h" +#include "lib/types.h" +#include "maths/BoundingBoxAligned.h" #include "maths/Vector2D.h" #include "maths/Vector3D.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" #include "renderer/VertexBufferManager.h" +#include +#include #include -class CPatch; class CShaderDefines; class CSimulation2; class CTerrainTextureEntry; class CTextRenderer; class ShadowMap; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IVertexInputLayout; } ////////////////////////////////////////////////////////////////////////////////////////////////// // CPatchRData: class encapsulating logic for rendering terrain patches; holds per diff --git a/source/renderer/PostprocManager.h b/source/renderer/PostprocManager.h index cc8efd8702..a9b97d3984 100644 --- a/source/renderer/PostprocManager.h +++ b/source/renderer/PostprocManager.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -21,13 +21,18 @@ #include "graphics/ShaderTechniquePtr.h" #include "ps/CStr.h" #include "renderer/backend/IFramebuffer.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" #include "renderer/backend/ITexture.h" #include +#include +#include #include +class CShaderTechnique; +namespace Renderer::Backend { class IDevice; } +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IVertexInputLayout; } + class CPostprocManager { public: diff --git a/source/renderer/RenderModifiers.cpp b/source/renderer/RenderModifiers.cpp index d2c782b944..9b56149529 100644 --- a/source/renderer/RenderModifiers.cpp +++ b/source/renderer/RenderModifiers.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -17,21 +17,23 @@ #include "precompiled.h" -#include "renderer/RenderModifiers.h" +#include "RenderModifiers.h" -#include "graphics/GameView.h" -#include "graphics/LightEnv.h" +#include "graphics/Camera.h" #include "graphics/LOSTexture.h" +#include "graphics/LightEnv.h" #include "graphics/Model.h" -#include "graphics/TextureManager.h" -#include "maths/Vector3D.h" -#include "maths/Vector4D.h" #include "maths/Matrix3D.h" +#include "maths/Vector3D.h" +#include "ps/CStrIntern.h" #include "ps/CStrInternStatic.h" #include "ps/Game.h" #include "renderer/Renderer.h" +#include "renderer/Scene.h" #include "renderer/SceneRenderer.h" #include "renderer/ShadowMap.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" /////////////////////////////////////////////////////////////////////////////////////////////// // LitRenderModifier implementation diff --git a/source/renderer/RenderModifiers.h b/source/renderer/RenderModifiers.h index 02cca7c36d..f9900f3b67 100644 --- a/source/renderer/RenderModifiers.h +++ b/source/renderer/RenderModifiers.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -28,15 +28,15 @@ #ifndef INCLUDED_RENDERMODIFIERS #define INCLUDED_RENDERMODIFIERS -#include "ModelRenderer.h" #include "graphics/Color.h" -#include "graphics/ShaderProgram.h" -#include "graphics/ShaderTechnique.h" -#include "graphics/Texture.h" + +#include class CLightEnv; class CModel; class ShadowMap; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } /** * Class RenderModifier: Some ModelRenderer implementations provide vertex diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index a5224b0f2f..a14eeff1a7 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -53,6 +53,7 @@ #include "ps/VideoMode.h" #include "renderer/backend/IDevice.h" #include "renderer/DebugRenderer.h" +#include "renderer/ModelRenderer.h" #include "renderer/PostprocManager.h" #include "renderer/RenderingOptions.h" #include "renderer/RenderModifiers.h" diff --git a/source/renderer/Renderer.h b/source/renderer/Renderer.h index e0c482fe36..0991926c49 100644 --- a/source/renderer/Renderer.h +++ b/source/renderer/Renderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,15 +19,10 @@ #define INCLUDED_RENDERER #include "graphics/Camera.h" -#include "graphics/ShaderDefines.h" -#include "graphics/ShaderProgramPtr.h" -#include "ps/containers/Span.h" #include "ps/Singleton.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" #include "renderer/RenderingOptions.h" -#include "renderer/Scene.h" +#include #include class CDebugRenderer; @@ -38,6 +33,11 @@ class CShaderManager; class CTextureManager; class CTimeManager; class CVertexBufferManager; +namespace PS { template class span; } +namespace Renderer::Backend { class IDevice; } +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IVertexInputLayout; } +namespace Renderer::Backend { struct SVertexAttributeFormat; } #define g_Renderer CRenderer::GetSingleton() diff --git a/source/renderer/RenderingOptions.h b/source/renderer/RenderingOptions.h index 88d3f39bd9..5a24d561f8 100644 --- a/source/renderer/RenderingOptions.h +++ b/source/renderer/RenderingOptions.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -28,11 +28,10 @@ #define INCLUDED_RENDERINGOPTIONS #include "ps/CStr.h" -#include "ps/CStrIntern.h" #include -class CRenderer; +class CStrIntern; enum RenderPath { diff --git a/source/renderer/Scene.cpp b/source/renderer/Scene.cpp index c010b0337c..49c5ab714f 100644 --- a/source/renderer/Scene.cpp +++ b/source/renderer/Scene.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -17,10 +17,16 @@ #include "precompiled.h" -#include "renderer/Scene.h" +#include "Scene.h" #include "graphics/Model.h" +#include "graphics/ModelAbstract.h" #include "graphics/ParticleEmitter.h" +#include "lib/debug.h" + +#include +#include +#include /////////////////////////////////////////////////////////// // Default implementation traverses the model recursively and uses diff --git a/source/renderer/SceneRenderer.h b/source/renderer/SceneRenderer.h index 851cef13fd..5924661685 100644 --- a/source/renderer/SceneRenderer.h +++ b/source/renderer/SceneRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,28 +19,24 @@ #define INCLUDED_RENDERER_SCENERENDERER #include "graphics/Camera.h" -#include "graphics/ShaderDefines.h" -#include "graphics/ShaderProgramPtr.h" #include "maths/BoundingBoxAligned.h" -#include "ps/Singleton.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/RenderingOptions.h" #include "renderer/Scene.h" #include class CCanvas2D; class CLightEnv; -class CMaterial; class CMaterialManager; -class CModel; class CParticleManager; -class CPatch; +class CShaderDefines; class CSimulation2; +class CVector4D; class ShadowMap; class SkyManager; class TerrainRenderer; class WaterManager; +namespace Renderer::Backend { class IDevice; } +namespace Renderer::Backend { class IDeviceCommandContext; } // rendering modes enum ERenderMode { WIREFRAME, SOLID, EDGED_FACES }; diff --git a/source/renderer/ShadowMap.h b/source/renderer/ShadowMap.h index bc1ad1bbc1..6fa711ae52 100644 --- a/source/renderer/ShadowMap.h +++ b/source/renderer/ShadowMap.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2022 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -19,12 +19,13 @@ #define INCLUDED_SHADOWMAP #include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" class CBoundingBoxAligned; class CCamera; class CFrustum; class CVector3D; +namespace Renderer::Backend { class IDevice; } +namespace Renderer::Backend { class IShaderProgram; } struct ShadowMapInternals; diff --git a/source/renderer/SilhouetteRenderer.cpp b/source/renderer/SilhouetteRenderer.cpp index e9c9902aa2..aed6a75e37 100644 --- a/source/renderer/SilhouetteRenderer.cpp +++ b/source/renderer/SilhouetteRenderer.cpp @@ -19,9 +19,12 @@ #include "SilhouetteRenderer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" #include "graphics/Camera.h" #include "graphics/HFTracer.h" #include "graphics/Model.h" +#include "graphics/Overlay.h" #include "graphics/Patch.h" #include "graphics/ShaderManager.h" #include "maths/MathUtil.h" diff --git a/source/renderer/SilhouetteRenderer.h b/source/renderer/SilhouetteRenderer.h index 9228538238..e884e78371 100644 --- a/source/renderer/SilhouetteRenderer.h +++ b/source/renderer/SilhouetteRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -18,16 +18,19 @@ #ifndef INCLUDED_SILHOUETTERENDERER #define INCLUDED_SILHOUETTERENDERER +#include "graphics/Color.h" #include "graphics/Overlay.h" #include "graphics/ShaderTechniquePtr.h" #include "maths/BoundingBoxAligned.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" + +#include class CCamera; class CModel; class CPatch; class SceneCollector; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IVertexInputLayout; } class SilhouetteRenderer { diff --git a/source/renderer/SkyManager.h b/source/renderer/SkyManager.h index a16aa0a588..d9e28d49a4 100644 --- a/source/renderer/SkyManager.h +++ b/source/renderer/SkyManager.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -25,13 +25,13 @@ #include "graphics/Texture.h" #include "ps/CStr.h" #include "renderer/VertexArray.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" -#include "renderer/backend/ITexture.h" -#include #include +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class ITexture; } +namespace Renderer::Backend { class IVertexInputLayout; } + /** * Class SkyManager: Maintain sky settings and textures, and render the sky. */ diff --git a/source/renderer/TerrainOverlay.h b/source/renderer/TerrainOverlay.h index 47994f3bab..3e78a35230 100644 --- a/source/renderer/TerrainOverlay.h +++ b/source/renderer/TerrainOverlay.h @@ -24,15 +24,20 @@ #define INCLUDED_TERRAINOVERLAY #include "graphics/ShaderTechniquePtr.h" -#include "renderer/backend/ITexture.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" -#include "renderer/backend/PipelineState.h" +#include "lib/code_annotation.h" +#include "lib/types.h" +#include +#include +#include + +class CSimContext; +class CTerrain; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class ITexture; } +namespace Renderer::Backend { class IVertexInputLayout; } struct CColor; struct SColor4ub; -class CTerrain; -class CSimContext; /** * Common interface for terrain-tile-based and texture-based debug overlays. diff --git a/source/renderer/TerrainRenderer.h b/source/renderer/TerrainRenderer.h index 75daa50146..d2cdb5382a 100644 --- a/source/renderer/TerrainRenderer.h +++ b/source/renderer/TerrainRenderer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -24,11 +24,8 @@ #define INCLUDED_TERRAINRENDERER #include "graphics/Color.h" -#include "maths/BoundingBoxAligned.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/ITexture.h" -#include "renderer/backend/IShaderProgram.h" +class CBoundingBoxAligned; class CCamera; class CCanvas2D; class CModelDecal; @@ -36,9 +33,10 @@ class CPatch; class CShaderDefines; class CSimulation2; class CVector2D; - class ShadowMap; - +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } +namespace Renderer::Backend { class ITexture; } struct TerrainRendererInternals; /** diff --git a/source/renderer/TexturedLineRData.cpp b/source/renderer/TexturedLineRData.cpp index e5e929021b..9cba7dc0a5 100644 --- a/source/renderer/TexturedLineRData.cpp +++ b/source/renderer/TexturedLineRData.cpp @@ -19,17 +19,33 @@ #include "TexturedLineRData.h" -#include "graphics/ShaderProgram.h" +#include "graphics/Color.h" #include "graphics/Terrain.h" +#include "graphics/TextureManager.h" +#include "lib/debug.h" #include "maths/Frustum.h" #include "maths/MathUtil.h" #include "maths/Quaternion.h" +#include "ps/CStrIntern.h" #include "ps/CStrInternStatic.h" +#include "ps/containers/Span.h" #include "renderer/OverlayRenderer.h" #include "renderer/Renderer.h" -#include "simulation2/Simulation2.h" -#include "simulation2/system/SimContext.h" +#include "renderer/VertexBuffer.h" +#include "renderer/backend/Format.h" +#include "renderer/backend/IBuffer.h" +#include "renderer/backend/IDeviceCommandContext.h" +#include "renderer/backend/IShaderProgram.h" #include "simulation2/components/ICmpWaterManager.h" +#include "simulation2/system/CmpPtr.h" +#include "simulation2/system/Entity.h" +#include "simulation2/system/SimContext.h" + +#include +#include +#include +#include +#include /* Note: this implementation uses CVertexBufferManager directly rather than access it through the nicer VertexArray interface, * because it allows you to work with variable amounts of vertices and indices more easily. New code should prefer diff --git a/source/renderer/TexturedLineRData.h b/source/renderer/TexturedLineRData.h index 5af90974ca..d7ddc09053 100644 --- a/source/renderer/TexturedLineRData.h +++ b/source/renderer/TexturedLineRData.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -20,14 +20,19 @@ #include "graphics/Overlay.h" #include "graphics/RenderableObject.h" -#include "graphics/ShaderProgram.h" -#include "graphics/TextureManager.h" +#include "lib/code_annotation.h" +#include "lib/types.h" #include "maths/BoundingBoxAligned.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/backend/IShaderProgram.h" +#include "maths/Vector2D.h" +#include "maths/Vector3D.h" #include "renderer/VertexBufferManager.h" +#include + class CFrustum; +namespace Renderer::Backend { class IDeviceCommandContext; } +namespace Renderer::Backend { class IShaderProgram; } +namespace Renderer::Backend { class IVertexInputLayout; } /** * Rendering data for an STexturedOverlayLine. diff --git a/source/renderer/VertexArray.h b/source/renderer/VertexArray.h index e023c0a24e..1f0c8ab472 100644 --- a/source/renderer/VertexArray.h +++ b/source/renderer/VertexArray.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -18,13 +18,20 @@ #ifndef INCLUDED_VERTEXARRAY #define INCLUDED_VERTEXARRAY +#include "lib/debug.h" +#include "lib/types.h" +#include "renderer/VertexBuffer.h" +#include "renderer/VertexBufferManager.h" #include "renderer/backend/Format.h" #include "renderer/backend/IBuffer.h" -#include "renderer/backend/IDeviceCommandContext.h" -#include "renderer/VertexBufferManager.h" +#include +#include +#include #include +namespace Renderer::Backend { class IDeviceCommandContext; } + // Iterator template class VertexArrayIterator diff --git a/source/renderer/VertexBuffer.cpp b/source/renderer/VertexBuffer.cpp index ad087951f8..08931fe0f4 100644 --- a/source/renderer/VertexBuffer.cpp +++ b/source/renderer/VertexBuffer.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -21,8 +21,9 @@ #include "lib/sysdep/cpu.h" #include "ps/CLogger.h" -#include "renderer/backend/IDevice.h" #include "renderer/Renderer.h" +#include "renderer/backend/IDevice.h" +#include "renderer/backend/IDeviceCommandContext.h" #include #include diff --git a/source/renderer/VertexBuffer.h b/source/renderer/VertexBuffer.h index f945165495..75880aff3e 100644 --- a/source/renderer/VertexBuffer.h +++ b/source/renderer/VertexBuffer.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -22,13 +22,17 @@ #ifndef INCLUDED_VERTEXBUFFER #define INCLUDED_VERTEXBUFFER +#include "lib/code_annotation.h" #include "renderer/backend/IBuffer.h" -#include "renderer/backend/IDevice.h" -#include "renderer/backend/IDeviceCommandContext.h" +#include +#include #include #include +namespace Renderer::Backend { class IDevice; } +namespace Renderer::Backend { class IDeviceCommandContext; } + /** * CVertexBuffer: encapsulation of backend buffers, also supplying * some additional functionality for sharing buffers between multiple objects. diff --git a/source/renderer/VertexBufferManager.h b/source/renderer/VertexBufferManager.h index 128448a3cd..7687670b00 100644 --- a/source/renderer/VertexBufferManager.h +++ b/source/renderer/VertexBufferManager.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Wildfire Games. +/* Copyright (C) 2025 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -24,11 +24,16 @@ #include "lib/types.h" #include "renderer/VertexBuffer.h" +#include "renderer/backend/IBuffer.h" +#include +#include #include #include #include +namespace Renderer::Backend { class IDevice; } + // CVertexBufferManager: owner object for CVertexBuffer objects; acts as // 'front end' for their allocation and destruction class CVertexBufferManager diff --git a/source/simulation2/components/CCmpOverlayRenderer.cpp b/source/simulation2/components/CCmpOverlayRenderer.cpp index 0a942c3da5..7579caee01 100644 --- a/source/simulation2/components/CCmpOverlayRenderer.cpp +++ b/source/simulation2/components/CCmpOverlayRenderer.cpp @@ -17,18 +17,18 @@ #include "precompiled.h" -#include "simulation2/system/Component.h" #include "ICmpOverlayRenderer.h" -#include "ICmpPosition.h" -#include "ICmpRangeManager.h" - -#include "simulation2/MessageTypes.h" #include "graphics/Overlay.h" #include "graphics/TextureManager.h" -#include "renderer/Renderer.h" #include "ps/CLogger.h" #include "ps/Profile.h" +#include "renderer/Renderer.h" +#include "renderer/Scene.h" +#include "simulation2/MessageTypes.h" +#include "simulation2/components/ICmpPosition.h" +#include "simulation2/components/ICmpRangeManager.h" +#include "simulation2/system/Component.h" class CCmpOverlayRenderer final : public ICmpOverlayRenderer { diff --git a/source/simulation2/components/CCmpRallyPointRenderer.cpp b/source/simulation2/components/CCmpRallyPointRenderer.cpp index 16ae6866a3..77301314b9 100644 --- a/source/simulation2/components/CCmpRallyPointRenderer.cpp +++ b/source/simulation2/components/CCmpRallyPointRenderer.cpp @@ -16,12 +16,14 @@ */ #include "precompiled.h" -#include "CCmpRallyPointRenderer.h" -#include "ICmpIdentity.h" -#include "ps/algorithm.h" +#include "CCmpRallyPointRenderer.h" + #include "ps/Profile.h" +#include "ps/algorithm.h" +#include "renderer/Scene.h" #include "renderer/backend/Sampler.h" +#include "simulation2/components/ICmpIdentity.h" #include "simulation2/components/ICmpRangeManager.h" #include "simulation2/helpers/Los.h" diff --git a/source/simulation2/components/CCmpRangeOverlayRenderer.cpp b/source/simulation2/components/CCmpRangeOverlayRenderer.cpp index f5f6e3dadc..1665d0a763 100644 --- a/source/simulation2/components/CCmpRangeOverlayRenderer.cpp +++ b/source/simulation2/components/CCmpRangeOverlayRenderer.cpp @@ -22,6 +22,7 @@ #include "graphics/Overlay.h" #include "graphics/TextureManager.h" #include "renderer/Renderer.h" +#include "renderer/Scene.h" #include "simulation2/MessageTypes.h" #include "simulation2/components/ICmpOwnership.h" #include "simulation2/components/ICmpPlayer.h"