feat(debug): added debug fps stats
This commit is contained in:
parent
4188e2d9e1
commit
f2a7662b08
7 changed files with 74 additions and 9 deletions
|
@ -4,10 +4,10 @@
|
|||
|
||||
out vec4 FragColor;
|
||||
|
||||
uniform vec3 aColor;
|
||||
uniform vec4 aColor;
|
||||
|
||||
// Main
|
||||
|
||||
void main() {
|
||||
FragColor = vec4(aColor, 1);
|
||||
FragColor = aColor;
|
||||
}
|
|
@ -93,8 +93,11 @@ void ScriptContext::PushThreadSleep(lua_State* thread, float delay) {
|
|||
lua_pop(state, 1); // pop sleepingThreads
|
||||
}
|
||||
|
||||
tu_time_t schedTime;
|
||||
void ScriptContext::RunSleepingThreads() {
|
||||
for (size_t i = 0; i < sleepingThreads.size();) {
|
||||
tu_time_t startTime = tu_clock_micros();
|
||||
size_t i;
|
||||
for (i = 0; i < sleepingThreads.size();) {
|
||||
bool deleted = false;
|
||||
|
||||
SleepingThread sleep = sleepingThreads[i];
|
||||
|
@ -127,6 +130,8 @@ void ScriptContext::RunSleepingThreads() {
|
|||
if (!deleted)
|
||||
i++;
|
||||
}
|
||||
if (i > 0)
|
||||
schedTime = tu_clock_micros() - startTime;
|
||||
}
|
||||
|
||||
std::string ScriptContext::RegisterScriptSource(std::shared_ptr<Script> script) {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "objects/joint/jointinstance.h"
|
||||
#include "objects/datamodel.h"
|
||||
#include "physics/util.h"
|
||||
#include "timeutil.h"
|
||||
#include <memory>
|
||||
#include <reactphysics3d/collision/CollisionCallback.h>
|
||||
#include <reactphysics3d/collision/OverlapCallback.h>
|
||||
|
@ -144,7 +145,9 @@ void Workspace::SyncPartPhysics(std::shared_ptr<Part> part) {
|
|||
part->rigidBody->setUserData(&*part);
|
||||
}
|
||||
|
||||
tu_time_t physTime;
|
||||
void Workspace::PhysicsStep(float deltaTime) {
|
||||
tu_time_t startTime = tu_clock_micros();
|
||||
// Step the simulation a few steps
|
||||
physicsWorld->update(std::min(deltaTime / 2, (1/60.f)));
|
||||
|
||||
|
@ -180,6 +183,8 @@ void Workspace::PhysicsStep(float deltaTime) {
|
|||
parent.value()->Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
physTime = tu_clock_micros() - startTime;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
#include "rendering/shader.h"
|
||||
#include "rendering/texture3d.h"
|
||||
#include "timeutil.h"
|
||||
#include <GL/glew.h>
|
||||
#include <GL/gl.h>
|
||||
#include <glm/ext/vector_float4.hpp>
|
||||
#include <string>
|
||||
|
||||
extern int viewportWidth, viewportHeight;
|
||||
extern Texture3D* fontTexture;
|
||||
extern Shader* fontShader;
|
||||
extern Shader* identityShader;
|
||||
|
||||
void renderChar(char c, int x, int y, float scale=1.f) {
|
||||
void drawChar(char c, int x, int y, float scale=1.f) {
|
||||
fontShader->use();
|
||||
fontTexture->activate(1);
|
||||
fontShader->set("fontTex", 1);
|
||||
|
@ -30,16 +34,57 @@ void renderChar(char c, int x, int y, float scale=1.f) {
|
|||
glEnd();
|
||||
}
|
||||
|
||||
void renderString(std::string str, int x, int y, float scale=1.f) {
|
||||
void drawString(std::string str, int x, int y, float scale=1.f) {
|
||||
for (int i = 0; i < (int)str.length(); i++) {
|
||||
char c = str[i];
|
||||
renderChar(c, x+i*8*scale, y, scale);
|
||||
drawChar(c, x+i*8*scale, y, scale);
|
||||
}
|
||||
}
|
||||
|
||||
void drawRect(int x, int y, int w, int h, glm::vec4 color) {
|
||||
identityShader->use();
|
||||
identityShader->set("aColor", color);
|
||||
|
||||
float x0 = 2*float(x)/viewportWidth-1, y0 = 2*float(y)/viewportHeight-1, x1 = 2*float(x + w)/viewportWidth-1, y1 = 2*float(y + h)/viewportHeight-1;
|
||||
float tmp;
|
||||
tmp = -y0, y0 = -y1, y1 = tmp;
|
||||
|
||||
glBegin(GL_QUADS);
|
||||
glVertex3f(x0, y0, 0);
|
||||
glVertex3f(x1, y0, 0);
|
||||
glVertex3f(x1, y1, 0);
|
||||
glVertex3f(x0, y1, 0);
|
||||
glEnd();
|
||||
}
|
||||
|
||||
static tu_time_t lastTime;
|
||||
extern tu_time_t renderTime;
|
||||
extern tu_time_t physTime;
|
||||
extern tu_time_t schedTime;
|
||||
|
||||
// Draws debug info window
|
||||
// Including info about framerates, etc.
|
||||
void renderDebugInfo() {
|
||||
// renderString("Hello, test!", 50, 50, 2);
|
||||
renderString("Hello, test!", 0, 0, 1);
|
||||
tu_time_t timePassed = tu_clock_micros() - lastTime;
|
||||
float frames = 1/(((float)timePassed)/1'000'000);
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
drawRect(0, 0, 200, 16*8, glm::vec4(0.2f,0.2f,0.2f,0.8f));
|
||||
drawString("FPS: " + std::to_string((int)frames), 0, 16*0);
|
||||
drawString(" 1/: " + std::to_string((float)timePassed/1'000'000), 0, 16*1);
|
||||
|
||||
frames = 1/(((float)renderTime)/1'000'000);
|
||||
drawString("RPS: " + std::to_string((int)frames), 0, 16*2);
|
||||
drawString(" 1/: " + std::to_string((float)renderTime/1'000'000), 0, 16*3);
|
||||
|
||||
frames = 1/(((float)physTime)/1'000'000);
|
||||
drawString("PPS: " + std::to_string((int)frames), 0, 16*4);
|
||||
drawString(" 1/: " + std::to_string((float)physTime/1'000'000), 0, 16*5);
|
||||
|
||||
frames = 1/(((float)schedTime)/1'000'000);
|
||||
drawString("SPS: " + std::to_string((int)frames), 0, 16*6);
|
||||
drawString(" 1/: " + std::to_string((float)schedTime/1'000'000), 0, 16*7);
|
||||
|
||||
lastTime = tu_clock_micros();
|
||||
}
|
|
@ -32,6 +32,7 @@
|
|||
#include "skybox.h"
|
||||
#include "enum/surface.h"
|
||||
#include "texture3d.h"
|
||||
#include "timeutil.h"
|
||||
|
||||
#include "renderer.h"
|
||||
|
||||
|
@ -331,7 +332,7 @@ void renderHandles() {
|
|||
glDisable(GL_CULL_FACE);
|
||||
|
||||
identityShader->use();
|
||||
identityShader->set("aColor", glm::vec3(0.f, 1.f, 1.f));
|
||||
identityShader->set("aColor", glm::vec4(0.f, 1.f, 1.f, 1.f));
|
||||
|
||||
for (auto face : HandleFace::Faces) {
|
||||
CFrame cframe = getHandleCFrame(face);
|
||||
|
@ -634,9 +635,12 @@ void addDebugRenderCFrame(CFrame frame, Color3 color) {
|
|||
DEBUG_CFRAMES.push_back(std::make_pair(frame, color));
|
||||
}
|
||||
|
||||
tu_time_t renderTime;
|
||||
void render(GLFWwindow* window) {
|
||||
tu_time_t startTime = tu_clock_micros();
|
||||
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
|
||||
renderSkyBox();
|
||||
renderHandles();
|
||||
|
@ -652,6 +656,7 @@ void render(GLFWwindow* window) {
|
|||
renderDebugInfo();
|
||||
// TODO: Make this a debug flag
|
||||
// renderAABB();
|
||||
renderTime = tu_clock_micros() - startTime;
|
||||
}
|
||||
|
||||
void setViewport(int width, int height) {
|
||||
|
|
|
@ -100,6 +100,10 @@ void Shader::set(std::string key, glm::vec3 value) {
|
|||
glUniform3f(glGetUniformLocation(id, key.c_str()), value.x, value.y, value.z);
|
||||
}
|
||||
|
||||
void Shader::set(std::string key, glm::vec4 value) {
|
||||
glUniform4f(glGetUniformLocation(id, key.c_str()), value.x, value.y, value.z, value.w);
|
||||
}
|
||||
|
||||
void Shader::set(std::string key, glm::mat3 value) {
|
||||
glUniformMatrix3fv(glGetUniformLocation(id, key.c_str()), 1, GL_FALSE, glm::value_ptr(value));
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ public:
|
|||
void set(std::string key, DirLight value);
|
||||
void set(std::string key, PointLight value);
|
||||
void set(std::string key, glm::vec3 value);
|
||||
void set(std::string key, glm::vec4 value);
|
||||
void set(std::string key, glm::mat3 value);
|
||||
void set(std::string key, glm::mat4 value);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue