36 lines
1.1 KiB
C++
36 lines
1.1 KiB
C++
#pragma once
|
|
#include "Graphics/Graphics.h"
|
|
#include "Graphics/RenderPass/RenderPass.h"
|
|
#include "Graphics/Resources.h"
|
|
#include <cstdint>
|
|
|
|
class SurfaceExtractPass : public Seele::RenderPass {
|
|
public:
|
|
SurfaceExtractPass(Seele::Gfx::PGraphics graphics);
|
|
virtual ~SurfaceExtractPass() override;
|
|
virtual void
|
|
beginFrame(const Seele::Component::Camera &camera,
|
|
const Seele::Component::Transform &transform) override;
|
|
virtual void render() override;
|
|
virtual void endFrame() override;
|
|
virtual void publishOutputs() override;
|
|
virtual void createRenderPass() override;
|
|
|
|
private:
|
|
void computeEdgeTable();
|
|
void computeTriTable();
|
|
Seele::Gfx::OPipelineLayout pipelineLayout;
|
|
Seele::Gfx::ODescriptorLayout descriptorLayout;
|
|
Seele::Gfx::ODescriptorSet descriptorSet;
|
|
Seele::Gfx::OComputeShader computeShader;
|
|
Seele::Gfx::PComputePipeline pipeline;
|
|
|
|
Seele::Gfx::OShaderBuffer vertexBuffer;
|
|
Seele::Gfx::OShaderBuffer indexBuffer;
|
|
Seele::Gfx::OShaderBuffer surfaceCounts;
|
|
Seele::Gfx::PShaderBuffer densityBuffer;
|
|
|
|
static uint32_t edgeTable[256];
|
|
static uint32_t triTable[256][16];
|
|
};
|
|
DEFINE_REF(SurfaceExtractPass) |