Mercurial > games > semicongine
comparison tests/test_text.nim @ 1374:92c089136a05
did: start with new glyph-renderer
author | sam <sam@basx.dev> |
---|---|
date | Fri, 06 Dec 2024 22:48:25 +0700 |
parents | f2ff6f624932 |
children | 31f57a969ffd 9ca552dad5fc |
comparison
equal
deleted
inserted
replaced
1373:19469f21f34e | 1374:92c089136a05 |
---|---|
10 import ../semicongine | 10 import ../semicongine |
11 | 11 |
12 type FontDS = object | 12 type FontDS = object |
13 fontAtlas: Image[Gray] | 13 fontAtlas: Image[Gray] |
14 | 14 |
15 proc test_01_static_label_new(time: float32) = | |
16 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) | |
17 var renderdata = initRenderData() | |
18 var pipeline = | |
19 createPipeline[GlyphShader[200]](renderPass = vulkan.swapchain.renderPass) | |
20 | |
21 var ds = asDescriptorSetData(GlyphDescriptors[200](fontAtlas: font.fontAtlas.copy())) | |
22 uploadImages(renderdata, ds) | |
23 initDescriptorSet(renderdata, pipeline.layout(0), ds) | |
24 | |
25 var start = getMonoTime() | |
26 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: | |
27 withNextFrame(framebuffer, commandbuffer): | |
28 bindDescriptorSet(commandbuffer, ds, 0, pipeline) | |
29 withRenderPass( | |
30 vulkan.swapchain.renderPass, | |
31 framebuffer, | |
32 commandbuffer, | |
33 vulkan.swapchain.width, | |
34 vulkan.swapchain.height, | |
35 vec4(0, 0, 0, 0), | |
36 ): | |
37 withPipeline(commandbuffer, pipeline): | |
38 render(commandbuffer, pipeline, label1, vec3(), vec4(1, 1, 1, 1)) | |
39 | |
40 # cleanup | |
41 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
42 destroyPipeline(pipeline) | |
43 destroyRenderData(renderdata) | |
44 | |
15 proc test_01_static_label(time: float32) = | 45 proc test_01_static_label(time: float32) = |
16 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) | 46 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) |
17 var renderdata = initRenderData() | 47 var renderdata = initRenderData() |
18 var pipeline = | 48 var pipeline = |
19 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) | 49 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) |
37 vulkan.swapchain.width, | 67 vulkan.swapchain.width, |
38 vulkan.swapchain.height, | 68 vulkan.swapchain.height, |
39 vec4(0, 0, 0, 0), | 69 vec4(0, 0, 0, 0), |
40 ): | 70 ): |
41 withPipeline(commandbuffer, pipeline): | 71 withPipeline(commandbuffer, pipeline): |
42 render(commandbuffer, pipeline, label1, vec3(), vec4(1, 1, 1, 1)) | 72 proc render( |
73 commandBuffer = commandbuffer, | |
74 pipeline = pipeline, | |
75 mesh: TMesh, | |
76 instances: TInstance, | |
77 fixedVertexCount = -1, | |
78 fixedInstanceCount = -1, | |
79 ) | |
43 | 80 |
44 # cleanup | 81 # cleanup |
45 checkVkResult vkDeviceWaitIdle(vulkan.device) | 82 checkVkResult vkDeviceWaitIdle(vulkan.device) |
46 destroyPipeline(pipeline) | 83 destroyPipeline(pipeline) |
47 destroyRenderData(renderdata) | 84 destroyRenderData(renderdata) |
248 for depthBuffer in [true, false]: | 285 for depthBuffer in [true, false]: |
249 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer) | 286 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer) |
250 setupSwapchain(renderpass = renderpass) | 287 setupSwapchain(renderpass = renderpass) |
251 | 288 |
252 # tests a simple triangle with minimalistic shader and vertex format | 289 # tests a simple triangle with minimalistic shader and vertex format |
290 test_01_static_label_new(time) | |
253 test_01_static_label(time) | 291 test_01_static_label(time) |
254 test_02_multiple_animated(time) | 292 test_02_multiple_animated(time) |
255 test_03_layouting(time) | 293 test_03_layouting(time) |
256 test_04_lots_of_texts(time) | 294 test_04_lots_of_texts(time) |
257 | 295 |