Apply RoofOverlay per-grid not per-map + fix lighting quality (#35207)

* Apply RoofOverlay per-grid not per-map

* Fix light render scales
This commit is contained in:
metalgearsloth
2025-02-17 00:29:03 +11:00
committed by GitHub
parent a9f900c397
commit ead32b5770
4 changed files with 71 additions and 42 deletions

View File

@@ -49,13 +49,19 @@ public sealed class TileEmissionOverlay : Overlay
var bounds = lightoverlay.EnlargedBounds;
var target = lightoverlay.EnlargedLightTarget;
var viewport = args.Viewport;
_grids.Clear();
_mapManager.FindGridsIntersecting(mapId, bounds, ref _grids, approx: true);
if (_grids.Count == 0)
return;
var lightScale = viewport.LightRenderTarget.Size / (Vector2) viewport.Size;
var scale = viewport.RenderScale / (Vector2.One / lightScale);
args.WorldHandle.RenderInRenderTarget(target,
() =>
{
var invMatrix = target.GetWorldToLocalMatrix(viewport.Eye, viewport.RenderScale / 2f);
_grids.Clear();
_mapManager.FindGridsIntersecting(mapId, bounds, ref _grids, approx: true);
var invMatrix = target.GetWorldToLocalMatrix(viewport.Eye, scale);
foreach (var grid in _grids)
{