- moved the material class to 'common' as well.

This commit is contained in:
Christoph Oelckers 2020-04-11 19:07:08 +02:00
parent 580e463498
commit 65f15e1147
7 changed files with 53 additions and 59 deletions

View file

@ -973,7 +973,6 @@ set (PCH_SOURCES
rendering/hwrenderer/postprocessing/hw_postprocess.cpp
rendering/hwrenderer/postprocessing/hw_postprocess_cvars.cpp
rendering/hwrenderer/postprocessing/hw_postprocessshader.cpp
rendering/hwrenderer/textures/hw_material.cpp
rendering/hwrenderer/textures/hw_precache.cpp
rendering/hwrenderer/utility/hw_clock.cpp
rendering/hwrenderer/utility/hw_cvars.cpp
@ -1080,6 +1079,7 @@ set (PCH_SOURCES
common/audio/music/music_config.cpp
common/thirdparty/sfmt/SFMT.cpp
common/textures/hw_ihwtexture.cpp
common/textures/hw_material.cpp
common/textures/bitmap.cpp
common/textures/m_png.cpp
common/textures/texture.cpp

View file

@ -22,14 +22,14 @@
#include "filesystem.h"
#include "m_png.h"
#include "sbar.h"
#include "stats.h"
#include "r_utility.h"
#include "c_dispatch.h"
#include "v_video.h"
#include "hw_ihwtexture.h"
#include "hw_material.h"
#include "texturemanager.h"
#include "c_cvars.h"
EXTERN_CVAR(Bool, gl_texture_usehires)
IHardwareTexture* CreateHardwareTexture();
//===========================================================================
//
@ -302,7 +302,7 @@ IHardwareTexture *FMaterial::GetLayer(int i, int translation, FTexture **pLayer)
IHardwareTexture *hwtex = layer->SystemTextures.GetHardwareTexture(translation, mExpanded);
if (hwtex == nullptr)
{
hwtex = screen->CreateHardwareTexture();
hwtex = CreateHardwareTexture();
layer->SystemTextures.AddHardwareTexture(translation, mExpanded, hwtex);
}
return hwtex;
@ -310,29 +310,6 @@ IHardwareTexture *FMaterial::GetLayer(int i, int translation, FTexture **pLayer)
return nullptr;
}
//===========================================================================
//
//
//
//===========================================================================
void FMaterial::Precache()
{
screen->PrecacheMaterial(this, 0);
}
//===========================================================================
//
//
//
//===========================================================================
void FMaterial::PrecacheList(SpriteHits &translations)
{
tex->SystemTextures.CleanUnused(translations, mExpanded);
SpriteHits::Iterator it(translations);
SpriteHits::Pair *pair;
while(it.NextPair(pair)) screen->PrecacheMaterial(this, pair->Key);
}
//===========================================================================
//
//
@ -399,6 +376,12 @@ FMaterial * FMaterial::ValidateTexture(FTextureID no, bool expand, bool translat
}
void DeleteMaterial(FMaterial* mat)
{
delete mat;
}
//-----------------------------------------------------------------------------
//
// Make sprite offset adjustment user-configurable per renderer.
@ -425,26 +408,3 @@ CUSTOM_CVAR(Int, r_spriteadjust, 2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
}
}
//==========================================================================
//
// this must be copied back to textures.cpp later.
//
//==========================================================================
FWrapperTexture::FWrapperTexture(int w, int h, int bits)
{
Width = w;
Height = h;
Format = bits;
UseType = ETextureType::SWCanvas;
bNoCompress = true;
auto hwtex = screen->CreateHardwareTexture();
// todo: Initialize here.
SystemTextures.AddHardwareTexture(0, false, hwtex);
}
void DeleteMaterial(FMaterial* mat)
{
delete mat;
}

View file

@ -5,10 +5,7 @@
#include "m_fixed.h"
#include "textures.h"
#include "r_defs.h"
struct FRemapTable;
class FTextureShader;
class IHardwareTexture;
enum
@ -56,8 +53,6 @@ public:
FMaterial(FTexture *tex, bool forceexpand);
~FMaterial();
void SetSpriteRect();
void Precache();
void PrecacheList(SpriteHits &translations);
int GetShaderIndex() const { return mShaderIndex; }
void AddTextureLayer(FTexture *tex)
{

View file

@ -51,6 +51,7 @@
// Wrappers to keep the definitions of these classes out of here.
void DeleteMaterial(FMaterial* mat);
void DeleteSoftwareTexture(FSoftwareTexture *swtex);
IHardwareTexture* CreateHardwareTexture();
FTexture *CreateBrightmapTexture(FImageSource*);
@ -846,3 +847,21 @@ void FTexCoordInfo::GetFromTexture(FTexture *tex, float x, float y, bool forcewo
}
//==========================================================================
//
// this must be copied back to textures.cpp later.
//
//==========================================================================
FWrapperTexture::FWrapperTexture(int w, int h, int bits)
{
Width = w;
Height = h;
Format = bits;
UseType = ETextureType::SWCanvas;
bNoCompress = true;
auto hwtex = CreateHardwareTexture();
// todo: Initialize here.
SystemTextures.AddHardwareTexture(0, false, hwtex);
}

View file

@ -51,10 +51,23 @@ static void PrecacheTexture(FTexture *tex, int cache)
if (cache & (FTextureManager::HIT_Wall | FTextureManager::HIT_Flat | FTextureManager::HIT_Sky))
{
FMaterial * gltex = FMaterial::ValidateTexture(tex, false);
if (gltex) gltex->Precache();
if (gltex) screen->PrecacheMaterial(gltex, 0);
}
}
//===========================================================================
//
//
//
//===========================================================================
static void PrecacheList(FMaterial *gltex, SpriteHits& translations)
{
gltex->tex->SystemTextures.CleanUnused(translations, gltex->isExpanded());
SpriteHits::Iterator it(translations);
SpriteHits::Pair* pair;
while (it.NextPair(pair)) screen->PrecacheMaterial(gltex, pair->Key);
}
//==========================================================================
//
// DFrameBuffer :: PrecacheSprite
@ -64,7 +77,7 @@ static void PrecacheTexture(FTexture *tex, int cache)
static void PrecacheSprite(FTexture *tex, SpriteHits &hits)
{
FMaterial * gltex = FMaterial::ValidateTexture(tex, true);
if (gltex) gltex->PrecacheList(hits);
if (gltex) PrecacheList(gltex, hits);
}
//==========================================================================

View file

@ -15,6 +15,7 @@ class FCanvasTexture;
class FileWriter;
class DCanvas;
struct FLevelLocals;
class PClassActor;
struct FRenderer
{

View file

@ -567,3 +567,9 @@ DEFINE_GLOBAL(CleanYfac_1)
DEFINE_GLOBAL(CleanWidth_1)
DEFINE_GLOBAL(CleanHeight_1)
DEFINE_GLOBAL(generic_ui)
IHardwareTexture* CreateHardwareTexture()
{
return screen->CreateHardwareTexture();
}