mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Remove lite stuff from Clyde.
This commit is contained in:
@@ -110,120 +110,117 @@ namespace Robust.Client.Graphics.Clyde
|
||||
}
|
||||
}
|
||||
|
||||
if (!_lite)
|
||||
RenderOverlays(OverlaySpace.ScreenSpaceBelowWorld);
|
||||
|
||||
_setSpace(CurrentSpace.WorldSpace);
|
||||
|
||||
// Calculate world-space AABB for camera, to cull off-screen things.
|
||||
var eye = _eyeManager.CurrentEye;
|
||||
var worldBounds = Box2.CenteredAround(eye.Position.Position,
|
||||
_screenSize / EyeManager.PIXELSPERMETER * eye.Zoom);
|
||||
|
||||
using (DebugGroup("Lights"))
|
||||
{
|
||||
RenderOverlays(OverlaySpace.ScreenSpaceBelowWorld);
|
||||
|
||||
_setSpace(CurrentSpace.WorldSpace);
|
||||
|
||||
// Calculate world-space AABB for camera, to cull off-screen things.
|
||||
var eye = _eyeManager.CurrentEye;
|
||||
var worldBounds = Box2.CenteredAround(eye.Position.Position,
|
||||
_screenSize / EyeManager.PIXELSPERMETER * eye.Zoom);
|
||||
|
||||
using (DebugGroup("Lights"))
|
||||
{
|
||||
_drawLights(worldBounds);
|
||||
}
|
||||
|
||||
using (DebugGroup("Grids"))
|
||||
{
|
||||
_drawGrids(worldBounds);
|
||||
}
|
||||
|
||||
using (DebugGroup("Entities"))
|
||||
{
|
||||
_sortingSpritesList.Clear();
|
||||
var map = _eyeManager.CurrentMap;
|
||||
|
||||
// So we could calculate the correct size of the entities based on the contents of their sprite...
|
||||
// Or we can just assume that no entity is larger than 10x10 and get a stupid easy check.
|
||||
// TODO: Make this check more accurate.
|
||||
var widerBounds = worldBounds.Enlarged(5);
|
||||
|
||||
foreach (var sprite in _componentManager.GetAllComponents<SpriteComponent>())
|
||||
{
|
||||
var entity = sprite.Owner;
|
||||
if (!entity.Transform.IsMapTransform || entity.Transform.MapID != map ||
|
||||
!widerBounds.Contains(entity.Transform.WorldPosition) || !sprite.Visible)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_sortingSpritesList.Add(sprite);
|
||||
}
|
||||
|
||||
_sortingSpritesList.Sort((a, b) =>
|
||||
{
|
||||
var cmp = ((int) a.DrawDepth).CompareTo((int) b.DrawDepth);
|
||||
if (cmp != 0)
|
||||
{
|
||||
return cmp;
|
||||
}
|
||||
|
||||
cmp = a.RenderOrder.CompareTo(b.RenderOrder);
|
||||
|
||||
if (cmp != 0)
|
||||
{
|
||||
return cmp;
|
||||
}
|
||||
|
||||
return a.Owner.Uid.CompareTo(b.Owner.Uid);
|
||||
});
|
||||
|
||||
foreach (var sprite in _sortingSpritesList)
|
||||
{
|
||||
Vector2i roundedPos = default;
|
||||
if (sprite.PostShader != null)
|
||||
{
|
||||
_renderHandle.UseRenderTarget(EntityPostRenderTarget);
|
||||
_renderHandle.Clear(new Color());
|
||||
// Calculate viewport so that the entity thinks it's drawing to the same position,
|
||||
// which is necessary for light application,
|
||||
// but it's ACTUALLY drawing into the center of the render target.
|
||||
var spritePos = sprite.Owner.Transform.WorldPosition;
|
||||
var screenPos = _eyeManager.WorldToScreen(spritePos);
|
||||
var (roundedX, roundedY) = roundedPos = (Vector2i) screenPos;
|
||||
var flippedPos = new Vector2i(roundedX, ScreenSize.Y - roundedY);
|
||||
flippedPos -= EntityPostRenderTarget.Size / 2;
|
||||
_renderHandle.Viewport(Box2i.FromDimensions(-flippedPos, ScreenSize));
|
||||
}
|
||||
|
||||
sprite.OpenGLRender(_renderHandle.DrawingHandleWorld);
|
||||
|
||||
if (sprite.PostShader != null)
|
||||
{
|
||||
_renderHandle.UseRenderTarget(null);
|
||||
_renderHandle.Viewport(Box2i.FromDimensions(Vector2i.Zero, ScreenSize));
|
||||
|
||||
_renderHandle.UseShader(sprite.PostShader);
|
||||
_renderHandle.SetSpace(CurrentSpace.ScreenSpace);
|
||||
_renderHandle.SetModelTransform(Matrix3.Identity);
|
||||
|
||||
var rounded = roundedPos - EntityPostRenderTarget.Size / 2;
|
||||
|
||||
var box = UIBox2i.FromDimensions(rounded, EntityPostRenderTarget.Size);
|
||||
|
||||
_renderHandle.DrawTexture(EntityPostRenderTarget.Texture, box.BottomLeft,
|
||||
box.TopRight, Color.White, null, 0);
|
||||
|
||||
_renderHandle.SetSpace(CurrentSpace.WorldSpace);
|
||||
_renderHandle.UseShader(null);
|
||||
}
|
||||
}
|
||||
|
||||
_flushRenderHandle(_renderHandle);
|
||||
}
|
||||
|
||||
RenderOverlays(OverlaySpace.WorldSpace);
|
||||
|
||||
_lightingReady = false;
|
||||
|
||||
_setSpace(CurrentSpace.ScreenSpace);
|
||||
|
||||
RenderOverlays(OverlaySpace.ScreenSpace);
|
||||
_drawLights(worldBounds);
|
||||
}
|
||||
|
||||
using (DebugGroup("Grids"))
|
||||
{
|
||||
_drawGrids(worldBounds);
|
||||
}
|
||||
|
||||
using (DebugGroup("Entities"))
|
||||
{
|
||||
_sortingSpritesList.Clear();
|
||||
var map = _eyeManager.CurrentMap;
|
||||
|
||||
// So we could calculate the correct size of the entities based on the contents of their sprite...
|
||||
// Or we can just assume that no entity is larger than 10x10 and get a stupid easy check.
|
||||
// TODO: Make this check more accurate.
|
||||
var widerBounds = worldBounds.Enlarged(5);
|
||||
|
||||
foreach (var sprite in _componentManager.GetAllComponents<SpriteComponent>())
|
||||
{
|
||||
var entity = sprite.Owner;
|
||||
if (!entity.Transform.IsMapTransform || entity.Transform.MapID != map ||
|
||||
!widerBounds.Contains(entity.Transform.WorldPosition) || !sprite.Visible)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_sortingSpritesList.Add(sprite);
|
||||
}
|
||||
|
||||
_sortingSpritesList.Sort((a, b) =>
|
||||
{
|
||||
var cmp = ((int) a.DrawDepth).CompareTo((int) b.DrawDepth);
|
||||
if (cmp != 0)
|
||||
{
|
||||
return cmp;
|
||||
}
|
||||
|
||||
cmp = a.RenderOrder.CompareTo(b.RenderOrder);
|
||||
|
||||
if (cmp != 0)
|
||||
{
|
||||
return cmp;
|
||||
}
|
||||
|
||||
return a.Owner.Uid.CompareTo(b.Owner.Uid);
|
||||
});
|
||||
|
||||
foreach (var sprite in _sortingSpritesList)
|
||||
{
|
||||
Vector2i roundedPos = default;
|
||||
if (sprite.PostShader != null)
|
||||
{
|
||||
_renderHandle.UseRenderTarget(EntityPostRenderTarget);
|
||||
_renderHandle.Clear(new Color());
|
||||
// Calculate viewport so that the entity thinks it's drawing to the same position,
|
||||
// which is necessary for light application,
|
||||
// but it's ACTUALLY drawing into the center of the render target.
|
||||
var spritePos = sprite.Owner.Transform.WorldPosition;
|
||||
var screenPos = _eyeManager.WorldToScreen(spritePos);
|
||||
var (roundedX, roundedY) = roundedPos = (Vector2i) screenPos;
|
||||
var flippedPos = new Vector2i(roundedX, ScreenSize.Y - roundedY);
|
||||
flippedPos -= EntityPostRenderTarget.Size / 2;
|
||||
_renderHandle.Viewport(Box2i.FromDimensions(-flippedPos, ScreenSize));
|
||||
}
|
||||
|
||||
sprite.OpenGLRender(_renderHandle.DrawingHandleWorld);
|
||||
|
||||
if (sprite.PostShader != null)
|
||||
{
|
||||
_renderHandle.UseRenderTarget(null);
|
||||
_renderHandle.Viewport(Box2i.FromDimensions(Vector2i.Zero, ScreenSize));
|
||||
|
||||
_renderHandle.UseShader(sprite.PostShader);
|
||||
_renderHandle.SetSpace(CurrentSpace.ScreenSpace);
|
||||
_renderHandle.SetModelTransform(Matrix3.Identity);
|
||||
|
||||
var rounded = roundedPos - EntityPostRenderTarget.Size / 2;
|
||||
|
||||
var box = UIBox2i.FromDimensions(rounded, EntityPostRenderTarget.Size);
|
||||
|
||||
_renderHandle.DrawTexture(EntityPostRenderTarget.Texture, box.BottomLeft,
|
||||
box.TopRight, Color.White, null, 0);
|
||||
|
||||
_renderHandle.SetSpace(CurrentSpace.WorldSpace);
|
||||
_renderHandle.UseShader(null);
|
||||
}
|
||||
}
|
||||
|
||||
_flushRenderHandle(_renderHandle);
|
||||
}
|
||||
|
||||
RenderOverlays(OverlaySpace.WorldSpace);
|
||||
|
||||
_lightingReady = false;
|
||||
|
||||
_setSpace(CurrentSpace.ScreenSpace);
|
||||
|
||||
RenderOverlays(OverlaySpace.ScreenSpace);
|
||||
|
||||
using (DebugGroup("UI"))
|
||||
{
|
||||
_userInterfaceManager.Render(_renderHandle);
|
||||
|
||||
@@ -104,12 +104,10 @@ namespace Robust.Client.Graphics.Clyde
|
||||
private bool _quartResLights = true;
|
||||
|
||||
private bool _disposing;
|
||||
private bool _lite;
|
||||
|
||||
public override bool Initialize(bool lite = false)
|
||||
public override bool Initialize()
|
||||
{
|
||||
_debugStats = new ClydeDebugStats();
|
||||
_lite = lite;
|
||||
if (!InitWindowing())
|
||||
{
|
||||
return false;
|
||||
@@ -280,10 +278,7 @@ namespace Robust.Client.Graphics.Clyde
|
||||
GL.Viewport(0, 0, ScreenSize.X, ScreenSize.Y);
|
||||
|
||||
// Quickly do a render with _drawingSplash = true so the screen isn't blank.
|
||||
if (!_lite)
|
||||
{
|
||||
Render();
|
||||
}
|
||||
}
|
||||
|
||||
// ReSharper disable once UnusedParameter.Local
|
||||
@@ -475,11 +470,8 @@ namespace Robust.Client.Graphics.Clyde
|
||||
|
||||
private void _regenerateLightRenderTarget()
|
||||
{
|
||||
if (!_lite)
|
||||
{
|
||||
LightRenderTarget = CreateRenderTarget(_lightMapSize(), RenderTargetColorFormat.Rgba16F,
|
||||
name: "LightRenderTarget");
|
||||
}
|
||||
LightRenderTarget = CreateRenderTarget(_lightMapSize(), RenderTargetColorFormat.Rgba16F,
|
||||
name: "LightRenderTarget");
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Robust.Client.Graphics.Clyde
|
||||
// Nada.
|
||||
}
|
||||
|
||||
public override bool Initialize(bool lite = false)
|
||||
public override bool Initialize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Robust.Client.Graphics
|
||||
|
||||
public abstract Vector2i ScreenSize { get; }
|
||||
public abstract void SetWindowTitle(string title);
|
||||
public abstract bool Initialize(bool lite=false);
|
||||
public abstract bool Initialize();
|
||||
|
||||
protected virtual void ReloadConfig()
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Robust.Client.Interfaces.Graphics
|
||||
void ProcessInput(FrameEventArgs frameEventArgs);
|
||||
|
||||
// Init.
|
||||
bool Initialize(bool lite = false);
|
||||
bool Initialize();
|
||||
void Ready();
|
||||
|
||||
ClydeHandle LoadShader(ParsedShader shader, string name = null);
|
||||
|
||||
Reference in New Issue
Block a user