Navigation Menu

Skip to content

Commit

Permalink
fix #5146
Browse files Browse the repository at this point in the history
  • Loading branch information
rtri committed Mar 7, 2016
1 parent e0fd9a4 commit 511207c
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 21 deletions.
2 changes: 1 addition & 1 deletion rts/Lua/LuaUnsyncedRead.cpp
Expand Up @@ -873,7 +873,7 @@ int LuaUnsyncedRead::GetVisibleFeatures(lua_State* L)
if (f->noDraw)
continue;

if (noIcons && f->drawAlpha < 0.01f)
if (noIcons && f->drawFlag == CFeature::FD_FARTEX_FLAG)
continue;

if (noGeos && f->def->geoThermal)
Expand Down
32 changes: 12 additions & 20 deletions rts/Rendering/FeatureDrawer.cpp
Expand Up @@ -47,14 +47,6 @@ CONFIG(float, FeatureFadeDistance)



enum {
FD_NODRAW_FLAG = 0, // must be 0
FD_OPAQUE_FLAG = 1,
FD_ALPHAF_FLAG = 2,
FD_SHADOW_FLAG = 3,
FD_FARTEX_FLAG = 4,
};

static bool SetFeatureDrawAlpha(
CFeature* f,
const CCamera* cam,
Expand Down Expand Up @@ -326,9 +318,9 @@ void CFeatureDrawer::DrawOpaqueFeatures(int modelType)
for (CFeature* f: binElem.second) {
// fartex, opaque, shadow are allowed here
switch (f->drawFlag) {
case FD_NODRAW_FLAG: { continue; } break;
case FD_ALPHAF_FLAG: { continue; } break;
case FD_FARTEX_FLAG: { farTextureHandler->Queue(f); continue; } break;
case CFeature::FD_NODRAW_FLAG: { continue; } break;
case CFeature::FD_ALPHAF_FLAG: { continue; } break;
case CFeature::FD_FARTEX_FLAG: { farTextureHandler->Queue(f); continue; } break;
default: {} break;
}

Expand Down Expand Up @@ -504,10 +496,10 @@ void CFeatureDrawer::DrawAlphaFeatures(int modelType)
for (CFeature* f: binElem.second) {
// only alpha is allowed here
switch (f->drawFlag) {
case FD_NODRAW_FLAG: { continue; } break;
case FD_OPAQUE_FLAG: { continue; } break;
case FD_SHADOW_FLAG: { continue; } break;
case FD_FARTEX_FLAG: { continue; } break;
case CFeature::FD_NODRAW_FLAG: { continue; } break;
case CFeature::FD_OPAQUE_FLAG: { continue; } break;
case CFeature::FD_SHADOW_FLAG: { continue; } break;
case CFeature::FD_FARTEX_FLAG: { continue; } break;
default: {} break;
}

Expand Down Expand Up @@ -637,7 +629,7 @@ void CFeatureDrawer::FlagVisibleFeatures(
assert(quads[n] == f->drawQuad);

// clear marker; will be set at most once below
f->drawFlag = FD_NODRAW_FLAG;
f->drawFlag = CFeature::FD_NODRAW_FLAG;

if (f->noDraw)
continue;
Expand All @@ -652,7 +644,7 @@ void CFeatureDrawer::FlagVisibleFeatures(

if (drawShadowPass) {
// no shadows for fully alpha-faded features from player's POV
f->drawFlag = FD_SHADOW_FLAG * SetFeatureDrawAlpha(f, playerCam, sqFadeDistBegin, sqFadeDistEnd);
f->drawFlag = CFeature::FD_SHADOW_FLAG * SetFeatureDrawAlpha(f, playerCam, sqFadeDistBegin, sqFadeDistEnd);
continue;
}

Expand All @@ -664,15 +656,15 @@ void CFeatureDrawer::FlagVisibleFeatures(


if (SetFeatureDrawAlpha(f, cam, sqFadeDistBegin, sqFadeDistEnd)) {
f->drawFlag += (FD_OPAQUE_FLAG * (f->drawAlpha == 1.0f));
f->drawFlag += (FD_ALPHAF_FLAG * (f->drawAlpha < 1.0f));
f->drawFlag += (CFeature::FD_OPAQUE_FLAG * (f->drawAlpha == 1.0f));
f->drawFlag += (CFeature::FD_ALPHAF_FLAG * (f->drawAlpha < 1.0f));
continue;
}

// note: it looks pretty bad to first alpha-fade and then
// draw a fully *opaque* fartex, so restrict impostors to
// non-fading features
f->drawFlag = FD_FARTEX_FLAG * drawFarFeatures * (!f->alphaFade);
f->drawFlag = CFeature::FD_FARTEX_FLAG * drawFarFeatures * (!f->alphaFade);
}
}
}
Expand Down
1 change: 1 addition & 0 deletions rts/Rendering/UnitDrawer.cpp
Expand Up @@ -639,6 +639,7 @@ void CUnitDrawer::DrawShadowPass()

void CUnitDrawer::DrawIcon(CUnit* unit, bool useDefaultIcon)
{
// for radar icons; normal void-units are already filtered
if (unit->IsInVoid())
return;

Expand Down
10 changes: 10 additions & 0 deletions rts/Sim/Features/Feature.h
Expand Up @@ -60,6 +60,15 @@ class CFeature: public CSolidObject, public boost::noncopyable
float3 accVector;
};

enum {
FD_NODRAW_FLAG = 0, // must be 0
FD_OPAQUE_FLAG = 1,
FD_ALPHAF_FLAG = 2,
FD_SHADOW_FLAG = 3,
FD_FARTEX_FLAG = 4,
};


/**
* Pos of quad must not change after this.
* This will add this to the FeatureHandler.
Expand Down Expand Up @@ -125,6 +134,7 @@ class CFeature: public CSolidObject, public boost::noncopyable

/// which drawQuad we are part of
int drawQuad;
/// one of FD_*_FLAG
int drawFlag;

float drawAlpha;
Expand Down

0 comments on commit 511207c

Please sign in to comment.