draw commands implemented for rects, time to debug
This commit is contained in:
parent
a76cccc08a
commit
1f32af8307
|
|
@ -182,35 +182,19 @@ pub fn postRender(p: *anyopaque, cmd: *gpu.GPUCommandBuffer) void {
|
||||||
self.quadMesh = rend.getMeshByName(&self.quadMeshName);
|
self.quadMesh = rend.getMeshByName(&self.quadMeshName);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.drawToTarget(self.screenContext, rend.context().state.swapchainTargetTexture.?);
|
self.drawToTarget(cmd, self.screenContext, rend.context().state.swapchainTargetTexture.?);
|
||||||
|
|
||||||
_ = cmd;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn drawToTarget(self: *@This(), ctx: *papyrus.Context, targetTexture: *gpu.GPUTexture) void {
|
pub fn drawToTarget(self: *@This(), cmd: *gpu.GPUCommandBuffer, ctx: *papyrus.Context, targetTexture: *gpu.GPUTexture) void {
|
||||||
ctx.makeDrawList(&self.drawList, &self.stringArena) catch return;
|
ctx.makeDrawList(&self.drawList, &self.stringArena) catch return;
|
||||||
|
|
||||||
var rectIndex: u32 = 0;
|
var rectIndex: u32 = 0;
|
||||||
// var rectIndex: u32 = 0;
|
|
||||||
//
|
|
||||||
// imagePosition: vec2,
|
|
||||||
// imageSize: vec2,
|
|
||||||
// anchorPoint: vec2,
|
|
||||||
// scale: vec2,
|
|
||||||
// alpha: float,
|
|
||||||
// borderWidth: float,
|
|
||||||
// flags: uint,
|
|
||||||
// baseColor: vec4,
|
|
||||||
// rounding: vec4,
|
|
||||||
// edgeColor: vec4,
|
|
||||||
|
|
||||||
// map ssbos
|
// map ssbos
|
||||||
|
|
||||||
const cmd = rend.context().state.cmd.?;
|
|
||||||
|
|
||||||
const renderer = rend.context();
|
const renderer = rend.context();
|
||||||
const copyPass = cmd.beginGPUCopyPass();
|
const copyPass = cmd.beginGPUCopyPass();
|
||||||
|
|
||||||
|
// upload rectangle ssbos
|
||||||
{
|
{
|
||||||
const rectBuffer = self.screenBuffers.rect.mapSlice(rect_frag.Scene, renderer.device);
|
const rectBuffer = self.screenBuffers.rect.mapSlice(rect_frag.Scene, renderer.device);
|
||||||
|
|
||||||
|
|
@ -274,7 +258,24 @@ pub fn drawToTarget(self: *@This(), ctx: *papyrus.Context, targetTexture: *gpu.G
|
||||||
const pass = cmd.beginGPURenderPass(&targetInfo, 1, null);
|
const pass = cmd.beginGPURenderPass(&targetInfo, 1, null);
|
||||||
pass.bindGPUVertexBuffers(1, &.{ .buffer = rend.context().meshPool.vertexBuffer, .offset = 0 }, 1);
|
pass.bindGPUVertexBuffers(1, &.{ .buffer = rend.context().meshPool.vertexBuffer, .offset = 0 }, 1);
|
||||||
pass.bindGPUIndexBuffer(&.{ .buffer = rend.context().meshPool.indexBuffer, .offset = 0 }, .indexelementsize32bit);
|
pass.bindGPUIndexBuffer(&.{ .buffer = rend.context().meshPool.indexBuffer, .offset = 0 }, .indexelementsize32bit);
|
||||||
// upload the ssbo
|
|
||||||
|
if (self.quadMesh) |quadMesh| {
|
||||||
|
for (self.tempDrawCommand.items) |item| {
|
||||||
|
switch (item) {
|
||||||
|
.rect => |rect| {
|
||||||
|
pass.bindGPUGraphicsPipeline(self.rectPipeline);
|
||||||
|
pass.bindGPUVertexStorageBuffers(0, &self.screenBuffers.rect.buffer, 1);
|
||||||
|
pass.bindGPUFragmentStorageBuffers(0, &self.screenBuffers.rect.buffer, 1);
|
||||||
|
|
||||||
|
// bind samplers if needed
|
||||||
|
pass.drawGPUIndexedPrimitives(quadMesh.index.size, 1, quadMesh.index.start, @intCast(quadMesh.vertex.start), rect.ssboIndex);
|
||||||
|
},
|
||||||
|
.text => |text| {
|
||||||
|
_ = text;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pass.endGPURenderPass();
|
pass.endGPURenderPass();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue