performance widget changes

This commit is contained in:
2022-05-15 18:00:22 +03:00
parent 6a4ecfdf0b
commit e994677566
5 changed files with 189 additions and 306 deletions

View File

@@ -6,128 +6,127 @@
{ {
"ID": "9e1b61dc44338f962e69f78ecb3d0536", "ID": "9e1b61dc44338f962e69f78ecb3d0536",
"TypeName": "FlaxEngine.UICanvas", "TypeName": "FlaxEngine.UICanvas",
"ParentID": "00000000000000000000000000000000",
"Name": "DefaultHudPrefab", "Name": "DefaultHudPrefab",
"Transform": { "Transform": {
"Orientation": { "Orientation": {
"X": 1.0, "X": 1.0,
"Y": 4.3711388286737938e-8, "Y": 4.371138828673793e-8,
"Z": 4.3711388286737938e-8, "Z": 4.371138828673793e-8,
"W": 1.910685465164705e-15 "W": 1.910685465164705e-15
} }
}, },
"V": {} "V": {}
}, },
{ {
"ID": "d64fff8743e0d5893c235c94e7070976", "ID": "e94561104b27c841e6ab0bb479bde17a",
"TypeName": "Cabrito.FpsScript", "TypeName": "Game.ConsoleScript",
"ParentID": "9e1b61dc44338f962e69f78ecb3d0536", "ParentID": "9e1b61dc44338f962e69f78ecb3d0536",
"V": { "V": {
"control": "74464027453c88b3203fa79333f0730e" "BackgroundColor": {
} "R": 0.0,
"G": 0.0,
"B": 0.0,
"A": 1.0
},
"ConsoleFont": "43f32bec443158643f53699f07b2e09c"
}
}, },
{ {
"ID": "0c7588dd41779a8ada6f57974d94e073", "ID": "926bc11f416c9cef57d383875a480ded",
"TypeName": "Cabrito.ConsoleScript",
"ParentID": "9e1b61dc44338f962e69f78ecb3d0536",
"V": {
"BackgroundColor": {
"R": 0.0,
"G": 0.0,
"B": 0.0,
"A": 1.0
},
"ConsoleFont": "43f32bec443158643f53699f07b2e09c"
}
},
{
"ID": "74464027453c88b3203fa79333f0730e",
"TypeName": "FlaxEngine.UIControl", "TypeName": "FlaxEngine.UIControl",
"ParentID": "9e1b61dc44338f962e69f78ecb3d0536", "ParentID": "9e1b61dc44338f962e69f78ecb3d0536",
"Name": "FPSUIControl", "Name": "PerformanceWidget",
"Transform": { "Transform": {
"Translation": { "Translation": {
"X": 0.0, "X": -1.0,
"Y": 716.0, "Y": 38.0,
"Z": 0.0 "Z": 0.0
} }
}, },
"Control": "FlaxEngine.GUI.Label", "Control": "FlaxEngine.GUI.Label",
"Data": { "Data": {
"Text": "eFPS: 121 uTime: 116.42902\nuFPS: 120 uTime: 0\nrFPS: 120 rTime: 0\npFPS: 30 pTime: 0", "Text": "120fps",
"TextColor": { "TextColor": {
"R": 1.0, "R": 1.0,
"G": 1.0, "G": 1.0,
"B": 1.0, "B": 1.0,
"A": 1.0 "A": 1.0
}, },
"TextColorHighlighted": { "TextColorHighlighted": {
"R": 1.0, "R": 1.0,
"G": 1.0, "G": 1.0,
"B": 1.0, "B": 1.0,
"A": 1.0 "A": 1.0
}, },
"HorizontalAlignment": 0, "HorizontalAlignment": 2,
"VerticalAlignment": 0, "VerticalAlignment": 2,
"Wrapping": 0, "Wrapping": 0,
"Font": { "Font": {
"Font": "4508d98f4aa1f0bd59362b81d47e38f4", "Font": "43f32bec443158643f53699f07b2e09c",
"Size": 10 "Size": 15
}, },
"Material": null, "Material": null,
"Margin": { "Margin": {
"Left": 0.0, "Left": 0.0,
"Right": 0.0, "Right": 0.0,
"Top": 0.0, "Top": 0.0,
"Bottom": 0.0 "Bottom": 0.0
}, },
"ClipText": false, "ClipText": false,
"AutoWidth": true, "AutoWidth": false,
"AutoHeight": true, "AutoHeight": false,
"AutoFitText": false, "AutoFitText": false,
"AutoFitTextRange": { "AutoFitTextRange": {
"X": 0.1, "X": 0.1,
"Y": 100.0 "Y": 100.0
}, },
"ClipChildren": true, "ClipChildren": true,
"CullChildren": true, "CullChildren": true,
"AnchorMin": { "AnchorMin": {
"X": 0.0, "X": 1.0,
"Y": 1.0 "Y": 1.0
}, },
"AnchorMax": { "AnchorMax": {
"X": 0.0, "X": 1.0,
"Y": 1.0 "Y": 1.0
}, },
"Offsets": { "Offsets": {
"Left": 0.0, "Left": -101.0,
"Right": 161.0, "Right": 100.0,
"Top": -97.0, "Top": -22.0,
"Bottom": 64.0 "Bottom": 20.0
}, },
"Scale": { "Scale": {
"X": 1.0, "X": 1.0,
"Y": 1.0 "Y": 1.0
}, },
"Pivot": { "Pivot": {
"X": 0.5, "X": 0.5,
"Y": 0.5 "Y": 0.5
}, },
"Shear": { "Shear": {
"X": 0.0, "X": 0.0,
"Y": 0.0 "Y": 0.0
}, },
"Rotation": 0.0, "Rotation": 0.0,
"BackgroundColor": { "BackgroundColor": {
"R": 0.0, "R": 0.0,
"G": 0.0, "G": 0.0,
"B": 0.0, "B": 0.0,
"A": 0.0 "A": 0.0
}, },
"Enabled": true, "Enabled": true,
"Visible": true, "Visible": true,
"AutoFocus": false "AutoFocus": false
} }
},
{
"ID": "85ddca4e46ed0c030d063599ac716e96",
"TypeName": "Game.PerformanceWidget",
"ParentID": "926bc11f416c9cef57d383875a480ded",
"V": {
"control": "926bc11f416c9cef57d383875a480ded"
}
} }
] ]
} }

