From be361180174aeb70f7b2f2c79e9db1cc9fad35dd Mon Sep 17 00:00:00 2001 From: nashmuhandes Date: Tue, 17 Dec 2024 10:07:44 +0800 Subject: [PATCH] Exclude fullbright stuff from tracelighting --- src/rendering/hwrenderer/scene/hw_drawinfo.h | 2 +- src/rendering/hwrenderer/scene/hw_spritelight.cpp | 12 +++++++++--- wadsrc/static/zscript/actors/shared/corona.zs | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/rendering/hwrenderer/scene/hw_drawinfo.h b/src/rendering/hwrenderer/scene/hw_drawinfo.h index 2cca18b5e..4cfcbdd63 100644 --- a/src/rendering/hwrenderer/scene/hw_drawinfo.h +++ b/src/rendering/hwrenderer/scene/hw_drawinfo.h @@ -306,7 +306,7 @@ public: void AddOtherFloorPlane(int sector, gl_subsectorrendernode * node, FRenderState& state); void AddOtherCeilingPlane(int sector, gl_subsectorrendernode * node, FRenderState& state); - void GetDynSpriteLight(AActor *self, float x, float y, float z, FLightNode *node, int portalgroup, float *out); + void GetDynSpriteLight(AActor *self, float x, float y, float z, FLightNode *node, int portalgroup, float *out, bool fullbright); void GetDynSpriteLight(AActor *thing, particle_t *particle, float *out); void PreparePlayerSprites(sector_t * viewsector, area_t in_area, FRenderState& state); diff --git a/src/rendering/hwrenderer/scene/hw_spritelight.cpp b/src/rendering/hwrenderer/scene/hw_spritelight.cpp index f927fd000..cf70c44b4 100644 --- a/src/rendering/hwrenderer/scene/hw_spritelight.cpp +++ b/src/rendering/hwrenderer/scene/hw_spritelight.cpp @@ -120,8 +120,11 @@ float inverseSquareAttenuation(float dist, float radius, float strength) return (b * b) / (dist * dist + 1.0) * strength; } -void HWDrawInfo::GetDynSpriteLight(AActor *self, float x, float y, float z, FLightNode *node, int portalgroup, float *out) +void HWDrawInfo::GetDynSpriteLight(AActor *self, float x, float y, float z, FLightNode *node, int portalgroup, float *out, bool fullbright) { + if (fullbright) + return; + FDynamicLight *light; float frac, lr, lg, lb; float radius; @@ -234,11 +237,11 @@ void HWDrawInfo::GetDynSpriteLight(AActor *thing, particle_t *particle, float *o { if (thing != NULL) { - GetDynSpriteLight(thing, (float)thing->X(), (float)thing->Y(), (float)thing->Center(), thing->section->lighthead, thing->Sector->PortalGroup, out); + GetDynSpriteLight(thing, (float)thing->X(), (float)thing->Y(), (float)thing->Center(), thing->section->lighthead, thing->Sector->PortalGroup, out, (thing->flags5 & MF5_BRIGHT)); } else if (particle != NULL) { - GetDynSpriteLight(NULL, (float)particle->Pos.X, (float)particle->Pos.Y, (float)particle->Pos.Z, particle->subsector->section->lighthead, particle->subsector->sector->PortalGroup, out); + GetDynSpriteLight(NULL, (float)particle->Pos.X, (float)particle->Pos.Y, (float)particle->Pos.Z, particle->subsector->section->lighthead, particle->subsector->sector->PortalGroup, out, (particle->flags & SPF_FULLBRIGHT)); } } @@ -249,6 +252,9 @@ void hw_GetDynModelLight(HWDrawContext* drawctx, AActor *self, FDynLightData &mo if (self) { + if ((self->flags5 & MF5_BRIGHT)) + return; + auto &addedLights = drawctx->addedLightsArray; addedLights.Clear(); diff --git a/wadsrc/static/zscript/actors/shared/corona.zs b/wadsrc/static/zscript/actors/shared/corona.zs index 7310312f2..62e648d74 100644 --- a/wadsrc/static/zscript/actors/shared/corona.zs +++ b/wadsrc/static/zscript/actors/shared/corona.zs @@ -32,6 +32,7 @@ class Corona : Actor abstract { RenderStyle "Add"; RenderRadius 1024.0; + +BRIGHT +NOINTERACTION +NOGRAVITY +FORCEXYBILLBOARD