Mercurial > games > semicongine
comparison tests/test_rendering.nim @ 1499:1f58458b7ef7 default tip main
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() |