View File

@@ -33,42 +33,42 @@
"V": {} "V": {}
}, },
{ {
"ID": "791756db4da9af04d7513f9f305e4652", "ID": "02119c7243cb3a4a4ffcd395ff07e23d",
"PrefabID": "cb74184545f392e5c67815808bc63e58", "PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "d64fff8743e0d5893c235c94e7070976", "PrefabObjectID": "e94561104b27c841e6ab0bb479bde17a",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"V": {
"control": "d15fa816476f9d66ebdfc7ae25c3c6ea"
}
},
{
"ID": "b20f2b0a486762a15e6a7caf72ae66c2",
"PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "0c7588dd41779a8ada6f57974d94e073",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef", "ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"V": {} "V": {}
}, },
{ {
"ID": "d15fa816476f9d66ebdfc7ae25c3c6ea", "ID": "ad0c546649722a6c7a6b9aa8fdcac019",
"PrefabID": "cb74184545f392e5c67815808bc63e58", "PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "74464027453c88b3203fa79333f0730e", "PrefabObjectID": "926bc11f416c9cef57d383875a480ded",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef", "ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"Transform": { "Transform": {
"Translation": { "Translation": {
"X": 0.0, "X": 1355.0,
"Y": 716.0, "Y": 791.0,
"Z": 0.0 "Z": 0.0
} }
}, },
"Data": { "Data": {
"Text": "eFPS: 120 uTime: 4.1501515\nuFPS: 120 uTime: 0\nrFPS: 120 rTime: 0\npFPS: 30 pTime: 0" "Text": "15fps"
}
},
{
"ID": "35b34b0c4476f0ed43aa8fb4d5f2eebc",
"PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "85ddca4e46ed0c030d063599ac716e96",
"ParentID": "ad0c546649722a6c7a6b9aa8fdcac019",
"V": {
"control": "ad0c546649722a6c7a6b9aa8fdcac019"
} }
}, },
{ {
"ID": "9b0c532d4247061970c809a0af58c82a", "ID": "9b0c532d4247061970c809a0af58c82a",
"TypeName": "FlaxEngine.PostFxVolume", "TypeName": "FlaxEngine.PostFxVolume",
"ParentID": "194e05f445ece24ec5448d886e1334df", "ParentID": "194e05f445ece24ec5448d886e1334df",
"Name": "PostFxVolume 0", "Name": "GlobalPostFxVolume",
"Size": { "Size": {
"X": 10.0, "X": 10.0,
"Y": 10.0, "Y": 10.0,

View File

@@ -10,9 +10,6 @@ namespace Game
{ {
public class ConsoleContentTextBox : Control public class ConsoleContentTextBox : Control
{ {
public static double accumDrawTime;
public static long accumDrawTimes;
private readonly FontReference Font; private readonly FontReference Font;
protected TextLayoutOptions _layout; protected TextLayoutOptions _layout;
@@ -194,8 +191,6 @@ namespace Game
if (!font) if (!font)
return; return;
Stopwatch sw = Stopwatch.StartNew();
// Background // Background
Profiler.BeginEvent("ConsoleContentTextBoxDraw_Background"); Profiler.BeginEvent("ConsoleContentTextBoxDraw_Background");
Color backColor = BackgroundColor; Color backColor = BackgroundColor;
@@ -358,10 +353,6 @@ namespace Game
Profiler.EndEvent(); Profiler.EndEvent();
} }
sw.Stop();
accumDrawTime += sw.Elapsed.TotalSeconds;
accumDrawTimes++;
} }

View File

@@ -1,181 +0,0 @@
using System;
using System.Diagnostics;
using System.Text;
using FlaxEditor.Content.Settings;
using FlaxEngine;
using FlaxEngine.GUI;
namespace Game
{
[ExecuteInEditMode]
public class FpsScript : Script
{
private const double updateInterval = 0.25;
private const double drawInterval = 0.25;
private const double physicsInterval = 0.25;
private double conTime;
public UIControl control;
private string currentRenderer = "Unknown";
private double drawAccumTime;
private double drawTimeAvg;
private ulong drawTimeCount;
private Label label;
private double physicsAccumTime;
private double physicsTimeAvg;
private ulong physicsTimeCount;
private Stopwatch sw;
private Stopwatch sw0;
private Stopwatch sw2;
private Stopwatch sw3;
private RenderTask t;
private TimeSettings timeSettings;
private double updateAccumTime;
private double updateTimeAvg;
private ulong updateTimeCount;
public override void OnAwake()
{
label = (Label)control.Control;
sw = Stopwatch.StartNew();
sw2 = Stopwatch.StartNew();
sw3 = Stopwatch.StartNew();
sw0 = Stopwatch.StartNew();
currentRenderer = GPUDevice.Instance.RendererType.ToString();
if (t == null)
{
//Destroy(t);
t = new RenderTask();
t.Render += OnDraw;
}
GameSettings settings = GameSettings.Load();
timeSettings = settings.Time.CreateInstance<TimeSettings>();
}
public override void OnDestroy()
{
Destroy(t);
t = null;
}
public override void OnUpdate()
{
updateAccumTime += Time.DeltaTime;
updateTimeCount++;
double elapsed = sw.Elapsed.TotalSeconds;
if (elapsed >= updateInterval)
{
sw.Restart();
updateTimeAvg = elapsed / updateTimeCount;
updateTimeCount = 0;
conTime = ConsoleContentTextBox.accumDrawTime / ConsoleContentTextBox.accumDrawTimes * 1000.0;
ConsoleContentTextBox.accumDrawTime = 0.0;
ConsoleContentTextBox.accumDrawTimes = 0;
}
StringBuilder sb = new StringBuilder();
sb.Append("eFPS: " + Engine.FramesPerSecond);
sb.Append(" uTime: " + sw0.Elapsed.TotalSeconds);
sb.Append("\nuFPS: " + (int)Math.Round(1.0f / updateTimeAvg));
sb.Append(" uTime: " + updateAccumTime);
sb.Append("\nrFPS: " + (int)Math.Round(1.0f / drawTimeAvg));
sb.Append(" rTime: " + drawAccumTime);
sb.Append("\npFPS: " + (int)Math.Round(1.0f / physicsTimeAvg));
sb.Append(" pTime: " + physicsAccumTime);
//sb.Append("\nCon: " + conTime.ToString() + "ms");
//sb.Append("\nGC memory: " + (GC.GetTotalMemory(false) / 1000000.0f).ToString() + "MB");
//sb.Append("\nUpdate profiler: " + updateProfTime.ToString() + "ms");
#if false
#if BUILD_DEVELOPMENT
var nameOffset = Marshal.OffsetOf(typeof(ProfilerCPU.Event), "Name0");
foreach (var eventsCpu in FlaxEngine.ProfilingTools.EventsCPU)
{
sb.Append("\nName: " + eventsCpu.Name + " ");
foreach (var eventt in eventsCpu.Events)
{
#if FLAX_EDITOR
string eventName = eventt.Name;
#else
string eventName;
unsafe
{
var ptr1 = &eventt;
char* ptr2 = (char*)(new IntPtr((byte*)ptr1 + nameOffset.ToInt64()));
//fixed (char* name = &eventt)
{
eventName = new string(ptr2);
}
}
#endif
sb.Append(eventName + " " + (eventt.End-eventt.Start) + "ms, ");
}
}
#endif
#endif
((Label)control.Control).Text = sb.ToString();
/*if (!Platform.HasFocus)
{
Time.UpdateFPS = 15;
Time.DrawFPS = 15;
Time.PhysicsFPS = 15;
}
#if FLAX_EDITOR
else if (!FlaxEditor.Editor.IsPlayMode)
{
var editorFPS = FlaxEditor.Editor.Instance.Options.Options.General.EditorFPS;
Time.UpdateFPS = editorFPS;
Time.DrawFPS = editorFPS;
Time.PhysicsFPS = timeSettings.PhysicsFPS;
}
#endif
else
{
Time.UpdateFPS = timeSettings.UpdateFPS;
Time.DrawFPS = timeSettings.DrawFPS;
Time.PhysicsFPS = timeSettings.PhysicsFPS;
}*/
}
public override void OnFixedUpdate()
{
physicsAccumTime += Time.DeltaTime;
physicsTimeCount++;
double elapsed = sw3.Elapsed.TotalSeconds;
if (elapsed >= physicsInterval)
{
sw3.Restart();
physicsTimeAvg = elapsed / physicsTimeCount;
physicsTimeCount = 0;
}
}
private void OnDraw(RenderTask tt, GPUContext context)
{
drawAccumTime += Time.DeltaTime;
drawTimeCount++;
double elapsed = sw2.Elapsed.TotalSeconds;
if (elapsed >= drawInterval)
{
sw2.Restart();
drawTimeAvg = elapsed / drawTimeCount;
drawTimeCount = 0;
}
}
}
}

View File

@@ -0,0 +1,74 @@
using System;
using System.Diagnostics;
using FlaxEngine;
using FlaxEngine.GUI;
namespace Game
{
[ExecuteInEditMode]
public class PerformanceWidget : Script
{
private const double updateInterval = 0.25;
public UIControl control;
private Label label;
private Stopwatch stopwatch;
private double updateTimeAvg;
private ulong updateTimeCount;
public override void OnAwake()
{
label = (Label)control.Control;
label.Text = $"0fps";
control.HideFlags = HideFlags.None;
stopwatch = Stopwatch.StartNew();
}
public override void OnUpdate()
{
updateTimeCount++;
double elapsed = stopwatch.Elapsed.TotalSeconds;
if (elapsed >= updateInterval)
{
stopwatch.Restart();
updateTimeAvg = elapsed / updateTimeCount;
updateTimeCount = 0;
label.Text = $"{(int)Math.Round(1.0f / updateTimeAvg)}fps";
}
#if false
#if BUILD_DEVELOPMENT
var nameOffset = Marshal.OffsetOf(typeof(ProfilerCPU.Event), "Name0");
foreach (var eventsCpu in FlaxEngine.ProfilingTools.EventsCPU)
{
sb.Append("\nName: " + eventsCpu.Name + " ");
foreach (var eventt in eventsCpu.Events)
{
#if FLAX_EDITOR
string eventName = eventt.Name;
#else
string eventName;
unsafe
{
var ptr1 = &eventt;
char* ptr2 = (char*)(new IntPtr((byte*)ptr1 + nameOffset.ToInt64()));
//fixed (char* name = &eventt)
{
eventName = new string(ptr2);
}
}
#endif
sb.Append(eventName + " " + (eventt.End-eventt.Start) + "ms, ");
}
}
#endif
#endif
}
}
}