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