comparison tests/test_rendering.nim @ 1499:1f58458b7ef7 default tip

did: fix a few issues with tests
author sam <sam@basx.dev>
date Tue, 14 Oct 2025 00:27:28 +0700
parents d3d667bbdda4
children
comparison
equal deleted inserted replaced
1498:d3d667bbdda4 1499:1f58458b7ef7
825 # cleanup 825 # cleanup
826 checkVkResult vkDeviceWaitIdle(engine().vulkan.device) 826 checkVkResult vkDeviceWaitIdle(engine().vulkan.device)
827 destroyPipeline(pipeline) 827 destroyPipeline(pipeline)
828 destroyRenderData(renderdata) 828 destroyRenderData(renderdata)
829 829
830 proc test_09_triangle_2pass( 830 proc test_09_triangle_2pass(time: float32, depthBuffer: bool, samples: VkSampleCountFlagBits) =
831 time: float32, depthBuffer: bool, samples: VkSampleCountFlagBits 831 var (offscreenRP, presentRP) = createIndirectPresentationRenderPass(depthBuffer = depthBuffer, samples = samples)
832 ) =
833 var (offscreenRP, presentRP) =
834 createIndirectPresentationRenderPass(depthBuffer = depthBuffer, samples = samples)
835 832
836 setupSwapchain(renderpass = presentRP, vSync = false, tripleBuffering = false) 833 setupSwapchain(renderpass = presentRP, vSync = false, tripleBuffering = false)
837 834
838 var renderdata = initRenderData() 835 var renderdata = initRenderData()
839 836
914 # create depth buffer images (will not use the one in the swapchain 911 # create depth buffer images (will not use the one in the swapchain
915 var 912 var
916 depthImage: VkImage 913 depthImage: VkImage
917 depthImageView: VkImageView 914 depthImageView: VkImageView
918 depthMemory: VkDeviceMemory 915 depthMemory: VkDeviceMemory
916
919 if offscreenRP.depthBuffer: 917 if offscreenRP.depthBuffer:
920 depthImage = svkCreate2DImage( 918 depthImage = svkCreate2DImage(
921 width = frameWidth(), 919 width = frameWidth(),
922 height = frameHeight(), 920 height = frameHeight(),
923 format = DEPTH_FORMAT, 921 format = DEPTH_FORMAT,
936 # create msaa images (will not use the one in the swapchain) 934 # create msaa images (will not use the one in the swapchain)
937 var 935 var
938 msaaImage: VkImage 936 msaaImage: VkImage
939 msaaImageView: VkImageView 937 msaaImageView: VkImageView
940 msaaMemory: VkDeviceMemory 938 msaaMemory: VkDeviceMemory
939
941 if offscreenRP.samples != VK_SAMPLE_COUNT_1_BIT: 940 if offscreenRP.samples != VK_SAMPLE_COUNT_1_BIT:
942 msaaImage = svkCreate2DImage( 941 msaaImage = svkCreate2DImage(
943 width = frameWidth(), 942 width = frameWidth(),
944 height = frameHeight(), 943 height = frameHeight(),
945 format = SURFACE_FORMAT, 944 format = SURFACE_FORMAT,
950 msaaMemory = svkAllocateMemory(requirements.size, bestMemory(mappable = false, filter = requirements.memoryTypes)) 949 msaaMemory = svkAllocateMemory(requirements.size, bestMemory(mappable = false, filter = requirements.memoryTypes))
951 checkVkResult vkBindImageMemory(engine().vulkan.device, msaaImage, msaaMemory, 0) 950 checkVkResult vkBindImageMemory(engine().vulkan.device, msaaImage, msaaMemory, 0)
952 msaaImageView = svkCreate2DImageView(image = msaaImage, format = SURFACE_FORMAT) 951 msaaImageView = svkCreate2DImageView(image = msaaImage, format = SURFACE_FORMAT)
953 952
954 var attachments: seq[VkImageView] 953 var attachments: seq[VkImageView]
955 if offscreenRP.samples == VK_SAMPLE_COUNT_1_BIT: 954 for j in 0 ..< INFLIGHTFRAMES:
956 if offscreenRP.depthBuffer: 955 if offscreenRP.samples == VK_SAMPLE_COUNT_1_BIT:
957 attachments = @[uniforms1.data[currentFiF()].frameTexture.imageview, depthImageView] 956 if offscreenRP.depthBuffer:
957 attachments = @[uniforms1.data[j].frameTexture.imageview, depthImageView]
958 else:
959 attachments = @[uniforms1.data[j].frameTexture.imageview]
958 else: 960 else:
959 attachments = @[uniforms1.data[currentFiF()].frameTexture.imageview] 961 if offscreenRP.depthBuffer:
960 else: 962 attachments = @[msaaImageView, depthImageView, uniforms1.data[j].frameTexture.imageview]
961 if offscreenRP.depthBuffer: 963 else:
962 attachments = @[msaaImageView, depthImageView, uniforms1.data[currentFiF()].frameTexture.imageview] 964 attachments = @[msaaImageView, uniforms1.data[j].frameTexture.imageview]
963 else: 965
964 attachments = @[msaaImageView, uniforms1.data[currentFiF()].frameTexture.imageview]
965 var offscreenFB = svkCreateFramebuffer(offscreenRP.vk, frameWidth(), frameHeight(), attachments) 966 var offscreenFB = svkCreateFramebuffer(offscreenRP.vk, frameWidth(), frameHeight(), attachments)
966 967
967 renderdata.flushAllMemory() 968 renderdata.flushAllMemory()
968 969
969 var start = getMonoTime() 970 var start = getMonoTime()
970 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: 971 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time:
971 withNextFrame(framebuffer, commandbuffer): 972 discard updateInputs()
972 withRenderPass( 973 if keyWasPressed(Space):
973 offscreenRP, 974 withNextFrame(framebuffer, commandbuffer):
974 offscreenFB, 975 withRenderPass(
975 commandbuffer, 976 offscreenRP,
976 frameWidth(), 977 offscreenFB,
977 frameHeight(), 978 commandbuffer,
978 vec4(0, 0, 0, 0), 979 frameWidth(),
979 ): 980 frameHeight(),
980 withPipeline(commandbuffer, drawPipeline): 981 vec4(0.5, 0.5, 0.5, 1),
981 render(commandbuffer = commandbuffer, pipeline = drawPipeline, mesh = mesh) 982 ):
982 983 withPipeline(commandbuffer, drawPipeline):
983 withRenderPass( 984 render(commandbuffer = commandbuffer, pipeline = drawPipeline, mesh = mesh)
984 presentRP, 985
985 framebuffer, 986 withRenderPass(
986 commandbuffer, 987 presentRP,
987 frameWidth(), 988 framebuffer,
988 frameHeight(), 989 commandbuffer,
989 vec4(0, 0, 0, 0), 990 frameWidth(),
990 ): 991 frameHeight(),
991 withPipeline(commandbuffer, presentPipeline): 992 vec4(1, 0, 1, 1),
992 bindDescriptorSet(commandbuffer, uniforms1, 0, presentPipeline) 993 ):
993 render(commandbuffer = commandbuffer, pipeline = presentPipeline, mesh = quad) 994 withPipeline(commandbuffer, presentPipeline):
995 bindDescriptorSet(commandbuffer, uniforms1, 0, presentPipeline)
996 render(commandbuffer = commandbuffer, pipeline = presentPipeline, mesh = quad)
994 997
995 # cleanup 998 # cleanup
996 checkVkResult vkDeviceWaitIdle(engine().vulkan.device) 999 checkVkResult vkDeviceWaitIdle(engine().vulkan.device)
997 destroyPipeline(presentPipeline) 1000 destroyPipeline(presentPipeline)
998 destroyPipeline(drawPipeline) 1001 destroyPipeline(drawPipeline)
1054 destroyRenderPass(renderpass) 1057 destroyRenderPass(renderpass)
1055 clearSwapchain() 1058 clearSwapchain()
1056 ]# 1059 ]#
1057 1060
1058 # test multiple render passes 1061 # test multiple render passes
1059 for i, (depthBuffer, samples) in renderPasses: 1062 test_09_triangle_2pass(1000'f, true, VK_SAMPLE_COUNT_1_BIT)
1060 test_09_triangle_2pass(time, depthBuffer, samples) 1063 # for i, (depthBuffer, samples) in renderPasses:
1064 # test_09_triangle_2pass(time, depthBuffer, samples)
1061 1065
1062 destroyVulkan() 1066 destroyVulkan()