Debloat IVideoDriver and IrrlichtDevice includes (#15080)

As the project grows, compile time will not go down unless the header mess
is cleaned up one by one to only include exactly what's needed.
This commit is contained in:
SmallJoker 2024-08-31 11:44:30 +02:00 committed by GitHub
parent a6ba5304c4
commit efd7792add
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 139 additions and 79 deletions

75
irr/include/EVideoTypes.h Normal file

@ -0,0 +1,75 @@
// Copyright (C) 2002-2012 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#pragma once
#include "SMaterial.h" // MATERIAL_MAX_TEXTURES
namespace irr::video
{
//! enumeration for geometry transformation states
enum E_TRANSFORMATION_STATE
{
//! View transformation
ETS_VIEW = 0,
//! World transformation
ETS_WORLD,
//! Projection transformation
ETS_PROJECTION,
//! Texture 0 transformation
//! Use E_TRANSFORMATION_STATE(ETS_TEXTURE_0 + texture_number) to access other texture transformations
ETS_TEXTURE_0,
//! Only used internally
ETS_COUNT = ETS_TEXTURE_0 + MATERIAL_MAX_TEXTURES
};
//! Special render targets, which usually map to dedicated hardware
/** These render targets (besides 0 and 1) need not be supported by gfx cards */
enum E_RENDER_TARGET
{
//! Render target is the main color frame buffer
ERT_FRAME_BUFFER = 0,
//! Render target is a render texture
ERT_RENDER_TEXTURE,
//! Multi-Render target textures
ERT_MULTI_RENDER_TEXTURES,
//! Render target is the main color frame buffer
ERT_STEREO_LEFT_BUFFER,
//! Render target is the right color buffer (left is the main buffer)
ERT_STEREO_RIGHT_BUFFER,
//! Render to both stereo buffers at once
ERT_STEREO_BOTH_BUFFERS,
//! Auxiliary buffer 0
ERT_AUX_BUFFER0,
//! Auxiliary buffer 1
ERT_AUX_BUFFER1,
//! Auxiliary buffer 2
ERT_AUX_BUFFER2,
//! Auxiliary buffer 3
ERT_AUX_BUFFER3,
//! Auxiliary buffer 4
ERT_AUX_BUFFER4
};
//! Enum for the flags of clear buffer
enum E_CLEAR_BUFFER_FLAG
{
ECBF_NONE = 0,
ECBF_COLOR = 1,
ECBF_DEPTH = 2,
ECBF_STENCIL = 4,
ECBF_ALL = ECBF_COLOR | ECBF_DEPTH | ECBF_STENCIL
};
//! Enum for the types of fog distributions to choose from
enum E_FOG_TYPE
{
EFT_FOG_EXP = 0,
EFT_FOG_LINEAR,
EFT_FOG_EXP2
};
} // irr::video

@ -9,14 +9,16 @@
#include "ITexture.h" #include "ITexture.h"
#include "irrArray.h" #include "irrArray.h"
#include "matrix4.h" #include "matrix4.h"
#include "plane3d.h"
#include "dimension2d.h" #include "dimension2d.h"
#include "position2d.h" #include "position2d.h"
#include "IMeshBuffer.h"
#include "EDriverTypes.h" #include "EDriverTypes.h"
#include "EDriverFeatures.h" #include "EDriverFeatures.h"
#include "EPrimitiveTypes.h"
#include "EVideoTypes.h"
#include "SExposedVideoData.h" #include "SExposedVideoData.h"
#include "SOverrideMaterial.h" #include "SOverrideMaterial.h"
#include "S3DVertex.h" // E_VERTEX_TYPE
#include "SVertexIndex.h" // E_INDEX_TYPE
namespace irr namespace irr
{ {
@ -36,77 +38,12 @@ class ISceneNode;
namespace video namespace video
{ {
struct S3DVertex;
struct S3DVertex2TCoords;
struct S3DVertexTangents;
class IImageLoader; class IImageLoader;
class IImageWriter; class IImageWriter;
class IMaterialRenderer; class IMaterialRenderer;
class IGPUProgrammingServices; class IGPUProgrammingServices;
class IRenderTarget; class IRenderTarget;
//! enumeration for geometry transformation states
enum E_TRANSFORMATION_STATE
{
//! View transformation
ETS_VIEW = 0,
//! World transformation
ETS_WORLD,
//! Projection transformation
ETS_PROJECTION,
//! Texture 0 transformation
//! Use E_TRANSFORMATION_STATE(ETS_TEXTURE_0 + texture_number) to access other texture transformations
ETS_TEXTURE_0,
//! Only used internally
ETS_COUNT = ETS_TEXTURE_0 + MATERIAL_MAX_TEXTURES
};
//! Special render targets, which usually map to dedicated hardware
/** These render targets (besides 0 and 1) need not be supported by gfx cards */
enum E_RENDER_TARGET
{
//! Render target is the main color frame buffer
ERT_FRAME_BUFFER = 0,
//! Render target is a render texture
ERT_RENDER_TEXTURE,
//! Multi-Render target textures
ERT_MULTI_RENDER_TEXTURES,
//! Render target is the main color frame buffer
ERT_STEREO_LEFT_BUFFER,
//! Render target is the right color buffer (left is the main buffer)
ERT_STEREO_RIGHT_BUFFER,
//! Render to both stereo buffers at once
ERT_STEREO_BOTH_BUFFERS,
//! Auxiliary buffer 0
ERT_AUX_BUFFER0,
//! Auxiliary buffer 1
ERT_AUX_BUFFER1,
//! Auxiliary buffer 2
ERT_AUX_BUFFER2,
//! Auxiliary buffer 3
ERT_AUX_BUFFER3,
//! Auxiliary buffer 4
ERT_AUX_BUFFER4
};
//! Enum for the flags of clear buffer
enum E_CLEAR_BUFFER_FLAG
{
ECBF_NONE = 0,
ECBF_COLOR = 1,
ECBF_DEPTH = 2,
ECBF_STENCIL = 4,
ECBF_ALL = ECBF_COLOR | ECBF_DEPTH | ECBF_STENCIL
};
//! Enum for the types of fog distributions to choose from
enum E_FOG_TYPE
{
EFT_FOG_EXP = 0,
EFT_FOG_LINEAR,
EFT_FOG_EXP2
};
const c8 *const FogTypeNames[] = { const c8 *const FogTypeNames[] = {
"FogExp", "FogExp",
"FogLinear", "FogLinear",

@ -6,14 +6,16 @@
#include "IReferenceCounted.h" #include "IReferenceCounted.h"
#include "dimension2d.h" #include "dimension2d.h"
#include "IVideoDriver.h"
#include "EDriverTypes.h" #include "EDriverTypes.h"
#include "EDeviceTypes.h" #include "EDeviceTypes.h"
#include "IEventReceiver.h" #include "IEventReceiver.h"
#include "ICursorControl.h" #include "ICursorControl.h"
#include "ITimer.h" #include "ITimer.h"
#include "IOSOperator.h" #include "IOSOperator.h"
#include "irrArray.h"
#include "IrrCompileConfig.h" #include "IrrCompileConfig.h"
#include "position2d.h"
#include "SColor.h" // video::ECOLOR_FORMAT
namespace irr namespace irr
{ {
@ -38,6 +40,9 @@ class ISceneManager;
namespace video namespace video
{ {
class IContextManager; class IContextManager;
class IImage;
class ITexture;
class IVideoDriver;
extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver); extern "C" IRRLICHT_API bool IRRCALLCONV isDriverSupported(E_DRIVER_TYPE driver);
} // end namespace video } // end namespace video

@ -9,7 +9,7 @@
#include "line3d.h" #include "line3d.h"
#include "aabbox3d.h" #include "aabbox3d.h"
#include "matrix4.h" #include "matrix4.h"
#include "IVideoDriver.h" #include "EVideoTypes.h"
namespace irr namespace irr
{ {

@ -26,6 +26,7 @@
#include "IGUISpriteBank.h" #include "IGUISpriteBank.h"
#include "IImageLoader.h" #include "IImageLoader.h"
#include "IFileSystem.h" #include "IFileSystem.h"
#include "IVideoDriver.h"
#include <X11/XKBlib.h> #include <X11/XKBlib.h>
#include <X11/Xatom.h> #include <X11/Xatom.h>

@ -10,6 +10,7 @@
#include "IGUIEnvironment.h" #include "IGUIEnvironment.h"
#include "IImageLoader.h" #include "IImageLoader.h"
#include "IFileSystem.h" #include "IFileSystem.h"
#include "IVideoDriver.h"
#include "os.h" #include "os.h"
#include "CTimer.h" #include "CTimer.h"
#include "irrString.h" #include "irrString.h"

@ -8,6 +8,7 @@
#include "IFileSystem.h" #include "IFileSystem.h"
#include "IGUIElement.h" #include "IGUIElement.h"
#include "IGUIEnvironment.h" #include "IGUIEnvironment.h"
#include "IVideoDriver.h"
#include "os.h" #include "os.h"
#include "CTimer.h" #include "CTimer.h"
#include "CLogger.h" #include "CLogger.h"

@ -17,6 +17,7 @@
#include "COSOperator.h" #include "COSOperator.h"
#include "dimension2d.h" #include "dimension2d.h"
#include "IGUISpriteBank.h" #include "IGUISpriteBank.h"
#include "IVideoDriver.h"
#include <winuser.h> #include <winuser.h>
#include "SExposedVideoData.h" #include "SExposedVideoData.h"

@ -6,7 +6,6 @@
#include "ICameraSceneNode.h" #include "ICameraSceneNode.h"
#include "SViewFrustum.h" #include "SViewFrustum.h"
#include "os.h"
#include "irrMath.h" #include "irrMath.h"
namespace irr namespace irr

@ -38,6 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "script/scripting_client.h" #include "script/scripting_client.h"
#include "gettext.h" #include "gettext.h"
#include <SViewFrustum.h> #include <SViewFrustum.h>
#include <IVideoDriver.h>
#define CAMERA_OFFSET_STEP 200 #define CAMERA_OFFSET_STEP 200
#define WIELDMESH_OFFSET_X 55.0f #define WIELDMESH_OFFSET_X 55.0f

@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/mesh.h" #include "client/mesh.h"
#include "mapblock_mesh.h" #include "mapblock_mesh.h"
#include <IMaterialRenderer.h> #include <IMaterialRenderer.h>
#include <IVideoDriver.h>
#include <matrix4.h> #include <matrix4.h>
#include "mapsector.h" #include "mapsector.h"
#include "mapblock.h" #include "mapblock.h"
@ -192,6 +193,13 @@ void ClientMap::OnRegisterSceneNode()
// we have other way to find it // we have other way to find it
} }
void ClientMap::render()
{
video::IVideoDriver* driver = SceneManager->getVideoDriver();
driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
renderMap(driver, SceneManager->getSceneNodeRenderPass());
}
void ClientMap::getBlocksInViewRange(v3s16 cam_pos_nodes, void ClientMap::getBlocksInViewRange(v3s16 cam_pos_nodes,
v3s16 *p_blocks_min, v3s16 *p_blocks_max, float range) v3s16 *p_blocks_min, v3s16 *p_blocks_max, float range)
{ {

@ -75,12 +75,7 @@ public:
virtual void OnRegisterSceneNode() override; virtual void OnRegisterSceneNode() override;
virtual void render() override virtual void render() override;
{
video::IVideoDriver* driver = SceneManager->getVideoDriver();
driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
renderMap(driver, SceneManager->getSceneNodeRenderPass());
}
virtual const aabb3f &getBoundingBox() const override virtual const aabb3f &getBoundingBox() const override
{ {

@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <cassert> #include <cassert>
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
#include <IVideoDriver.h>
// Simple 2D bitmap class with just the functionality needed here // Simple 2D bitmap class with just the functionality needed here
class Bitmap { class Bitmap {

@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "anaglyph.h" #include "anaglyph.h"
#include "client/camera.h" #include "client/camera.h"
#include <IrrlichtDevice.h>
/// SetColorMaskStep step /// SetColorMaskStep step

@ -21,6 +21,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once #pragma once
#include "irrlichttypes_extrabloated.h" #include "irrlichttypes_extrabloated.h"
namespace irr
{
class IrrlichtDevice;
}
class ShadowRenderer; class ShadowRenderer;
class Camera; class Camera;
class Client; class Client;

@ -19,6 +19,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#pragma once #pragma once
#include "irrlichttypes_extrabloated.h" #include "irrlichttypes_extrabloated.h"
#include <IrrlichtDevice.h> // used in all render/*.cpp
#include <IVideoDriver.h> // used in all render/*.cpp
#include <vector> #include <vector>
#include <memory> #include <memory>
@ -31,6 +33,11 @@ class Client;
class Hud; class Hud;
class ShadowRenderer; class ShadowRenderer;
namespace irr::video
{
class IRenderTarget;
}
struct PipelineContext struct PipelineContext
{ {
PipelineContext(IrrlichtDevice *_device, Client *_client, Hud *_hud, ShadowRenderer *_shadow_renderer, video::SColor _color, v2u32 _target_size) PipelineContext(IrrlichtDevice *_device, Client *_client, Hud *_hud, ShadowRenderer *_shadow_renderer, video::SColor _color, v2u32 _target_size)

@ -29,6 +29,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/render/core.h" #include "client/render/core.h"
// include the shadow mapper classes too // include the shadow mapper classes too
#include "client/shadows/dynamicshadowsrender.h" #include "client/shadows/dynamicshadowsrender.h"
#include <IVideoDriver.h>
#ifdef SERVER #ifdef SERVER
#error Do not include in server builds #error Do not include in server builds

@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/clientenvironment.h" #include "client/clientenvironment.h"
#include "client/clientmap.h" #include "client/clientmap.h"
#include "client/camera.h" #include "client/camera.h"
#include <IVideoDriver.h>
using m4f = core::matrix4; using m4f = core::matrix4;

@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "EShaderTypes.h" #include "EShaderTypes.h"
#include "IGPUProgrammingServices.h" #include "IGPUProgrammingServices.h"
#include "IMaterialRenderer.h" #include "IMaterialRenderer.h"
#include <IVideoDriver.h>
ShadowRenderer::ShadowRenderer(IrrlichtDevice *device, Client *client) : ShadowRenderer::ShadowRenderer(IrrlichtDevice *device, Client *client) :
m_smgr(device->getSceneManager()), m_driver(device->getVideoDriver()), m_smgr(device->getSceneManager()), m_driver(device->getVideoDriver()),

@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <string> #include <string>
#include <vector> #include <vector>
#include <IrrlichtDevice.h>
#include "irrlichttypes_extrabloated.h" #include "irrlichttypes_extrabloated.h"
#include "client/shadows/dynamicshadows.h" #include "client/shadows/dynamicshadows.h"

@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
*/ */
#include "shadowsScreenQuad.h" #include "shadowsScreenQuad.h"
#include <IVideoDriver.h>
shadowScreenQuad::shadowScreenQuad() shadowScreenQuad::shadowScreenQuad()
{ {

@ -6,6 +6,7 @@
#include "util/string.h" #include "util/string.h"
#include <string> #include <string>
#include <vector> #include <vector>
#include <ITexture.h>
GUIAnimatedImage::GUIAnimatedImage(gui::IGUIEnvironment *env, gui::IGUIElement *parent, GUIAnimatedImage::GUIAnimatedImage(gui::IGUIEnvironment *env, gui::IGUIElement *parent,
s32 id, const core::rect<s32> &rectangle) : s32 id, const core::rect<s32> &rectangle) :

@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
*/ */
#include "guiBox.h" #include "guiBox.h"
#include <IVideoDriver.h>
GUIBox::GUIBox(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id, GUIBox::GUIBox(gui::IGUIEnvironment *env, gui::IGUIElement *parent, s32 id,
const core::rect<s32> &rectangle, const core::rect<s32> &rectangle,

@ -37,6 +37,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "util/string.h" #include "util/string.h"
#include "util/enriched_string.h" #include "util/enriched_string.h"
#include "StyleSpec.h" #include "StyleSpec.h"
#include <ICursorControl.h> // gui::ECURSOR_ICON
#include <IGUIStaticText.h> #include <IGUIStaticText.h>
class InventoryManager; class InventoryManager;

@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "guiFormSpecMenu.h" #include "guiFormSpecMenu.h"
#include "client/hud.h" #include "client/hud.h"
#include "client/client.h" #include "client/client.h"
#include <IVideoDriver.h>
GUIInventoryList::GUIInventoryList(gui::IGUIEnvironment *env, GUIInventoryList::GUIInventoryList(gui::IGUIEnvironment *env,
gui::IGUIElement *parent, gui::IGUIElement *parent,

@ -29,6 +29,7 @@
#include <IGUIButton.h> #include <IGUIButton.h>
#include <IGUIStaticText.h> #include <IGUIStaticText.h>
#include <IGUIFont.h> #include <IGUIFont.h>
#include <IVideoDriver.h>
#include "settings.h" #include "settings.h"
#include <algorithm> #include <algorithm>

@ -20,6 +20,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "guiEditBoxWithScrollbar.h" #include "guiEditBoxWithScrollbar.h"
#include <IGUIEditBox.h> #include <IGUIEditBox.h>
#include <IGUIFont.h> #include <IGUIFont.h>
#include <IVideoDriver.h>
#include "client/renderingengine.h" #include "client/renderingengine.h"
#include "porting.h" #include "porting.h"
#include "gettext.h" #include "gettext.h"

@ -24,6 +24,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <IGUIButton.h> #include <IGUIButton.h>
#include <IGUIStaticText.h> #include <IGUIStaticText.h>
#include <IGUIFont.h> #include <IGUIFont.h>
#include <IVideoDriver.h>
#include "porting.h" #include "porting.h"
#include "gettext.h" #include "gettext.h"

@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <SViewFrustum.h> #include <SViewFrustum.h>
#include <IAnimatedMeshSceneNode.h> #include <IAnimatedMeshSceneNode.h>
#include <IVideoDriver.h>
#include "porting.h" #include "porting.h"
GUIScene::GUIScene(gui::IGUIEnvironment *env, scene::ISceneManager *smgr, GUIScene::GUIScene(gui::IGUIEnvironment *env, scene::ISceneManager *smgr,

@ -27,6 +27,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <IGUIButton.h> #include <IGUIButton.h>
#include <IGUIStaticText.h> #include <IGUIStaticText.h>
#include <IGUIFont.h> #include <IGUIFont.h>
#include <IVideoDriver.h>
#include "settings.h" #include "settings.h"
#include "gettext.h" #include "gettext.h"

@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "porting.h" #include "porting.h"
#include "profilergraph.h" #include "profilergraph.h"
#include "IVideoDriver.h"
#include "util/string.h" #include "util/string.h"
void ProfilerGraph::put(const Profiler::GraphValues &values) void ProfilerGraph::put(const Profiler::GraphValues &values)

@ -23,9 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <deque> #include <deque>
#include <utility> #include <utility>
#include <IGUIFont.h> #include <IGUIFont.h>
#include <IVideoDriver.h>
#include "profiler.h" #include "profiler.h"
namespace irr::video {
class IVideoDriver;
}
/* Profiler display */ /* Profiler display */
class ProfilerGraph class ProfilerGraph
{ {

@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "gettext.h" #include "gettext.h"
#include "IGUIStaticText.h" #include "IGUIStaticText.h"
#include "IGUIFont.h" #include "IGUIFont.h"
#include <IrrlichtDevice.h>
#include <ISceneCollisionManager.h> #include <ISceneCollisionManager.h>
#include <iostream> #include <iostream>

@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <IEventReceiver.h> #include <IEventReceiver.h>
#include <IGUIImage.h> #include <IGUIImage.h>
#include <IGUIEnvironment.h> #include <IGUIEnvironment.h>
#include <IrrlichtDevice.h>
#include <memory> #include <memory>
#include <optional> #include <optional>
@ -35,6 +34,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "itemdef.h" #include "itemdef.h"
#include "client/game.h" #include "client/game.h"
namespace irr
{
class IrrlichtDevice;
}
using namespace irr; using namespace irr;
using namespace irr::core; using namespace irr::core;
using namespace irr::gui; using namespace irr::gui;

@ -24,7 +24,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#ifndef SERVER #ifndef SERVER
#include <IMesh.h> #include <IMesh.h>
#include <IImage.h> #include <IImage.h>
#include <IrrlichtDevice.h>
#include <IMeshSceneNode.h> #include <IMeshSceneNode.h>
#include <IDummyTransformationSceneNode.h> #include <IDummyTransformationSceneNode.h>
#include <SMesh.h> #include <SMesh.h>