Add high-FPS render pacing and telemetry
Some checks failed
build / Windows Build (push) Has been cancelled

This commit is contained in:
server
2026-04-16 10:37:08 +02:00
parent 49e8eac809
commit bfe52a81f9
15 changed files with 1402 additions and 233 deletions

View File

@@ -4,6 +4,7 @@
#include "eterLib/Input.h"
#include "eterLib/Profiler.h"
#include "eterLib/GrpDevice.h"
#include "EterLib/GrpTextInstance.h"
#include "eterLib/NetDevice.h"
#include "eterLib/GrpLightManager.h"
#include "eterLib/GameThreadPool.h"
@@ -42,7 +43,13 @@
#include "AbstractApplication.h"
#include "MovieMan.h"
#include <qedit.h>
struct IGraphBuilder;
struct IBaseFilter;
struct ISampleGrabber;
struct IMediaControl;
struct IMediaEventEx;
struct IVideoWindow;
struct IBasicVideo;
class CPythonApplication : public CMSApplication, public CInputKeyboard, public IAbstractApplication
{
@@ -206,6 +213,7 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
float GetPitch();
void SetFPS(int iFPS);
void SetPerformanceHUDVisible(bool isVisible);
void SetServerTime(time_t tTime);
time_t GetServerTime();
time_t GetServerTimeStamp();
@@ -303,6 +311,12 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
BOOL __IsContinuousChangeTypeCursor(int iCursorNum);
void __UpdateCamera();
void ApplyRenderInterpolation();
bool IsRenderTelemetrySamplingEnabled() const;
void InitializeRenderRuntimeOverrides();
void ResetRenderTelemetryWindow(DWORD dwNow);
void FlushRenderTelemetryWindow(DWORD dwNow);
void RenderPerformanceHUD();
void __SetFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight, DWORD dwBPP);
void __MinimizeFullScreenWindow(HWND hWnd, DWORD dwWidth, DWORD dwHeight);
@@ -357,9 +371,28 @@ class CPythonApplication : public CMSApplication, public CInputKeyboard, public
PyObject * m_poMouseHandler;
D3DXVECTOR3 m_v3CenterPosition;
D3DXVECTOR3 m_v3LastCenterPosition;
CGraphicTextInstance m_kRenderTelemetryTextLine;
std::string m_stRenderTelemetrySummary;
unsigned int m_iFPS;
float m_fRenderInterpolationFactor;
float m_fAveRenderTime;
bool m_bRenderTelemetryEnabled;
bool m_bRenderTelemetryHudVisible;
DWORD m_dwRenderTelemetryIntervalMS;
DWORD m_dwRenderTelemetryWindowStartMS;
DWORD m_dwRenderTelemetryLoopCount;
DWORD m_dwRenderTelemetryUpdateCount;
DWORD m_dwRenderTelemetryRenderCount;
DWORD m_dwRenderTelemetryBlockedRenderCount;
DWORD m_dwRenderTelemetryLastPresentTime;
DWORD m_dwRenderTelemetryPresentGapSamples;
double m_fRenderTelemetryUpdateTimeSumMS;
double m_fRenderTelemetryRenderTimeSumMS;
double m_fRenderTelemetrySleepTimeSumMS;
double m_fRenderTelemetryInterpolationSum;
double m_fRenderTelemetryPresentGapSumMS;
DWORD m_dwCurRenderTime;
DWORD m_dwCurUpdateTime;
DWORD m_dwLoad;