adding surface extraction pass

This commit is contained in:
2026-04-07 22:25:23 +02:00
parent 0996bb3688
commit a8bcaeee23
10 changed files with 471 additions and 123 deletions
+36
View File
@@ -0,0 +1,36 @@
#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)