From 6d6d9f42beedf451d495f99dc51175923e4bf5ef Mon Sep 17 00:00:00 2001 From: Halbear Date: Wed, 20 May 2026 23:58:47 +0100 Subject: [PATCH] Added to texture class --- .../Rendering/Pipeline/Images/Texture.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/Texture.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/Texture.java index f70b783..3211126 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/Texture.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/Texture.java @@ -7,6 +7,7 @@ import net.halbear.Terrain4J.EngineCore.Vulkan.Util.VulkanBuffer; import net.halbear.Terrain4J.EngineCore.Vulkan.Util.VulkanUtils; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; +import org.lwjgl.vulkan.VkBufferImageCopy; import java.nio.ByteBuffer; @@ -56,11 +57,28 @@ public class Texture { VulkanUtils.ImageBarrier(MemStack, commandBuffer.GetVulkanCommandBuffer(), image.getVulkanImage(), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_ACCESS_2_NONE, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_ASPECT_COLOR_BIT); - //finish this later + RecordCopyBuffer(MemStack, commandBuffer, stgBuffer); + VulkanUtils.ImageBarrier(MemStack, commandBuffer.GetVulkanCommandBuffer(), image.getVulkanImage(), + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,VK_PIPELINE_STAGE_TRANSFER_BIT, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT,VK_IMAGE_ASPECT_COLOR_BIT); } } } + private void RecordCopyBuffer(MemoryStack MemStack, CommandBuffer commandBuffer, VulkanBuffer bufferData){ + VkBufferImageCopy.Buffer Region = VkBufferImageCopy.calloc(1, MemStack) + .bufferOffset(0) + .bufferRowLength(0) + .bufferImageHeight(0) + .imageSubresource(it-> + it.aspectMask(VK_IMAGE_ASPECT_COLOR_BIT) + .mipLevel(0) + .baseArrayLayer(0) + .layerCount(1) + ).imageOffset(it->it.x(0).y(0).z(0)) + .imageExtent(it->it.width(Width).height(Height).depth(1)); + } + public void CleanUp(VulkanContext VkCtx){ CleanUpStgBuffer(VkCtx); imageView.cleanup(VkCtx.GetDevice());