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

View File

@@ -33,42 +33,42 @@
"V": {}
},
{
"ID": "791756db4da9af04d7513f9f305e4652",
"ID": "02119c7243cb3a4a4ffcd395ff07e23d",
"PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "d64fff8743e0d5893c235c94e7070976",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"V": {
"control": "d15fa816476f9d66ebdfc7ae25c3c6ea"
}
},
{
"ID": "b20f2b0a486762a15e6a7caf72ae66c2",
"PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "0c7588dd41779a8ada6f57974d94e073",
"PrefabObjectID": "e94561104b27c841e6ab0bb479bde17a",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"V": {}
},
{
"ID": "d15fa816476f9d66ebdfc7ae25c3c6ea",
"ID": "ad0c546649722a6c7a6b9aa8fdcac019",
"PrefabID": "cb74184545f392e5c67815808bc63e58",
"PrefabObjectID": "74464027453c88b3203fa79333f0730e",
"PrefabObjectID": "926bc11f416c9cef57d383875a480ded",
"ParentID": "ff6b6db54b5aa08e7286ef86246149ef",
"Transform": {
"Translation": {
"X": 0.0,
"Y": 716.0,
"X": 1355.0,
"Y": 791.0,
"Z": 0.0
}
},
"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",
"TypeName": "FlaxEngine.PostFxVolume",
"ParentID": "194e05f445ece24ec5448d886e1334df",
"Name": "PostFxVolume 0",
"Name": "GlobalPostFxVolume",
"Size": {
"X": 10.0,
"Y": 10.0,

View File

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