add fake light for model contrast
This commit is contained in:
parent
fb0df2a5b6
commit
53187ec640
7 changed files with 17 additions and 7 deletions
|
|
@ -178,4 +178,6 @@ CUSTOM_CVAR(Int, gl_spritelight, -1, CVAR_GLOBALCONFIG | CVAR_ARCHIVE)
|
|||
int get_gl_spritelight()
|
||||
{
|
||||
return gl_spritelight < 0 ? (screen->IsRayQueryEnabled() ? 1 : 0) : gl_spritelight;
|
||||
}
|
||||
}
|
||||
|
||||
CVAR(Bool, gl_fakemodellight, true, CVAR_GLOBALCONFIG | CVAR_ARCHIVE)
|
||||
|
|
|
|||
|
|
@ -63,4 +63,6 @@ EXTERN_CVAR(Bool, gl_strict_gldefs)
|
|||
EXTERN_CVAR(Int, gl_wireframe)
|
||||
EXTERN_CVAR(Color, gl_wireframecolor)
|
||||
|
||||
int get_gl_spritelight();
|
||||
int get_gl_spritelight();
|
||||
|
||||
EXTERN_CVAR(Bool, gl_fakemodellight)
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ void AddSunLightToList(FDynLightData& dld, float x, float y, float z, const FVec
|
|||
info.r = suncolor.X;
|
||||
info.g = suncolor.Y;
|
||||
info.b = suncolor.Z;
|
||||
info.flags = LIGHTINFO_ATTENUATED | (doTrace ? LIGHTINFO_TRACE : 0) | LIGHTINFO_SUN;
|
||||
info.flags = LIGHTINFO_ATTENUATED | (doTrace ? (LIGHTINFO_TRACE | LIGHTINFO_SUN) : 0);
|
||||
info.strength = 1500.0f;
|
||||
|
||||
dld.arrays[LIGHTARRAY_NORMAL].Push(info);
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ public:
|
|||
void GetDynSpriteLight(AActor *self, sun_trace_cache_t * traceCache, double x, double y, double z, FLightNode *node, int portalgroup, float *out, bool fullbright);
|
||||
void GetDynSpriteLight(AActor *thing, particle_t *particle, sun_trace_cache_t * traceCache, float *out);
|
||||
|
||||
void GetDynSpriteLightList(AActor *self, FDynLightData &modellightdata);
|
||||
void GetDynSpriteLightList(AActor *self, FDynLightData &modellightdata, bool isModel);
|
||||
|
||||
void PreparePlayerSprites(sector_t * viewsector, area_t in_area, FRenderState& state);
|
||||
void PrepareTargeterSprites(double ticfrac, FRenderState& state);
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ void HWDrawInfo::GetDynSpriteLight(AActor *thing, particle_t *particle, sun_trac
|
|||
}
|
||||
|
||||
|
||||
void HWDrawInfo::GetDynSpriteLightList(AActor *self, FDynLightData &modellightdata)
|
||||
void HWDrawInfo::GetDynSpriteLightList(AActor *self, FDynLightData &modellightdata, bool isModel)
|
||||
{
|
||||
modellightdata.Clear();
|
||||
|
||||
|
|
@ -282,6 +282,12 @@ void HWDrawInfo::GetDynSpriteLightList(AActor *self, FDynLightData &modellightda
|
|||
|
||||
int gl_spritelight = get_gl_spritelight();
|
||||
|
||||
if(isModel && gl_fakemodellight)
|
||||
{
|
||||
//fake light for contrast
|
||||
AddSunLightToList(modellightdata, x, y, z, FVector3(self->Level->SunDirection.X + 180, 45, 0), self->Level->SunColor * self->Level->SunIntensity * 0.05, false);
|
||||
}
|
||||
|
||||
if ((level.lightmaps && gl_spritelight > 0) || ActorTraceStaticLight::TraceSunVisibility(x, y, z, (self ? &self->StaticLightsTraceCache : nullptr), (self ? staticLight.ActorMoved : false)))
|
||||
{
|
||||
AddSunLightToList(modellightdata, x, y, z, self->Level->SunDirection, self->Level->SunColor * self->Level->SunIntensity, gl_spritelight > 0);
|
||||
|
|
|
|||
|
|
@ -654,7 +654,7 @@ inline void HWSprite::PutSprite(HWDrawInfo *di, FRenderState& state, bool transl
|
|||
// That's a lot of checks...
|
||||
if ((get_gl_spritelight() > 0 || (modelframe && !modelframe->isVoxel && !(modelframeflags & MDL_NOPERPIXELLIGHTING))) && RenderStyle.BlendOp != STYLEOP_Shadow && gl_light_sprites && di->Level->HasDynamicLights && !di->isFullbrightScene() && !fullbright)
|
||||
{
|
||||
di->GetDynSpriteLightList(actor, lightdata);
|
||||
di->GetDynSpriteLightList(actor, lightdata, modelframe && !modelframe->isVoxel);
|
||||
dynlightindex = state.UploadLights(lightdata);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -844,7 +844,7 @@ void HWDrawInfo::PreparePlayerSprites3D(sector_t * viewsector, area_t in_area, F
|
|||
// set the lighting parameters
|
||||
if (hudsprite.RenderStyle.BlendOp != STYLEOP_Shadow && Level->HasDynamicLights && !isFullbrightScene() && gl_light_sprites)
|
||||
{
|
||||
GetDynSpriteLightList(playermo, lightdata);
|
||||
GetDynSpriteLightList(playermo, lightdata, true);
|
||||
hudsprite.lightindex = state.UploadLights(lightdata);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue