Minor - Optimisation stats - V11.5.0
This commit is contained in:
@@ -9,8 +9,6 @@
|
||||
#include "camera_class.h"
|
||||
#include "object.h"
|
||||
#include "light_class.h"
|
||||
#include <vector>
|
||||
#include <filesystem>
|
||||
|
||||
#include "bitmap_class.h"
|
||||
#include "sprite_class.h"
|
||||
@@ -31,6 +29,8 @@
|
||||
#include "physics.h"
|
||||
#include "frustum.h"
|
||||
#include "skybox.h"
|
||||
#include "shadow_map.h"
|
||||
#include "stats.h"
|
||||
|
||||
|
||||
#include <fstream>
|
||||
@@ -43,9 +43,8 @@
|
||||
#include <DirectXMath.h>
|
||||
#include <mutex>
|
||||
#include <memory>
|
||||
|
||||
#include "shadow_map.h"
|
||||
#include "stats.h"
|
||||
#include <vector>
|
||||
#include <filesystem>
|
||||
|
||||
|
||||
/////////////
|
||||
@@ -128,14 +127,20 @@ public:
|
||||
|
||||
void set_cel_shading(const bool enable) { enable_cel_shading_ = enable; };
|
||||
|
||||
void set_vsync(bool vsync);
|
||||
void set_vsync(bool vsync) {
|
||||
vsync_enabled_ = vsync;
|
||||
if (direct_3d_) {
|
||||
direct_3d_->set_vsync(vsync);
|
||||
Logger::Get().Log("Setting Vsync to " + std::to_string(vsync), __FILE__, __LINE__);
|
||||
}
|
||||
};
|
||||
bool get_vsync() const { return vsync_enabled_; };
|
||||
|
||||
HWND get_hwnd() const;
|
||||
void set_hwnd(HWND hwnd);
|
||||
HWND get_hwnd() const { return hwnd_; };
|
||||
void set_hwnd(HWND hwnd) { hwnd_ = hwnd; };
|
||||
|
||||
bool is_windowed() const;
|
||||
void set_windowed(bool windowed);
|
||||
bool is_windowed() const { return windowed_; };
|
||||
void set_windowed(bool windowed) { windowed_ = windowed; };
|
||||
|
||||
void set_window_size(const ImVec2 size) { window_size_ = size; };
|
||||
ImVec2 get_window_size() const { return window_size_; };
|
||||
@@ -151,6 +156,7 @@ public:
|
||||
void set_frustum(const frustum& frustum) { frustum_culling_ = frustum; };
|
||||
|
||||
void construct_frustum();
|
||||
|
||||
int get_render_count() const { return render_count_; };
|
||||
void set_render_count(const int render_count) { render_count_ = render_count; };
|
||||
float get_frustum_tolerance() const { return frustum_culling_tolerance_; };
|
||||
@@ -176,6 +182,8 @@ private:
|
||||
bool render_pass(const std::vector<std::reference_wrapper<std::vector<object*>>>& RenderQueues, XMFLOAT4* diffuse, XMFLOAT4* position, XMFLOAT4* ambient, XMMATRIX view, XMMATRIX projection);
|
||||
|
||||
void update_skybox_position();
|
||||
void culling_thread_function();
|
||||
void update_stats_after_modification();
|
||||
|
||||
public :
|
||||
std::vector<ID3D11ShaderResourceView*> textures;
|
||||
@@ -186,9 +194,7 @@ private :
|
||||
std::thread culling_thread_;
|
||||
std::atomic<bool> culling_active_;
|
||||
std::mutex objects_mutex_;
|
||||
void culling_thread_function();
|
||||
|
||||
|
||||
|
||||
std::mutex terrain_mutex_;
|
||||
std::vector<std::tuple<float, float, float, std::string, int>> terrain_generation_data_;
|
||||
bool terrain_generation_ready_;
|
||||
@@ -231,8 +237,9 @@ private :
|
||||
object* selected_object_;
|
||||
std::vector<object*> cubes_;
|
||||
std::vector<object*> terrain_chunk_;
|
||||
float speed_ = 0.1f; // speed for the demo spinning object
|
||||
std::vector<object*> object_;
|
||||
|
||||
float speed_ = 0.1f; // speed for the demo spinning object
|
||||
std::vector<object*> imported_object_;
|
||||
int object_id_ = 0;
|
||||
std::vector<std::reference_wrapper<std::vector<object*>>> render_queues_;
|
||||
|
@@ -106,9 +106,12 @@ private:
|
||||
|
||||
const std::deque<Logger::LogEntry>& logBuffer = Logger::Get().GetLogBuffer();
|
||||
|
||||
int current_fps_, min_fps_, max_fps_, draw_calls_, total_vertex_count_, total_triangle_count_, visible_triangle_count_;
|
||||
int current_fps_, min_fps_, max_fps_, draw_calls_, visible_triangle_count_;
|
||||
float current_frame_time_, min_frame_time_, max_frame_time_ ;
|
||||
|
||||
std::shared_ptr<int> total_vertex_count_;
|
||||
std::shared_ptr<int> total_triangle_count_;
|
||||
|
||||
// gpu information
|
||||
char card_name_[128];
|
||||
int video_memory_ = 0;
|
||||
|
@@ -18,6 +18,7 @@ public:
|
||||
|
||||
bool initialize(application_class* app);
|
||||
void update_geometric_stats();
|
||||
void update_visible_count();
|
||||
void update_display_stats();
|
||||
|
||||
int get_total_vertex_count() const;
|
||||
@@ -36,6 +37,10 @@ public:
|
||||
std::string get_cpu_name();
|
||||
std::string get_gpu_driver_version(ID3D11Device* device);
|
||||
|
||||
std::shared_ptr<int>& get_vertex_count_ptr() { return total_vertex_count_; }
|
||||
std::shared_ptr<int>& get_triangle_count_ptr() { return total_triangle_count_; }
|
||||
|
||||
|
||||
private:
|
||||
std::thread update_display_thread_;
|
||||
|
||||
@@ -47,8 +52,9 @@ private:
|
||||
std::vector<object*> cubes_vec_;
|
||||
std::vector<object*> terrain_chunk_vec_;
|
||||
|
||||
int total_vertex_count_;
|
||||
int total_triangle_count_;
|
||||
std::shared_ptr<int> total_vertex_count_;
|
||||
std::shared_ptr<int> total_triangle_count_;
|
||||
|
||||
int visible_triangle_count_ = 0;
|
||||
int current_fps_ = 0;
|
||||
int min_fps_ = 0;
|
||||
|
@@ -1155,7 +1155,7 @@ bool application_class::render(float rotation, float x, float y, float z, float
|
||||
// return false;
|
||||
// }
|
||||
|
||||
stats_->update_geometric_stats();
|
||||
// stats_->update_geometric_stats();
|
||||
|
||||
// Update the render count text.
|
||||
result = update_render_count_string(get_render_count());
|
||||
@@ -1353,6 +1353,8 @@ void application_class::generate_terrain()
|
||||
|
||||
// Ajouter <20> la liste des chunks de terrain
|
||||
terrain_chunk_.push_back(terrain);
|
||||
|
||||
update_stats_after_modification();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1395,6 +1397,8 @@ void application_class::add_kobject(std::wstring& filepath)
|
||||
|
||||
object_.push_back(newObject);
|
||||
|
||||
update_stats_after_modification();
|
||||
|
||||
// V<>rifiez que l'objet a bien re<72>u les textures_
|
||||
if (newObject->get_model()->GetTexture(TextureType::Diffuse,0) == nullptr)
|
||||
{
|
||||
@@ -1426,6 +1430,8 @@ void application_class::add_cube()
|
||||
|
||||
cubes_.push_back(newCube);
|
||||
|
||||
update_stats_after_modification();
|
||||
|
||||
}
|
||||
|
||||
void application_class::delete_kobject(int index)
|
||||
@@ -1437,6 +1443,8 @@ void application_class::delete_kobject(int index)
|
||||
{
|
||||
object_.erase(object_.begin() + index);
|
||||
}
|
||||
|
||||
update_stats_after_modification();
|
||||
}
|
||||
|
||||
void application_class::delete_terrain()
|
||||
@@ -1444,6 +1452,7 @@ void application_class::delete_terrain()
|
||||
std::lock_guard<std::mutex> lock(objects_mutex_);
|
||||
Logger::Get().Log("Deleting terrain", __FILE__, __LINE__);
|
||||
terrain_chunk_.clear();
|
||||
update_stats_after_modification();
|
||||
}
|
||||
|
||||
bool application_class::update_mouse_strings(int mouseX, int mouseY, bool mouseDown)
|
||||
@@ -1637,39 +1646,6 @@ void application_class::set_light_position(int index, XMVECTOR position)
|
||||
lights_[index]->SetPosition(lightPosition.x, lightPosition.y, lightPosition.z);
|
||||
}
|
||||
|
||||
void application_class::set_vsync(bool vsync)
|
||||
{
|
||||
vsync_enabled_ = vsync;
|
||||
|
||||
if (direct_3d_)
|
||||
{
|
||||
Logger::Get().Log("Setting Vsync to " + std::to_string(vsync) + " with a screen width : " + std::to_string(get_screen_width()) + "and a screen height : " + std::to_string(get_screen_height()), __FILE__, __LINE__);
|
||||
direct_3d_->set_vsync(vsync);
|
||||
}
|
||||
}
|
||||
|
||||
HWND application_class::get_hwnd() const
|
||||
{
|
||||
return hwnd_;
|
||||
}
|
||||
|
||||
void application_class::set_hwnd(HWND hwnd)
|
||||
{
|
||||
hwnd_ = hwnd;
|
||||
}
|
||||
|
||||
bool application_class::is_windowed() const
|
||||
{
|
||||
return windowed_;
|
||||
}
|
||||
|
||||
void application_class::set_windowed(bool windowed)
|
||||
{
|
||||
// log the new windowed mode
|
||||
Logger::Get().Log("Setting windowed mode to " + std::to_string(windowed), __FILE__, __LINE__);
|
||||
windowed_ = windowed;
|
||||
}
|
||||
|
||||
void application_class::set_screen_height(int height)
|
||||
{
|
||||
// log the new screen height
|
||||
@@ -1736,7 +1712,7 @@ void application_class::culling_thread_function()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Pause pour <20>viter de surcharger le CPU
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(16)); // ~60 Hz
|
||||
}
|
||||
@@ -1753,6 +1729,7 @@ bool application_class::render_pass(const std::vector<std::reference_wrapper<std
|
||||
bool result;
|
||||
|
||||
int renderCount = 0;
|
||||
int i;
|
||||
|
||||
if (RenderQueues.empty())
|
||||
{
|
||||
@@ -2204,6 +2181,16 @@ bool application_class::create_big_cube(int side_count)
|
||||
}
|
||||
// Transf<73>rer les cubes du vecteur temporaire au vecteur membre
|
||||
cubes_ = std::move(tempCubes);
|
||||
|
||||
update_stats_after_modification();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void application_class::update_stats_after_modification()
|
||||
{
|
||||
if (stats_)
|
||||
{
|
||||
stats_ -> update_geometric_stats();
|
||||
}
|
||||
}
|
||||
|
@@ -17,6 +17,14 @@ imguiManager::imguiManager()
|
||||
total_triangle_count_ = 0;
|
||||
visible_triangle_count_ = 0;
|
||||
current_frame_time_ = 0;
|
||||
|
||||
showObjectWindow = false;
|
||||
showTerrainWindow = false;
|
||||
showLightWindow = false;
|
||||
showOldSceneWindow = false;
|
||||
showEngineSettingsWindow = false;
|
||||
showLogWindow = false;
|
||||
showStatsWindow = false;
|
||||
|
||||
// Initialiser l'historique des frametimes <20> z<>ro
|
||||
for (int i = 0; i < FRAME_HISTORY_COUNT; i++)
|
||||
@@ -171,6 +179,9 @@ bool imguiManager::Initialize(HWND hwnd, ID3D11Device* device, ID3D11DeviceConte
|
||||
}
|
||||
|
||||
stats_ = app_->get_stats();
|
||||
|
||||
total_triangle_count_ = stats_->get_triangle_count_ptr();
|
||||
total_vertex_count_ = stats_->get_vertex_count_ptr();
|
||||
|
||||
Logger::Get().Log("imgui initialized", __FILE__, __LINE__, Logger::LogLevel::Initialize);
|
||||
|
||||
@@ -989,8 +1000,11 @@ void imguiManager::WidgetRenderStats()
|
||||
min_fps_ = stats_->get_min_fps();
|
||||
max_fps_ = stats_->get_max_fps();
|
||||
draw_calls_ = stats_->get_draw_calls();
|
||||
total_vertex_count_ = stats_->get_total_vertex_count();
|
||||
total_triangle_count_ = stats_->get_total_triangle_count();
|
||||
|
||||
|
||||
// total_vertex_count_ = stats_->get_total_vertex_count();
|
||||
// total_triangle_count_ = stats_->get_total_triangle_count();
|
||||
|
||||
visible_triangle_count_ = stats_->get_visible_triangle_count();
|
||||
current_frame_time_ = stats_->get_frame_time();
|
||||
|
||||
@@ -1039,9 +1053,9 @@ void imguiManager::WidgetRenderStats()
|
||||
ImGui::Separator();
|
||||
|
||||
ImGui::Text("Statistiques de rendu:");
|
||||
ImGui::Text("Vertices total: %d", total_vertex_count_);
|
||||
ImGui::Text("Vertices total: %d", *total_vertex_count_);
|
||||
|
||||
ImGui::Text("Triangles total: %d", total_triangle_count_);
|
||||
ImGui::Text("Triangles total: %d", *total_triangle_count_);
|
||||
ImGui::SameLine();
|
||||
ImGui::Text("Triangles visibles: %d", visible_triangle_count_);
|
||||
|
||||
|
@@ -3,6 +3,8 @@
|
||||
|
||||
stats::stats() : fps_(nullptr), drawcalls_(0)
|
||||
{
|
||||
total_triangle_count_ = std::make_shared<int>(0);
|
||||
total_vertex_count_ = std::make_shared<int>(0);
|
||||
}
|
||||
|
||||
stats::~stats()
|
||||
@@ -35,13 +37,20 @@ bool stats::initialize(application_class* app)
|
||||
void stats::update_geometric_stats()
|
||||
{
|
||||
|
||||
object_vec_ = app_->get_kobjects();
|
||||
cubes_vec_ = app_->get_cubes();
|
||||
terrain_chunk_vec_ = app_->get_terrain_cubes();
|
||||
object_vec_ = app_->get_kobjects();
|
||||
cubes_vec_ = app_->get_cubes();
|
||||
terrain_chunk_vec_ = app_->get_terrain_cubes();
|
||||
|
||||
|
||||
*total_vertex_count_ = get_total_vertex_count();
|
||||
*total_triangle_count_ = get_total_triangle_count();
|
||||
|
||||
update_visible_count();
|
||||
}
|
||||
|
||||
total_vertex_count_ = get_total_vertex_count();
|
||||
total_triangle_count_ = get_total_triangle_count();
|
||||
visible_triangle_count_ = get_visible_triangle_count();
|
||||
void stats::update_visible_count()
|
||||
{
|
||||
visible_triangle_count_ = get_visible_triangle_count();
|
||||
}
|
||||
|
||||
void stats::update_display_stats()
|
||||
|
Reference in New Issue
Block a user