Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/ZDoom/gzdoom
Browse files Browse the repository at this point in the history
  • Loading branch information
nashmuhandes committed Aug 3, 2024
2 parents a6fc168 + 593e1c0 commit a5b08f0
Show file tree
Hide file tree
Showing 8 changed files with 13 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/playsim/a_dynlight.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ void FDynamicLight::Tick()

if (owned)
{
if (!target->state)
if (!target->state || !target->ShouldRenderLocally())
{
Deactivate();
return;
Expand Down
1 change: 1 addition & 0 deletions src/playsim/actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -501,6 +501,7 @@ enum ActorRenderFlag2
RF2_FLIPSPRITEOFFSETX = 0x0010,
RF2_FLIPSPRITEOFFSETY = 0x0020,
RF2_CAMFOLLOWSPLAYER = 0x0040, // Matches the cam's base position and angles to the main viewpoint.
RF2_NOMIPMAP = 0x0080, // [Nash] forces no mipmapping on sprites. Useful for tiny sprites that need to remain visually crisp
};

// This translucency value produces the closest match to Heretic's TINTTAB.
Expand Down
2 changes: 1 addition & 1 deletion src/playsim/dthinker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ void FThinkerCollection::RunThinkers(FLevelLocals *Level)
if (dolights) ac->SetDynamicLights();
}
// This was merged from P_RunEffects to eliminate the costly duplicate ThinkerIterator loop.
if ((ac->effects || ac->fountaincolor) && !Level->isFrozen())
if ((ac->effects || ac->fountaincolor) && ac->ShouldRenderLocally() && !Level->isFrozen())
{
P_RunEffect(ac, ac->effects);
}
Expand Down
1 change: 1 addition & 0 deletions src/playsim/p_effect.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ enum EParticleFlags
SPF_FACECAMERA = 1 << 11,
SPF_NOFACECAMERA = 1 << 12,
SPF_ROLLCENTER = 1 << 13,
SPF_NOMIPMAP = 1 << 14,
};

class DVisualThinker;
Expand Down
1 change: 1 addition & 0 deletions src/rendering/hwrenderer/scene/hw_drawstructs.h
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,7 @@ class HWSprite
TArray<lightlist_t> *lightlist;
DRotator Angles;

bool nomipmap; // force the sprite to have no mipmaps (ensures tiny sprites in the distance stay crisp)

void SplitSprite(HWDrawInfo *di, FRenderState& state, sector_t * frontsector, bool translucent);
void PerformSpriteClipAdjustment(AActor *thing, const DVector2 &thingpos, float spriteheight);
Expand Down
7 changes: 6 additions & 1 deletion src/rendering/hwrenderer/scene/hw_sprites.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,10 @@ void HWSprite::DrawSprite(HWDrawInfo *di, FRenderState &state, bool translucent)
state.SetFog(0, 0);
}

int clampmode = nomipmap ? CLAMP_XY_NOMIP : CLAMP_XY;

uint32_t spritetype = actor? uint32_t(actor->renderflags & RF_SPRITETYPEMASK) : 0;
if (texture) state.SetMaterial(texture, UF_Sprite, (spritetype == RF_FACESPRITE) ? CTF_Expand : 0, CLAMP_XY, translation, OverrideShader);
if (texture) state.SetMaterial(texture, UF_Sprite, (spritetype == RF_FACESPRITE) ? CTF_Expand : 0, clampmode, translation, OverrideShader);
else if (!modelframe) state.EnableTexture(false);

//SetColor(lightlevel, rel, Colormap, trans);
Expand Down Expand Up @@ -834,6 +836,8 @@ void HWSprite::Process(HWDrawInfo *di, FRenderState& state, AActor* thing, secto
return;
}

nomipmap = (thing->renderflags2 & RF2_NOMIPMAP);

// check renderrequired vs ~r_rendercaps, if anything matches we don't support that feature,
// check renderhidden vs r_rendercaps, if anything matches we do support that feature and should hide it.
if ((!r_debug_disable_vis_filter && !!(thing->RenderRequired & ~r_renderercaps)) ||
Expand Down Expand Up @@ -1377,6 +1381,7 @@ void HWSprite::ProcessParticle(HWDrawInfo *di, FRenderState& state, particle_t *
actor = nullptr;
this->particle = particle;
fullbright = particle->flags & SPF_FULLBRIGHT;
nomipmap = particle->flags & SPF_NOMIPMAP;

if (di->isFullbrightScene())
{
Expand Down
1 change: 1 addition & 0 deletions src/scripting/thingdef_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,7 @@ static FFlagDef ActorFlagDefs[]=
DEFINE_FLAG(RF2, FLIPSPRITEOFFSETX, AActor, renderflags2),
DEFINE_FLAG(RF2, FLIPSPRITEOFFSETY, AActor, renderflags2),
DEFINE_FLAG(RF2, CAMFOLLOWSPLAYER, AActor, renderflags2),
DEFINE_FLAG(RF2, NOMIPMAP, AActor, renderflags2),

// Bounce flags
DEFINE_FLAG2(BOUNCE_Walls, BOUNCEONWALLS, AActor, BounceFlags),
Expand Down
1 change: 1 addition & 0 deletions wadsrc/static/zscript/constants.zs
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,7 @@ enum EParticleFlags
SPF_FACECAMERA = 1 << 11,
SPF_NOFACECAMERA = 1 << 12,
SPF_ROLLCENTER = 1 << 13,
SPF_NOMIPMAP = 1 << 14,

SPF_RELATIVE = SPF_RELPOS|SPF_RELVEL|SPF_RELACCEL|SPF_RELANG
};
Expand Down

0 comments on commit a5b08f0

Please sign in to comment.