Mercurial > games > semicongine
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() |