add particles stats to debug panel
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
#include "graphics/ui/elements/TrackBar.hpp"
|
#include "graphics/ui/elements/TrackBar.hpp"
|
||||||
#include "graphics/ui/elements/InputBindBox.hpp"
|
#include "graphics/ui/elements/InputBindBox.hpp"
|
||||||
#include "graphics/render/WorldRenderer.hpp"
|
#include "graphics/render/WorldRenderer.hpp"
|
||||||
|
#include "graphics/render/ParticlesRenderer.hpp"
|
||||||
#include "logic/scripting/scripting.hpp"
|
#include "logic/scripting/scripting.hpp"
|
||||||
#include "objects/Player.hpp"
|
#include "objects/Player.hpp"
|
||||||
#include "objects/Entities.hpp"
|
#include "objects/Entities.hpp"
|
||||||
@@ -83,6 +84,12 @@ std::shared_ptr<UINode> create_debug_panel(
|
|||||||
bool culling = settings.graphics.frustumCulling.get();
|
bool culling = settings.graphics.frustumCulling.get();
|
||||||
return L"frustum-culling: "+std::wstring(culling ? L"on" : L"off");
|
return L"frustum-culling: "+std::wstring(culling ? L"on" : L"off");
|
||||||
}));
|
}));
|
||||||
|
panel->add(create_label([=]() {
|
||||||
|
return L"particles: " +
|
||||||
|
std::to_wstring(ParticlesRenderer::visibleParticles) +
|
||||||
|
L" emitters: " +
|
||||||
|
std::to_wstring(ParticlesRenderer::aliveEmitters);
|
||||||
|
}));
|
||||||
panel->add(create_label([=]() {
|
panel->add(create_label([=]() {
|
||||||
return L"chunks: "+std::to_wstring(level->chunks->getChunksCount())+
|
return L"chunks: "+std::to_wstring(level->chunks->getChunksCount())+
|
||||||
L" visible: "+std::to_wstring(level->chunks->visible);
|
L" visible: "+std::to_wstring(level->chunks->visible);
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
#include "ParticlesRenderer.hpp"
|
#include "ParticlesRenderer.hpp"
|
||||||
|
|
||||||
#include "assets/Assets.hpp"
|
#include "assets/Assets.hpp"
|
||||||
|
#include "assets/assets_util.hpp"
|
||||||
#include "graphics/core/Shader.hpp"
|
#include "graphics/core/Shader.hpp"
|
||||||
#include "graphics/core/Texture.hpp"
|
#include "graphics/core/Texture.hpp"
|
||||||
#include "graphics/render/MainBatch.hpp"
|
#include "graphics/render/MainBatch.hpp"
|
||||||
#include "window/Camera.hpp"
|
#include "window/Camera.hpp"
|
||||||
|
|
||||||
|
size_t ParticlesRenderer::visibleParticles = 0;
|
||||||
|
size_t ParticlesRenderer::aliveEmitters = 0;
|
||||||
|
|
||||||
ParticlesRenderer::ParticlesRenderer(const Assets& assets)
|
ParticlesRenderer::ParticlesRenderer(const Assets& assets)
|
||||||
: batch(std::make_unique<MainBatch>(1024)) {
|
: batch(std::make_unique<MainBatch>(1024)) {
|
||||||
|
|
||||||
|
auto region = util::get_texture_region(assets, "blocks:grass_side", "");
|
||||||
Emitter emitter(glm::vec3(0, 100, 0), Particle {
|
Emitter emitter(glm::vec3(0, 100, 0), Particle {
|
||||||
glm::vec3(), glm::vec3(), 5.0f, UVRegion(0,0,1,1)
|
glm::vec3(), glm::vec3(), 5.0f, region.region
|
||||||
}, assets.get<Texture>("gui/error"), 0.003f, -1);
|
},region.texture, 0.001f, -1);
|
||||||
emitters.push_back(std::move(emitter));
|
emitters.push_back(std::move(emitter));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,9 +29,14 @@ void ParticlesRenderer::render(
|
|||||||
const auto& up = camera.up;
|
const auto& up = camera.up;
|
||||||
|
|
||||||
batch->begin();
|
batch->begin();
|
||||||
|
|
||||||
|
aliveEmitters = emitters.size();
|
||||||
|
visibleParticles = 0;
|
||||||
for (auto& [texture, vec] : particles) {
|
for (auto& [texture, vec] : particles) {
|
||||||
batch->setTexture(texture);
|
batch->setTexture(texture);
|
||||||
|
|
||||||
|
visibleParticles += vec.size();
|
||||||
|
|
||||||
auto iter = vec.begin();
|
auto iter = vec.begin();
|
||||||
while (iter != vec.end()) {
|
while (iter != vec.end()) {
|
||||||
auto& particle = *iter;
|
auto& particle = *iter;
|
||||||
|
|||||||
@@ -19,4 +19,7 @@ public:
|
|||||||
~ParticlesRenderer();
|
~ParticlesRenderer();
|
||||||
|
|
||||||
void render(const Assets& assets, const Camera& camera, float delta);
|
void render(const Assets& assets, const Camera& camera, float delta);
|
||||||
|
|
||||||
|
static size_t visibleParticles;
|
||||||
|
static size_t aliveEmitters;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ WorldRenderer::WorldRenderer(
|
|||||||
&engine->getSettings()
|
&engine->getSettings()
|
||||||
)),
|
)),
|
||||||
particles(std::make_unique<ParticlesRenderer>(*engine->getAssets())) {
|
particles(std::make_unique<ParticlesRenderer>(*engine->getAssets())) {
|
||||||
|
|
||||||
renderer = std::make_unique<ChunksRenderer>(
|
renderer = std::make_unique<ChunksRenderer>(
|
||||||
level, frontend->getContentGfxCache(), &engine->getSettings()
|
level, frontend->getContentGfxCache(), &engine->getSettings()
|
||||||
);
|
);
|
||||||
@@ -216,7 +216,7 @@ void WorldRenderer::renderLevel(
|
|||||||
delta,
|
delta,
|
||||||
pause
|
pause
|
||||||
);
|
);
|
||||||
particles->render(*assets, camera, delta);
|
particles->render(*assets, camera, delta * !pause);
|
||||||
modelBatch->render();
|
modelBatch->render();
|
||||||
|
|
||||||
auto shader = assets->get<Shader>("main");
|
auto shader = assets->get<Shader>("main");
|
||||||
|
|||||||
Reference in New Issue
Block a user