mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 14:51:46 +00:00
- moved all variables not related to the hardware renderer's texture state out of gl_info.
This commit is contained in:
parent
1fc4c9801b
commit
d01bc452ba
12 changed files with 53 additions and 60 deletions
|
@ -48,11 +48,11 @@ int gl_CheckSpriteGlow(sector_t *sector, int lightlevel, const DVector3 &pos)
|
|||
FTexture *tex = TexMan[sector->GetTexture(sector_t::floor)];
|
||||
if (tex != NULL && tex->isGlowing())
|
||||
{
|
||||
if (!tex->gl_info.bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::floor));
|
||||
if (!tex->bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::floor));
|
||||
if (tex->isGlowing()) // recheck the current animation frame.
|
||||
{
|
||||
tex->GetGlowColor(bottomglowcolor);
|
||||
bottomglowcolor[3] = (float)tex->gl_info.GlowHeight;
|
||||
bottomglowcolor[3] = (float)tex->GlowHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,12 +93,12 @@ bool gl_GetWallGlow(sector_t *sector, float *topglowcolor, float *bottomglowcolo
|
|||
FTexture *tex = TexMan[sector->GetTexture(sector_t::ceiling)];
|
||||
if (tex != NULL && tex->isGlowing())
|
||||
{
|
||||
if (!tex->gl_info.bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::ceiling));
|
||||
if (!tex->bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::ceiling));
|
||||
if (tex->isGlowing()) // recheck the current animation frame.
|
||||
{
|
||||
ret = true;
|
||||
tex->GetGlowColor(topglowcolor);
|
||||
topglowcolor[3] = (float)tex->gl_info.GlowHeight;
|
||||
topglowcolor[3] = (float)tex->GlowHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -117,12 +117,12 @@ bool gl_GetWallGlow(sector_t *sector, float *topglowcolor, float *bottomglowcolo
|
|||
FTexture *tex = TexMan[sector->GetTexture(sector_t::floor)];
|
||||
if (tex != NULL && tex->isGlowing())
|
||||
{
|
||||
if (!tex->gl_info.bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::floor));
|
||||
if (!tex->bAutoGlowing) tex = TexMan(sector->GetTexture(sector_t::floor));
|
||||
if (tex->isGlowing()) // recheck the current animation frame.
|
||||
{
|
||||
ret = true;
|
||||
tex->GetGlowColor(bottomglowcolor);
|
||||
bottomglowcolor[3] = (float)tex->gl_info.GlowHeight;
|
||||
bottomglowcolor[3] = (float)tex->GlowHeight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -158,8 +158,8 @@ public:
|
|||
mTempTM = TM_MODULATE;
|
||||
}
|
||||
mEffectState = overrideshader >= 0? overrideshader : mat->mShaderIndex;
|
||||
mShaderTimer = mat->tex->gl_info.shaderspeed;
|
||||
SetSpecular(mat->tex->gl_info.Glossiness, mat->tex->gl_info.SpecularLevel);
|
||||
mShaderTimer = mat->tex->shaderspeed;
|
||||
SetSpecular(mat->tex->Glossiness, mat->tex->SpecularLevel);
|
||||
mat->Bind(clampmode, translation);
|
||||
}
|
||||
|
||||
|
|
|
@ -519,7 +519,7 @@ void GLSkyPortal::DrawContents()
|
|||
drawer->SetupView(0, 0, 0, r_viewpoint.Angles.Yaw, !!(MirrorFlag & 1), !!(PlaneMirrorFlag & 1));
|
||||
|
||||
gl_RenderState.SetVertexBuffer(GLRenderer->mSkyVBO);
|
||||
if (origin->texture[0] && origin->texture[0]->tex->gl_info.bSkybox)
|
||||
if (origin->texture[0] && origin->texture[0]->tex->bSkybox)
|
||||
{
|
||||
RenderBox(origin->skytexno1, origin->texture[0], origin->x_offset[0], origin->sky2);
|
||||
}
|
||||
|
|
|
@ -940,7 +940,7 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal)
|
|||
// allow disabling of the fullbright flag by a brightmap definition
|
||||
// (e.g. to do the gun flashes of Doom's zombies correctly.
|
||||
fullbright = (thing->flags5 & MF5_BRIGHT) ||
|
||||
((thing->renderflags & RF_FULLBRIGHT) && (!gltexture || !gltexture->tex->gl_info.bDisableFullbright));
|
||||
((thing->renderflags & RF_FULLBRIGHT) && (!gltexture || !gltexture->tex->bDisableFullbright));
|
||||
|
||||
lightlevel = fullbright ? 255 :
|
||||
gl_ClampLight(rendersector->GetTexture(sector_t::ceiling) == skyflatnum ?
|
||||
|
|
|
@ -176,7 +176,7 @@ static bool isBright(DPSprite *psp)
|
|||
{
|
||||
FMaterial * tex = FMaterial::ValidateTexture(lump, false, false);
|
||||
if (tex)
|
||||
disablefullbright = tex->tex->gl_info.bDisableFullbright;
|
||||
disablefullbright = tex->tex->bDisableFullbright;
|
||||
}
|
||||
return psp->GetState()->GetFullbright() && !disablefullbright;
|
||||
}
|
||||
|
|
|
@ -130,7 +130,7 @@ FHardwareTexture *FGLTexture::CreateHwTexture()
|
|||
if (tex->UseType==ETextureType::Null) return NULL; // Cannot register a NULL texture
|
||||
if (mHwTexture == NULL)
|
||||
{
|
||||
mHwTexture = new FHardwareTexture(tex->gl_info.bNoCompress);
|
||||
mHwTexture = new FHardwareTexture(tex->bNoCompress);
|
||||
}
|
||||
return mHwTexture;
|
||||
}
|
||||
|
@ -314,21 +314,21 @@ FMaterial::FMaterial(FTexture * tx, bool expanded)
|
|||
if (tx->bWarped)
|
||||
{
|
||||
mShaderIndex = tx->bWarped; // This picks SHADER_Warp1 or SHADER_Warp2
|
||||
tx->gl_info.shaderspeed = static_cast<FWarpTexture*>(tx)->GetSpeed();
|
||||
tx->shaderspeed = static_cast<FWarpTexture*>(tx)->GetSpeed();
|
||||
}
|
||||
else if (tx->bHasCanvas)
|
||||
{
|
||||
if (tx->gl_info.shaderindex >= FIRST_USER_SHADER)
|
||||
if (tx->shaderindex >= FIRST_USER_SHADER)
|
||||
{
|
||||
mShaderIndex = tx->gl_info.shaderindex;
|
||||
mShaderIndex = tx->shaderindex;
|
||||
}
|
||||
// no brightmap for cameratexture
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tx->gl_info.shaderindex >= FIRST_USER_SHADER)
|
||||
if (tx->shaderindex >= FIRST_USER_SHADER)
|
||||
{
|
||||
mShaderIndex = tx->gl_info.shaderindex;
|
||||
mShaderIndex = tx->shaderindex;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -763,7 +763,7 @@ again:
|
|||
{
|
||||
if (expand)
|
||||
{
|
||||
if (tex->bWarped || tex->bHasCanvas || tex->gl_info.shaderindex >= FIRST_USER_SHADER)
|
||||
if (tex->bWarped || tex->bHasCanvas || tex->shaderindex >= FIRST_USER_SHADER || (tex->shaderindex >= SHADER_Specular && tex->shaderindex <= SHADER_PBRBrightmap))
|
||||
{
|
||||
tex->gl_info.bNoExpand = true;
|
||||
goto again;
|
||||
|
|
|
@ -123,17 +123,7 @@ int TexFormat[]={
|
|||
|
||||
FTexture::MiscGLInfo::MiscGLInfo() throw()
|
||||
{
|
||||
GlowHeight = 128;
|
||||
bSkybox = false;
|
||||
bFullbright = false;
|
||||
bDisableFullbright = false;
|
||||
bNoFilter = false;
|
||||
bNoCompress = false;
|
||||
bNoExpand = false;
|
||||
shaderspeed = 1.f;
|
||||
shaderindex = 0;
|
||||
Glossiness = 10.0f;
|
||||
SpecularLevel = 0.1f;
|
||||
|
||||
Material[1] = Material[0] = NULL;
|
||||
SystemTexture[1] = SystemTexture[0] = NULL;
|
||||
|
@ -222,7 +212,7 @@ void gl_PrecacheTexture(uint8_t *texhitlist, TMap<PClassActor*, bool> &actorhitl
|
|||
if (texhitlist[i] & (FTextureManager::HIT_Sky | FTextureManager::HIT_Wall))
|
||||
{
|
||||
FTexture *tex = TexMan.ByIndex(i);
|
||||
if (tex->gl_info.bSkybox)
|
||||
if (tex->bSkybox)
|
||||
{
|
||||
FSkyBox *sb = static_cast<FSkyBox*>(tex);
|
||||
for (int i = 0; i<6; i++)
|
||||
|
|
|
@ -1013,7 +1013,7 @@ class GLDefsParser
|
|||
sc.MustGetString();
|
||||
FTextureID flump=TexMan.CheckForTexture(sc.String, ETextureType::Flat,FTextureManager::TEXMAN_TryAny);
|
||||
FTexture *tex = TexMan[flump];
|
||||
if (tex) tex->gl_info.bAutoGlowing = tex->bGlowing = tex->gl_info.bFullbright = true;
|
||||
if (tex) tex->bAutoGlowing = tex->bGlowing = tex->bFullbright = true;
|
||||
}
|
||||
}
|
||||
else if (sc.Compare("WALLS"))
|
||||
|
@ -1024,7 +1024,7 @@ class GLDefsParser
|
|||
sc.MustGetString();
|
||||
FTextureID flump=TexMan.CheckForTexture(sc.String, ETextureType::Wall,FTextureManager::TEXMAN_TryAny);
|
||||
FTexture *tex = TexMan[flump];
|
||||
if (tex) tex->gl_info.bAutoGlowing = tex->bGlowing = tex->gl_info.bFullbright = true;
|
||||
if (tex) tex->bAutoGlowing = tex->bGlowing = tex->bFullbright = true;
|
||||
}
|
||||
}
|
||||
else if (sc.Compare("TEXTURE"))
|
||||
|
@ -1042,19 +1042,19 @@ class GLDefsParser
|
|||
{
|
||||
if (sc.CheckNumber())
|
||||
{
|
||||
if (tex) tex->gl_info.GlowHeight = sc.Number;
|
||||
if (tex) tex->GlowHeight = sc.Number;
|
||||
if (!sc.CheckString(",")) goto skip_fb;
|
||||
}
|
||||
|
||||
sc.MustGetStringName("fullbright");
|
||||
if (tex) tex->gl_info.bFullbright = true;
|
||||
if (tex) tex->bFullbright = true;
|
||||
}
|
||||
skip_fb:
|
||||
sc.SetCMode(false);
|
||||
|
||||
if (tex && color != 0)
|
||||
{
|
||||
tex->gl_info.bAutoGlowing = false;
|
||||
tex->bAutoGlowing = false;
|
||||
tex->bGlowing = true;
|
||||
tex->GlowColor = color;
|
||||
}
|
||||
|
@ -1153,7 +1153,7 @@ class GLDefsParser
|
|||
bmtex->bMasked = false;
|
||||
tex->Brightmap = bmtex;
|
||||
}
|
||||
tex->gl_info.bDisableFullbright = disable_fullbright;
|
||||
tex->bDisableFullbright = disable_fullbright;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1212,13 +1212,13 @@ class GLDefsParser
|
|||
{
|
||||
sc.MustGetFloat();
|
||||
if (tex)
|
||||
tex->gl_info.Glossiness = (float)sc.Float;
|
||||
tex->Glossiness = (float)sc.Float;
|
||||
}
|
||||
else if (sc.Compare("specularlevel"))
|
||||
{
|
||||
sc.MustGetFloat();
|
||||
if (tex)
|
||||
tex->gl_info.SpecularLevel = (float)sc.Float;
|
||||
tex->SpecularLevel = (float)sc.Float;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1273,7 +1273,7 @@ class GLDefsParser
|
|||
}
|
||||
|
||||
if (disable_fullbright_specified)
|
||||
tex->gl_info.bDisableFullbright = disable_fullbright;
|
||||
tex->bDisableFullbright = disable_fullbright;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1414,16 +1414,16 @@ class GLDefsParser
|
|||
Printf("Cannot combine warping with hardware shader on texture '%s'\n", tex->Name.GetChars());
|
||||
return;
|
||||
}
|
||||
tex->gl_info.shaderspeed = speed;
|
||||
tex->shaderspeed = speed;
|
||||
for (unsigned i = 0; i < usershaders.Size(); i++)
|
||||
{
|
||||
if (!usershaders[i].CompareNoCase(maplumpname))
|
||||
{
|
||||
tex->gl_info.shaderindex = i + FIRST_USER_SHADER;
|
||||
tex->shaderindex = i + FIRST_USER_SHADER;
|
||||
return;
|
||||
}
|
||||
}
|
||||
tex->gl_info.shaderindex = usershaders.Push(maplumpname) + FIRST_USER_SHADER;
|
||||
tex->shaderindex = usershaders.Push(maplumpname) + FIRST_USER_SHADER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -80,8 +80,7 @@ FVoxelTexture::FVoxelTexture(FVoxel *vox)
|
|||
WidthBits = 4;
|
||||
HeightBits = 4;
|
||||
WidthMask = 15;
|
||||
gl_info.bNoFilter = true;
|
||||
gl_info.bNoCompress = true;
|
||||
bNoCompress = true;
|
||||
}
|
||||
|
||||
//===========================================================================
|
||||
|
|
|
@ -38,7 +38,7 @@ FSkyBox::FSkyBox()
|
|||
{
|
||||
faces[0]=faces[1]=faces[2]=faces[3]=faces[4]=faces[5]=NULL;
|
||||
UseType = ETextureType::Override;
|
||||
gl_info.bSkybox = true;
|
||||
bSkybox = true;
|
||||
fliptop = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -184,6 +184,11 @@ FTexture::FTexture (const char *name, int lumpnum)
|
|||
{
|
||||
bBrightmapChecked = false;
|
||||
bGlowing = false;
|
||||
bAutoGlowing = false;
|
||||
bFullbright = false;
|
||||
bDisableFullbright = false;
|
||||
bSkybox = false;
|
||||
bNoCompress = false;
|
||||
bTranslucent = -1;
|
||||
|
||||
|
||||
|
|
|
@ -256,6 +256,11 @@ public:
|
|||
uint8_t bFullNameTexture : 1;
|
||||
uint8_t bBrightmapChecked : 1; // Set to 1 if brightmap has been checked
|
||||
uint8_t bGlowing : 1; // Texture glow color
|
||||
uint8_t bAutoGlowing : 1; // Glow info is determined from texture image.
|
||||
uint8_t bFullbright : 1; // always draw fullbright
|
||||
uint8_t bDisableFullbright : 1; // This texture will not be displayed as fullbright sprite
|
||||
uint8_t bSkybox : 1; // is a cubic skybox
|
||||
uint8_t bNoCompress : 1;
|
||||
int8_t bTranslucent : 2;
|
||||
bool bHiresHasColorKey = false; // Support for old color-keyed Doomsday textures
|
||||
|
||||
|
@ -263,8 +268,14 @@ public:
|
|||
int16_t SkyOffset;
|
||||
FloatRect *areas = nullptr;
|
||||
int areacount = 0;
|
||||
int GlowHeight = 128;
|
||||
PalEntry GlowColor = 0;
|
||||
int HiresLump = -1; // For external hires textures.
|
||||
float Glossiness = 10.f;
|
||||
float SpecularLevel = 0.1f;
|
||||
float shaderspeed = 1.f;
|
||||
int shaderindex = 0;
|
||||
|
||||
|
||||
|
||||
struct Span
|
||||
|
@ -468,29 +479,17 @@ public:
|
|||
|
||||
struct MiscGLInfo
|
||||
{
|
||||
FMaterial *Material[2];
|
||||
FGLTexture *SystemTexture[2];
|
||||
float Glossiness;
|
||||
float SpecularLevel;
|
||||
int GlowHeight;
|
||||
int shaderindex;
|
||||
float shaderspeed;
|
||||
bool bAutoGlowing : 1; // Glow info is determined from texture image.
|
||||
bool bFullbright:1; // always draw fullbright
|
||||
bool bSkybox:1; // This is a skybox
|
||||
bool bDisableFullbright:1; // This texture will not be displayed as fullbright sprite
|
||||
bool bNoFilter:1;
|
||||
bool bNoCompress:1;
|
||||
bool bNoExpand:1;
|
||||
FMaterial *Material[2] = { nullptr, nullptr };
|
||||
FGLTexture *SystemTexture[2] = { nullptr, nullptr };
|
||||
bool bNoExpand = false;
|
||||
|
||||
MiscGLInfo() throw ();
|
||||
~MiscGLInfo();
|
||||
};
|
||||
MiscGLInfo gl_info;
|
||||
|
||||
void GetGlowColor(float *data);
|
||||
bool isGlowing() { return bGlowing; }
|
||||
bool isFullbright() { return gl_info.bFullbright; }
|
||||
bool isFullbright() { return bFullbright; }
|
||||
void CreateDefaultBrightmap();
|
||||
bool FindHoles(const unsigned char * buffer, int w, int h);
|
||||
static bool SmoothEdges(unsigned char * buffer,int w, int h);
|
||||
|
|
Loading…
Reference in a new issue