add in-world lines renderer
This commit is contained in:
parent
e0123f85ea
commit
70c5c67bd1
14
src/graphics/render/LinesRenderer.cpp
Normal file
14
src/graphics/render/LinesRenderer.cpp
Normal file
@ -0,0 +1,14 @@
|
||||
#include "LinesRenderer.hpp"
|
||||
|
||||
#include "graphics/core/LineBatch.hpp"
|
||||
|
||||
void LinesRenderer::draw(LineBatch& batch) {
|
||||
for (const auto& line : queue) {
|
||||
batch.line(line.a, line.b, line.color);
|
||||
}
|
||||
queue.clear();
|
||||
}
|
||||
|
||||
void LinesRenderer::pushLine(const glm::vec3& a, const glm::vec3& b, const glm::vec4& color) {
|
||||
queue.push_back({a, b, color});
|
||||
}
|
||||
22
src/graphics/render/LinesRenderer.hpp
Normal file
22
src/graphics/render/LinesRenderer.hpp
Normal file
@ -0,0 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <glm/vec3.hpp>
|
||||
#include <glm/vec4.hpp>
|
||||
#include <vector>
|
||||
|
||||
class LineBatch;
|
||||
|
||||
class LinesRenderer {
|
||||
public:
|
||||
struct Line {
|
||||
glm::vec3 a;
|
||||
glm::vec3 b;
|
||||
glm::vec4 color;
|
||||
};
|
||||
|
||||
void draw(LineBatch& batch);
|
||||
|
||||
void pushLine(const glm::vec3& a, const glm::vec3& b, const glm::vec4& color);
|
||||
private:
|
||||
std::vector<Line> queue;
|
||||
};
|
||||
@ -52,6 +52,7 @@
|
||||
#include "TextsRenderer.hpp"
|
||||
#include "ChunksRenderer.hpp"
|
||||
#include "GuidesRenderer.hpp"
|
||||
#include "LinesRenderer.hpp"
|
||||
#include "ModelBatch.hpp"
|
||||
#include "Skybox.hpp"
|
||||
#include "Emitter.hpp"
|
||||
@ -118,6 +119,7 @@ WorldRenderer::WorldRenderer(
|
||||
hands = std::make_unique<HandsRenderer>(
|
||||
*assets, *modelBatch, skeletons->createSkeleton("hand", &skeletonConfig)
|
||||
);
|
||||
lines = std::make_unique<LinesRenderer>();
|
||||
}
|
||||
|
||||
WorldRenderer::~WorldRenderer() = default;
|
||||
@ -481,6 +483,10 @@ void WorldRenderer::draw(
|
||||
// Drawing background sky plane
|
||||
skybox->draw(ctx, camera, assets, worldInfo.daytime, clouds);
|
||||
|
||||
linesShader.use();
|
||||
lines->draw(*lineBatch);
|
||||
lineBatch->flush();
|
||||
|
||||
{
|
||||
auto sctx = ctx.sub();
|
||||
sctx.setCullFace(true);
|
||||
|
||||
@ -23,6 +23,7 @@ class PrecipitationRenderer;
|
||||
class HandsRenderer;
|
||||
class NamedSkeletons;
|
||||
class GuidesRenderer;
|
||||
class LinesRenderer;
|
||||
class TextsRenderer;
|
||||
class Shader;
|
||||
class Frustum;
|
||||
@ -102,6 +103,7 @@ public:
|
||||
std::unique_ptr<BlockWrapsRenderer> blockWraps;
|
||||
std::unique_ptr<PrecipitationRenderer> precipitation;
|
||||
std::unique_ptr<NamedSkeletons> skeletons;
|
||||
std::unique_ptr<LinesRenderer> lines;
|
||||
|
||||
static bool showChunkBorders;
|
||||
static bool showEntitiesDebug;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user