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