2024-09-25 17:27:21 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include "RenderPass.h"
|
2024-10-07 20:14:00 +02:00
|
|
|
#include "Graphics/Buffer.h"
|
|
|
|
|
#include "Graphics/CBT/CBT.h"
|
2024-09-25 17:27:21 +02:00
|
|
|
|
|
|
|
|
namespace Seele {
|
|
|
|
|
class TerrainRenderer {
|
|
|
|
|
public:
|
2024-10-07 20:14:00 +02:00
|
|
|
TerrainRenderer(Gfx::PGraphics graphics, PScene scene, Gfx::PDescriptorLayout viewParamsLayout, Gfx::PDescriptorSet viewParamsSet);
|
2024-09-25 17:27:21 +02:00
|
|
|
~TerrainRenderer();
|
2024-10-07 20:14:00 +02:00
|
|
|
void beginFrame(Gfx::PDescriptorSet viewParamsSet);
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::ORenderCommand render(Gfx::PDescriptorSet viewParamsSet);
|
|
|
|
|
void setViewport(Gfx::PViewport viewport, Gfx::PRenderPass renderPass);
|
|
|
|
|
|
|
|
|
|
private:
|
2024-10-14 18:14:08 +02:00
|
|
|
void applyDeformation(Gfx::PDescriptorSet viewParamsSet);
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::PGraphics graphics;
|
|
|
|
|
PScene scene;
|
2024-10-14 18:14:08 +02:00
|
|
|
Gfx::PDescriptorLayout viewParamsLayout;
|
|
|
|
|
Gfx::PRenderPass renderPass;
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::OTaskShader task;
|
|
|
|
|
Gfx::OMeshShader mesh;
|
2024-10-07 20:14:00 +02:00
|
|
|
Gfx::OVertexInput inp;
|
|
|
|
|
Gfx::OVertexShader vert;
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::OFragmentShader frag;
|
|
|
|
|
Gfx::PGraphicsPipeline pipeline;
|
2024-10-07 20:14:00 +02:00
|
|
|
Gfx::OComputeShader deformCS;
|
|
|
|
|
Gfx::PComputePipeline deform;
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::PViewport viewport;
|
|
|
|
|
Gfx::OShaderBuffer tilesBuffer;
|
2024-09-29 22:28:37 +02:00
|
|
|
Gfx::PTexture2D displacementMap;
|
|
|
|
|
Gfx::PTexture2D colorMap;
|
2024-09-25 17:27:21 +02:00
|
|
|
Gfx::OSampler sampler;
|
2024-10-07 20:14:00 +02:00
|
|
|
|
|
|
|
|
Gfx::OUniformBuffer geometryBuffer;
|
|
|
|
|
Gfx::OUniformBuffer updateBuffer;
|
|
|
|
|
BaseMesh baseMesh;
|
|
|
|
|
CBTMesh plainMesh;
|
|
|
|
|
MeshUpdater meshUpdater;
|
|
|
|
|
LebMatrixCache lebCache;
|
2024-09-25 17:27:21 +02:00
|
|
|
};
|
|
|
|
|
DEFINE_REF(TerrainRenderer);
|
2024-10-07 20:14:00 +02:00
|
|
|
} // namespace Seele
|