mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 23:02:08 +00:00
- minor FTexture cleanup.
This commit is contained in:
parent
b4e9c3f20d
commit
721b857e5e
14 changed files with 120 additions and 112 deletions
|
@ -39,6 +39,7 @@
|
|||
#include "colormatcher.h"
|
||||
#include "templates.h"
|
||||
#include "palettecontainer.h"
|
||||
#include "files.h"
|
||||
|
||||
PaletteContainer GPalette;
|
||||
FColorMatcher ColorMatcher;
|
||||
|
@ -58,18 +59,31 @@ void PaletteContainer::Init(int numslots) // This cannot be a constructor!!!
|
|||
remap.Inactive = true;
|
||||
AddRemap(&remap);
|
||||
TranslationTables.Resize(numslots);
|
||||
ColorMatcher.SetPalette(BaseColors);
|
||||
}
|
||||
|
||||
void PaletteContainer::SetPalette(const uint8_t* colors)
|
||||
void PaletteContainer::SetPalette(const uint8_t* colors, int transparent_index)
|
||||
{
|
||||
// At this point we do not care about the transparent index yet.
|
||||
for (int i = 0; i < 256; i++, colors += 3)
|
||||
{
|
||||
BaseColors[i] = PalEntry(colors[0], colors[1], colors[2]);
|
||||
BaseColors[i] = PalEntry(255, colors[0], colors[1], colors[2]);
|
||||
Remap[i] = i;
|
||||
}
|
||||
|
||||
uniqueRemaps[0]->MakeIdentity(); // update the identity remap.
|
||||
|
||||
if (transparent_index >= 0 && transparent_index <= 255)
|
||||
{
|
||||
BaseColors[transparent_index] = 0;
|
||||
uniqueRemaps[0]->Palette[transparent_index] = 0;
|
||||
}
|
||||
|
||||
uniqueRemaps[0]->crc32 = CalcCRC32((uint8_t*)uniqueRemaps[0]->Palette, sizeof(uniqueRemaps[0]->Palette));
|
||||
|
||||
|
||||
// Find white and black from the original palette so that they can be
|
||||
// used to make an educated guess of the translucency % for a BOOM
|
||||
// used to make an educated guess of the translucency % for a
|
||||
// translucency map.
|
||||
WhiteIndex = BestColor((uint32_t*)BaseColors, 255, 255, 255, 0, 255);
|
||||
BlackIndex = BestColor((uint32_t*)BaseColors, 0, 0, 0, 0, 255);
|
||||
|
@ -89,6 +103,35 @@ void PaletteContainer::Clear()
|
|||
TranslationTables.Reset();
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
int PaletteContainer::DetermineTranslucency(FileReader& tranmap)
|
||||
{
|
||||
uint8_t index;
|
||||
PalEntry newcolor;
|
||||
PalEntry newcolor2;
|
||||
|
||||
if (!tranmap.isOpen()) return 255;
|
||||
tranmap.Seek(GPalette.BlackIndex * 256 + GPalette.WhiteIndex, FileReader::SeekSet);
|
||||
tranmap.Read(&index, 1);
|
||||
|
||||
newcolor = GPalette.BaseColors[GPalette.Remap[index]];
|
||||
|
||||
tranmap.Seek(GPalette.WhiteIndex * 256 + GPalette.BlackIndex, FileReader::SeekSet);
|
||||
tranmap.Read(&index, 1);
|
||||
newcolor2 = GPalette.BaseColors[GPalette.Remap[index]];
|
||||
if (newcolor2.r == 255) // if black on white results in white it's either
|
||||
// fully transparent or additive
|
||||
{
|
||||
return -newcolor.r;
|
||||
}
|
||||
return newcolor.r;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
|
@ -166,7 +209,7 @@ FRemapTable *PaletteContainer::TranslationToTable(int translation)
|
|||
|
||||
if (type <= 0 || type >= TranslationTables.Size() || index >= NumTranslations(type))
|
||||
{
|
||||
return NULL;
|
||||
return uniqueRemaps[0]; // this is the identity table.
|
||||
}
|
||||
return GetTranslation(type, index);
|
||||
}
|
||||
|
@ -664,10 +707,10 @@ bool FRemapTable::AddToTranslation(const char *range)
|
|||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
bool FRemapTable::AddColors(int start, int count, const uint8_t*colors)
|
||||
bool FRemapTable::AddColors(int start, int count, const uint8_t*colors, int trans_color)
|
||||
{
|
||||
int end = start + count;
|
||||
if (IndexOutOfRange(start, end))
|
||||
if (IndexOutOfRange(start, end-1))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -680,7 +723,7 @@ bool FRemapTable::AddColors(int start, int count, const uint8_t*colors)
|
|||
colors += 3;
|
||||
|
||||
int j = GPalette.Remap[i];
|
||||
Palette[j] = PalEntry(j == 0 ? 0 : 255, br, bg, bb);
|
||||
Palette[j] = PalEntry(j == trans_color ? 0 : 255, br, bg, bb);
|
||||
Remap[j] = ColorMatcher.Pick(Palette[j]);
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
#include "memarena.h"
|
||||
#include "palentry.h"
|
||||
|
||||
class FileReader;
|
||||
|
||||
struct FRemapTable
|
||||
{
|
||||
FRemapTable(int count = 256) { NumEntries = count; }
|
||||
|
@ -18,7 +20,7 @@ struct FRemapTable
|
|||
bool AddColourisation(int start, int end, int r, int g, int b);
|
||||
bool AddTint(int start, int end, int r, int g, int b, int amount);
|
||||
bool AddToTranslation(const char* range);
|
||||
bool AddColors(int start, int count, const uint8_t*);
|
||||
bool AddColors(int start, int count, const uint8_t*, int trans_color = 0);
|
||||
|
||||
uint8_t Remap[256]; // For the software renderer
|
||||
PalEntry Palette[256]; // The ideal palette this maps to
|
||||
|
@ -79,8 +81,9 @@ private:
|
|||
TArray<TAutoGrowArray<FRemapTablePtr, FRemapTable*>> TranslationTables;
|
||||
public:
|
||||
void Init(int numslots); // This cannot be a constructor!!!
|
||||
void SetPalette(const uint8_t* colors);
|
||||
void SetPalette(const uint8_t* colors, int transparent_index = -1);
|
||||
void Clear();
|
||||
int DetermineTranslucency(FileReader& file);
|
||||
FRemapTable* AddRemap(FRemapTable* remap);
|
||||
void UpdateTranslation(int trans, FRemapTable* remap);
|
||||
int AddTranslation(int slot, FRemapTable* remap, int count = 1);
|
||||
|
|
|
@ -51,6 +51,7 @@ public:
|
|||
FColorMatcher (const uint32_t *palette) { Pal = reinterpret_cast<const PalEntry*>(palette); }
|
||||
FColorMatcher (const FColorMatcher &other) = default;
|
||||
|
||||
void SetPalette(PalEntry* palette) { Pal = palette; }
|
||||
void SetPalette (const uint32_t *palette) { Pal = reinterpret_cast<const PalEntry*>(palette); }
|
||||
uint8_t Pick (int r, int g, int b)
|
||||
{
|
||||
|
|
|
@ -234,7 +234,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla
|
|||
for (auto entry : array)
|
||||
{
|
||||
FTexture *tex = TexMan.GetTexture(entry, false);
|
||||
if (tex && tex->SourceLump >= 0 && fileSystem.GetFileContainer(tex->SourceLump) <= fileSystem.GetMaxIwadNum() && tex->UseType == ETextureType::MiscPatch)
|
||||
if (tex && tex->GetSourceLump() >= 0 && fileSystem.GetFileContainer(tex->GetSourceLump()) <= fileSystem.GetMaxIwadNum() && tex->GetUseType() == ETextureType::MiscPatch)
|
||||
{
|
||||
texs[i] = tex;
|
||||
}
|
||||
|
@ -389,8 +389,8 @@ void FFont::ReadSheetFont(TArray<FolderEntry> &folderdata, int width, int height
|
|||
if (lump.isValid())
|
||||
{
|
||||
auto tex = TexMan.GetTexture(lump);
|
||||
int numtex_x = tex->GetWidth() / width;
|
||||
int numtex_y = tex->GetHeight() / height;
|
||||
int numtex_x = tex->GetTexelWidth() / width;
|
||||
int numtex_y = tex->GetTexelHeight() / height;
|
||||
int maxinsheet = int(position) + numtex_x * numtex_y - 1;
|
||||
if (minchar > position) minchar = int(position);
|
||||
if (maxchar < maxinsheet) maxchar = maxinsheet;
|
||||
|
|
|
@ -103,8 +103,8 @@ FTexture * FTexture::CreateTexture(const char *name, int lumpnum, ETextureType u
|
|||
tex->UseType = usetype;
|
||||
if (usetype == ETextureType::Flat)
|
||||
{
|
||||
int w = tex->GetWidth();
|
||||
int h = tex->GetHeight();
|
||||
int w = tex->GetTexelWidth();
|
||||
int h = tex->GetTexelHeight();
|
||||
|
||||
// Auto-scale flats with dimensions 128x128 and 256x256.
|
||||
// In hindsight, a bad idea, but RandomLag made it sound better than it really is.
|
||||
|
@ -333,11 +333,11 @@ int FTexture::CheckRealHeight()
|
|||
{
|
||||
auto pixels = Get8BitPixels(false);
|
||||
|
||||
for(int h = GetHeight()-1; h>= 0; h--)
|
||||
for(int h = GetTexelHeight()-1; h>= 0; h--)
|
||||
{
|
||||
for(int w = 0; w < GetWidth(); w++)
|
||||
for(int w = 0; w < GetTexelWidth(); w++)
|
||||
{
|
||||
if (pixels[h + w * GetHeight()] != 0)
|
||||
if (pixels[h + w * GetTexelHeight()] != 0)
|
||||
{
|
||||
// Scale maxy before returning it
|
||||
h = int((h * 2) / Scale.Y);
|
||||
|
@ -423,7 +423,7 @@ void FTexture::CreateDefaultBrightmap()
|
|||
auto texbuf = Get8BitPixels(false);
|
||||
const int white = ColorMatcher.Pick(255, 255, 255);
|
||||
|
||||
int size = GetWidth() * GetHeight();
|
||||
int size = GetTexelWidth() * GetTexelHeight();
|
||||
for (int i = 0; i<size; i++)
|
||||
{
|
||||
if (TexMan.GlobalBrightmap.Remap[texbuf[i]] == white)
|
||||
|
@ -693,8 +693,8 @@ FTextureBuffer FTexture::CreateTexBuffer(int translation, int flags)
|
|||
|
||||
int exx = !!(flags & CTF_Expand);
|
||||
|
||||
W = GetWidth() + 2 * exx;
|
||||
H = GetHeight() + 2 * exx;
|
||||
W = GetTexelWidth() + 2 * exx;
|
||||
H = GetTexelHeight() + 2 * exx;
|
||||
|
||||
if (!checkonly)
|
||||
{
|
||||
|
@ -885,7 +885,7 @@ void FTexCoordInfo::GetFromTexture(FTexture *tex, float x, float y, bool forcewo
|
|||
else
|
||||
{
|
||||
float scale_x = x * (float)tex->Scale.X;
|
||||
mRenderWidth = xs_CeilToInt(tex->GetWidth() / scale_x);
|
||||
mRenderWidth = xs_CeilToInt(tex->GetTexelWidth() / scale_x);
|
||||
mScale.X = scale_x;
|
||||
mTempScale.X = x;
|
||||
}
|
||||
|
@ -899,7 +899,7 @@ void FTexCoordInfo::GetFromTexture(FTexture *tex, float x, float y, bool forcewo
|
|||
else
|
||||
{
|
||||
float scale_y = y * (float)tex->Scale.Y;
|
||||
mRenderHeight = xs_CeilToInt(tex->GetHeight() / scale_y);
|
||||
mRenderHeight = xs_CeilToInt(tex->GetTexelHeight() / scale_y);
|
||||
mScale.Y = scale_y;
|
||||
mTempScale.Y = y;
|
||||
}
|
||||
|
@ -909,7 +909,7 @@ void FTexCoordInfo::GetFromTexture(FTexture *tex, float x, float y, bool forcewo
|
|||
mRenderHeight = -mRenderHeight;
|
||||
}
|
||||
mWorldPanning = tex->bWorldPanning || forceworldpanning;
|
||||
mWidth = tex->GetWidth();
|
||||
mWidth = tex->GetTexelWidth();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -278,9 +278,6 @@ struct FTextureBuffer
|
|||
// Base texture class
|
||||
class FTexture
|
||||
{
|
||||
// This is initialization code that is allowed to have full access.
|
||||
friend void R_InitSpriteDefs ();
|
||||
friend void R_InstallSprite (int num, spriteframewithrotate *sprtemp, int &maxframe);
|
||||
friend class GLDefsParser;
|
||||
friend class FMultipatchTextureBuilder;
|
||||
|
||||
|
@ -302,7 +299,6 @@ class FTexture
|
|||
friend class FSkyBox;
|
||||
friend class FBrightmapTexture;
|
||||
friend class FFont;
|
||||
friend class FSpecialFont;
|
||||
|
||||
|
||||
public:
|
||||
|
@ -322,6 +318,9 @@ public:
|
|||
double GetDisplayLeftOffsetDouble() { return GetScaledLeftOffsetDouble(0); }
|
||||
double GetDisplayTopOffsetDouble() { return GetScaledTopOffsetDouble(0); }
|
||||
|
||||
int GetTexelWidth() { return Width; }
|
||||
int GetTexelHeight() { return Height; }
|
||||
|
||||
|
||||
bool isValid() const { return UseType != ETextureType::Null; }
|
||||
bool isSWCanvas() const { return UseType == ETextureType::SWCanvas; }
|
||||
|
@ -352,13 +351,25 @@ public:
|
|||
void CreateDefaultBrightmap();
|
||||
bool FindHoles(const unsigned char * buffer, int w, int h);
|
||||
void SetUseType(ETextureType type) { UseType = type; }
|
||||
int GetSourceLump() const { return SourceLump; }
|
||||
ETextureType GetUseType() const { return UseType; }
|
||||
|
||||
void CopySize(FTexture* BaseTexture)
|
||||
{
|
||||
Width = BaseTexture->GetTexelWidth();
|
||||
Height = BaseTexture->GetTexelHeight();
|
||||
_TopOffset[0] = BaseTexture->_TopOffset[0];
|
||||
_TopOffset[1] = BaseTexture->_TopOffset[1];
|
||||
_LeftOffset[0] = BaseTexture->_LeftOffset[0];
|
||||
_LeftOffset[1] = BaseTexture->_LeftOffset[1];
|
||||
Scale = BaseTexture->Scale;
|
||||
}
|
||||
|
||||
|
||||
// Returns the whole texture, stored in column-major order
|
||||
virtual TArray<uint8_t> Get8BitPixels(bool alphatex);
|
||||
virtual FBitmap GetBgraBitmap(PalEntry *remap, int *trans = nullptr);
|
||||
|
||||
public:
|
||||
static bool SmoothEdges(unsigned char * buffer,int w, int h);
|
||||
static PalEntry averageColor(const uint32_t *data, int size, int maxout);
|
||||
|
||||
|
@ -441,9 +452,6 @@ protected:
|
|||
|
||||
void SetSpeed(float fac) { shaderspeed = fac; }
|
||||
|
||||
int GetWidth () { return Width; }
|
||||
int GetHeight () { return Height; }
|
||||
|
||||
int GetScaledWidth () { int foo = int((Width * 2) / Scale.X); return (foo >> 1) + (foo & 1); }
|
||||
int GetScaledHeight () { int foo = int((Height * 2) / Scale.Y); return (foo >> 1) + (foo & 1); }
|
||||
double GetScaledWidthDouble () { return Width / Scale.X; }
|
||||
|
@ -471,17 +479,6 @@ protected:
|
|||
|
||||
static void InitGrayMap();
|
||||
|
||||
void CopySize(FTexture *BaseTexture)
|
||||
{
|
||||
Width = BaseTexture->GetWidth();
|
||||
Height = BaseTexture->GetHeight();
|
||||
_TopOffset[0] = BaseTexture->_TopOffset[0];
|
||||
_TopOffset[1] = BaseTexture->_TopOffset[1];
|
||||
_LeftOffset[0] = BaseTexture->_LeftOffset[0];
|
||||
_LeftOffset[1] = BaseTexture->_LeftOffset[1];
|
||||
Scale = BaseTexture->Scale;
|
||||
}
|
||||
|
||||
void SetScaledSize(int fitwidth, int fitheight);
|
||||
void SetScale(const DVector2 &scale)
|
||||
{
|
||||
|
|
|
@ -2032,52 +2032,6 @@ void MapLoader::LoopSidedefs (bool firstloop)
|
|||
//
|
||||
//===========================================================================
|
||||
|
||||
int MapLoader::DetermineTranslucency (int lumpnum)
|
||||
{
|
||||
auto tranmap = fileSystem.OpenFileReader (lumpnum);
|
||||
uint8_t index;
|
||||
PalEntry newcolor;
|
||||
PalEntry newcolor2;
|
||||
|
||||
tranmap.Seek (GPalette.BlackIndex * 256 + GPalette.WhiteIndex, FileReader::SeekSet);
|
||||
tranmap.Read (&index, 1);
|
||||
|
||||
newcolor = GPalette.BaseColors[GPalette.Remap[index]];
|
||||
|
||||
tranmap.Seek (GPalette.WhiteIndex * 256 + GPalette.BlackIndex, FileReader::SeekSet);
|
||||
tranmap.Read (&index, 1);
|
||||
newcolor2 = GPalette.BaseColors[GPalette.Remap[index]];
|
||||
if (newcolor2.r == 255) // if black on white results in white it's either
|
||||
// fully transparent or additive
|
||||
{
|
||||
if (developer >= DMSG_NOTIFY)
|
||||
{
|
||||
char lumpname[9];
|
||||
lumpname[8] = 0;
|
||||
fileSystem.GetFileShortName (lumpname, lumpnum);
|
||||
Printf ("%s appears to be additive translucency %d (%d%%)\n", lumpname, newcolor.r,
|
||||
newcolor.r*100/255);
|
||||
}
|
||||
return -newcolor.r;
|
||||
}
|
||||
|
||||
if (developer >= DMSG_NOTIFY)
|
||||
{
|
||||
char lumpname[9];
|
||||
lumpname[8] = 0;
|
||||
fileSystem.GetFileShortName (lumpname, lumpnum);
|
||||
Printf ("%s appears to be translucency %d (%d%%)\n", lumpname, newcolor.r,
|
||||
newcolor.r*100/255);
|
||||
}
|
||||
return newcolor.r;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
void MapLoader::ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec, intmapsidedef_t *msd, int special, int tag, short *alpha, FMissingTextureTracker &missingtex)
|
||||
{
|
||||
switch (special)
|
||||
|
@ -2153,7 +2107,18 @@ void MapLoader::ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec
|
|||
else if ((lumpnum = fileSystem.CheckNumForName (msd->midtexture)) > 0 &&
|
||||
fileSystem.FileLength (lumpnum) == 65536)
|
||||
{
|
||||
*alpha = (short)DetermineTranslucency (lumpnum);
|
||||
auto fr = fileSystem.OpenFileReader(lumpnum);
|
||||
*alpha = (short)GPalette.DetermineTranslucency (fr);
|
||||
|
||||
if (developer >= DMSG_NOTIFY)
|
||||
{
|
||||
char lumpname[9];
|
||||
lumpname[8] = 0;
|
||||
fileSystem.GetFileShortName(lumpname, lumpnum);
|
||||
if (*alpha < 0) Printf("%s appears to be additive translucency %d (%d%%)\n", lumpname, -*alpha, -*alpha * 100 / 255);
|
||||
else Printf("%s appears to be translucency %d (%d%%)\n", lumpname, *alpha, *alpha * 100 / 255);
|
||||
}
|
||||
|
||||
sd->SetTexture(side_t::mid, FNullTextureID());
|
||||
}
|
||||
else
|
||||
|
|
|
@ -221,7 +221,6 @@ private:
|
|||
void LoadZSegs(FileReader &data);
|
||||
void LoadZNodes(FileReader &data, int glnodes);
|
||||
|
||||
int DetermineTranslucency(int lumpnum);
|
||||
void SetLineID(int i, line_t *ld);
|
||||
void SaveLineSpecial(line_t *ld);
|
||||
void FinishLoadingLineDef(line_t *ld, int alpha);
|
||||
|
|
|
@ -286,7 +286,7 @@ void R_InstallSprite (int num, spriteframewithrotate *sprtemp, int &maxframe)
|
|||
{
|
||||
for (int rot = 0; rot < 16; ++rot)
|
||||
{
|
||||
TexMan.GetTexture(sprtemp[frame].Texture[rot])->Rotations = framestart + frame;
|
||||
TexMan.GetTexture(sprtemp[frame].Texture[rot])->SetRotations(framestart + frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ void R_InstallSprite (int num, spriteframewithrotate *sprtemp, int &maxframe)
|
|||
// letter/number appended.
|
||||
// The rotation character can be 0 to signify no rotations.
|
||||
//
|
||||
#define TEX_DWNAME(tex) MAKE_ID(tex->Name[0], tex->Name[1], tex->Name[2], tex->Name[3])
|
||||
#define TEX_DWNAME(tex) MAKE_ID(tex->GetName()[0], tex->GetName()[1], tex->GetName()[2], tex->GetName()[3])
|
||||
|
||||
void R_InitSpriteDefs ()
|
||||
{
|
||||
|
@ -333,7 +333,7 @@ void R_InitSpriteDefs ()
|
|||
for (i = 0; i < smax; ++i)
|
||||
{
|
||||
FTexture *tex = TexMan.ByIndex(i);
|
||||
if (tex->UseType == ETextureType::Sprite && strlen(tex->Name) >= 6)
|
||||
if (tex->GetUseType() == ETextureType::Sprite && strlen(tex->GetName()) >= 6)
|
||||
{
|
||||
size_t bucket = TEX_DWNAME(tex) % smax;
|
||||
hashes[i].Next = hashes[bucket].Head;
|
||||
|
@ -417,10 +417,10 @@ void R_InitSpriteDefs ()
|
|||
FTexture *tex = TexMan.GetTexture(hash);
|
||||
if (TEX_DWNAME(tex) == intname)
|
||||
{
|
||||
bool res = R_InstallSpriteLump (FTextureID(hash), tex->Name[4] - 'A', tex->Name[5], false, sprtemp, maxframe);
|
||||
bool res = R_InstallSpriteLump (FTextureID(hash), tex->GetName()[4] - 'A', tex->GetName()[5], false, sprtemp, maxframe);
|
||||
|
||||
if (tex->Name[6] && res)
|
||||
R_InstallSpriteLump (FTextureID(hash), tex->Name[6] - 'A', tex->Name[7], true, sprtemp, maxframe);
|
||||
if (tex->GetName()[6] && res)
|
||||
R_InstallSpriteLump (FTextureID(hash), tex->GetName()[6] - 'A', tex->GetName()[7], true, sprtemp, maxframe);
|
||||
}
|
||||
hash = hashes[hash].Next;
|
||||
}
|
||||
|
|
|
@ -337,8 +337,8 @@ bool FHardwareTexture::BindOrCreate(FTexture *tex, int texunit, int clampmode, i
|
|||
}
|
||||
else
|
||||
{
|
||||
w = tex->GetWidth();
|
||||
h = tex->GetHeight();
|
||||
w = tex->GetTexelWidth();
|
||||
h = tex->GetTexelHeight();
|
||||
}
|
||||
if (!CreateTexture(texbuffer.mBuffer, w, h, texunit, needmipmap, "FHardwareTexture.BindOrCreate"))
|
||||
{
|
||||
|
|
|
@ -199,8 +199,8 @@ FMaterial::FMaterial(FTexture * tx, bool expanded)
|
|||
}
|
||||
}
|
||||
}
|
||||
mWidth = tx->GetWidth();
|
||||
mHeight = tx->GetHeight();
|
||||
mWidth = tx->GetTexelWidth();
|
||||
mHeight = tx->GetTexelHeight();
|
||||
mLeftOffset = tx->GetLeftOffset(0); // These only get used by decals and decals should not use renderer-specific offsets.
|
||||
mTopOffset = tx->GetTopOffset(0);
|
||||
mRenderWidth = tx->GetScaledWidth();
|
||||
|
@ -473,8 +473,8 @@ again:
|
|||
goto again;
|
||||
}
|
||||
if (tex->Brightmap != NULL &&
|
||||
(tex->GetWidth() != tex->Brightmap->GetWidth() ||
|
||||
tex->GetHeight() != tex->Brightmap->GetHeight())
|
||||
(tex->GetTexelWidth() != tex->Brightmap->GetTexelWidth() ||
|
||||
tex->GetTexelHeight() != tex->Brightmap->GetTexelHeight())
|
||||
)
|
||||
{
|
||||
// do not expand if the brightmap's size differs.
|
||||
|
|
|
@ -108,8 +108,8 @@ PolyDepthStencil *PolyHardwareTexture::GetDepthStencil(FTexture *tex)
|
|||
{
|
||||
if (!mDepthStencil)
|
||||
{
|
||||
int w = tex->GetWidth();
|
||||
int h = tex->GetHeight();
|
||||
int w = tex->GetTexelWidth();
|
||||
int h = tex->GetTexelHeight();
|
||||
mDepthStencil.reset(new PolyDepthStencil(w, h));
|
||||
}
|
||||
return mDepthStencil.get();
|
||||
|
@ -172,8 +172,8 @@ void PolyHardwareTexture::CreateImage(FTexture *tex, int translation, int flags)
|
|||
}
|
||||
else
|
||||
{
|
||||
int w = tex->GetWidth();
|
||||
int h = tex->GetHeight();
|
||||
int w = tex->GetTexelWidth();
|
||||
int h = tex->GetTexelHeight();
|
||||
mCanvas->Resize(w, h, false);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,8 +58,8 @@ public:
|
|||
int GetSkyOffset() const { return mTexture->GetSkyOffset(); }
|
||||
PalEntry GetSkyCapColor(bool bottom) const { return mTexture->GetSkyCapColor(bottom); }
|
||||
|
||||
int GetWidth () { return mTexture->GetWidth(); }
|
||||
int GetHeight () { return mTexture->GetHeight(); }
|
||||
int GetWidth () { return mTexture->GetTexelWidth(); }
|
||||
int GetHeight () { return mTexture->GetTexelHeight(); }
|
||||
int GetWidthBits() { return WidthBits; }
|
||||
int GetHeightBits() { return HeightBits; }
|
||||
|
||||
|
|
|
@ -179,8 +179,8 @@ VkTextureImage *VkHardwareTexture::GetDepthStencil(FTexture *tex)
|
|||
auto fb = GetVulkanFrameBuffer();
|
||||
|
||||
VkFormat format = fb->GetBuffers()->SceneDepthStencilFormat;
|
||||
int w = tex->GetWidth();
|
||||
int h = tex->GetHeight();
|
||||
int w = tex->GetTexelWidth();
|
||||
int h = tex->GetTexelHeight();
|
||||
|
||||
ImageBuilder builder;
|
||||
builder.setSize(w, h);
|
||||
|
@ -215,8 +215,8 @@ void VkHardwareTexture::CreateImage(FTexture *tex, int translation, int flags)
|
|||
auto fb = GetVulkanFrameBuffer();
|
||||
|
||||
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
|
||||
int w = tex->GetWidth();
|
||||
int h = tex->GetHeight();
|
||||
int w = tex->GetTexelWidth();
|
||||
int h = tex->GetTexelHeight();
|
||||
|
||||
ImageBuilder imgbuilder;
|
||||
imgbuilder.setFormat(format);
|
||||
|
|
Loading…
Reference in a new issue