Skip to content

Commit 0bd2928

Browse files
committed
Implement uniform updates on executeDrawMultiple
1 parent e5dad79 commit 0bd2928

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

src/main/java/net/vulkanmod/render/engine/VkCommandEncoder.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ public void presentTexture(GpuTextureView gpuTexture) {
654654
protected <T> void executeDrawMultiple(
655655
VkRenderPass renderPass,
656656
Collection<RenderPass.Draw<T>> collection,
657-
@Nullable GpuBuffer gpuBuffer,
657+
@Nullable GpuBuffer indexBuffer,
658658
@Nullable VertexFormat.IndexType indexType,
659659
Collection<String> collection2,
660660
T object
@@ -668,7 +668,7 @@ protected <T> void executeDrawMultiple(
668668

669669
for (RenderPass.Draw draw : collection) {
670670
VertexFormat.IndexType indexType2 = draw.indexType() == null ? indexType : draw.indexType();
671-
renderPass.setIndexBuffer(draw.indexBuffer() == null ? gpuBuffer : draw.indexBuffer(), indexType2);
671+
renderPass.setIndexBuffer(draw.indexBuffer() == null ? indexBuffer : draw.indexBuffer(), indexType2);
672672
renderPass.setVertexBuffer(draw.slot(), draw.vertexBuffer());
673673

674674
if (GlRenderPass.VALIDATION) {
@@ -693,17 +693,20 @@ protected <T> void executeDrawMultiple(
693693
if (biConsumer != null) {
694694
biConsumer.accept(object, (string, gpuBufferSlice) -> {
695695
EGlProgram glProgram = ExtendedRenderPipeline.of(renderPass.pipeline).getProgram();
696-
if (glProgram.getUniform(string) instanceof Uniform.Ubo ubo) {
696+
if (glProgram.getUniform(string) instanceof Uniform.Ubo ubo1) {
697697

698698
int blockBinding;
699699
try {
700-
blockBinding = ubo.blockBinding();
700+
blockBinding = ubo1.blockBinding();
701701
} catch (Throwable var7) {
702702
throw new MatchException(var7.toString(), var7);
703703
}
704704

705-
// TODO
706-
// GL32.glBindBufferRange(35345, blockBinding, ((GlBuffer)gpuBufferSlice.buffer()).handle, (long)gpuBufferSlice.offset(), (long)gpuBufferSlice.length());
705+
VkGpuBuffer gpuBuffer1 = (VkGpuBuffer) gpuBufferSlice.buffer();
706+
707+
UBO ubo = pipeline.getUBO(blockBinding);
708+
ubo.setUseGlobalBuffer(false);
709+
ubo.getBufferSlice().set(gpuBuffer1.buffer, gpuBufferSlice.offset(), (int) gpuBufferSlice.length());
707710
}
708711
});
709712

@@ -755,7 +758,8 @@ public void drawFromBuffers(VkRenderPass renderPass, int vertexOffset, int first
755758
VkGpuBuffer vertexBuffer = (VkGpuBuffer)renderPass.vertexBuffers[0];
756759
try (MemoryStack stack = stackPush()) {
757760
if (vertexBuffer != null) {
758-
VK11.vkCmdBindVertexBuffers(vkCommandBuffer, 0, stack.longs(vertexBuffer.buffer.getId()), stack.longs(0));
761+
// VK11.vkCmdBindVertexBuffers(vkCommandBuffer, 0, stack.longs(vertexBuffer.buffer.getId()), stack.longs(0));
762+
VK11.vkCmdBindVertexBuffers(vkCommandBuffer, 0, stack.longs(vertexBuffer.buffer.getId()), stack.longs(vertexBuffer.offset));
759763
}
760764

761765
if (renderPass.indexBuffer != null) {
@@ -766,7 +770,8 @@ public void drawFromBuffers(VkRenderPass renderPass, int vertexOffset, int first
766770
case INT -> VK_INDEX_TYPE_UINT32;
767771
};
768772

769-
VK11.vkCmdBindIndexBuffer(vkCommandBuffer, indexBuffer.buffer.getId(), 0, vkIndexType);
773+
// VK11.vkCmdBindIndexBuffer(vkCommandBuffer, indexBuffer.buffer.getId(), 0, vkIndexType);
774+
VK11.vkCmdBindIndexBuffer(vkCommandBuffer, indexBuffer.buffer.getId(), indexBuffer.offset, vkIndexType);
770775
VK11.vkCmdDrawIndexed(vkCommandBuffer, vertexCount, instanceCount, firstIndex, vertexOffset, 0);
771776
}
772777
else {

0 commit comments

Comments
 (0)