| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- using Robust.Client.Graphics;
- using Robust.Shared.Enums;
- namespace Content.Client.Light;
- /// <summary>
- /// Essentially handles blurring for content-side light overlays.
- /// </summary>
- public sealed class LightBlurOverlay : Overlay
- {
- public override OverlaySpace Space => OverlaySpace.BeforeLighting;
- [Dependency] private readonly IClyde _clyde = default!;
- [Dependency] private readonly IOverlayManager _overlay = default!;
- public const int ContentZIndex = TileEmissionOverlay.ContentZIndex + 1;
- private IRenderTarget? _blurTarget;
- public LightBlurOverlay()
- {
- IoCManager.InjectDependencies(this);
- ZIndex = ContentZIndex;
- }
- protected override void Draw(in OverlayDrawArgs args)
- {
- if (args.Viewport.Eye == null)
- return;
- var beforeOverlay = _overlay.GetOverlay<BeforeLightTargetOverlay>();
- var size = beforeOverlay.EnlargedLightTarget.Size;
- if (_blurTarget?.Size != size)
- {
- _blurTarget = _clyde
- .CreateRenderTarget(size, new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), name: "enlarged-light-blur");
- }
- var target = beforeOverlay.EnlargedLightTarget;
- // Yeah that's all this does keep walkin.
- _clyde.BlurRenderTarget(args.Viewport, target, _blurTarget, args.Viewport.Eye, 14f * 5f);
- }
- }
|