comparison tests/test_text.nim @ 1380:4aa9e703af48

did: merge shit?
author sam <sam@basx.dev>
date Thu, 12 Dec 2024 21:35:34 +0700
parents 31f57a969ffd 9ca552dad5fc
children c8d1b87cf6c8
comparison
equal deleted inserted replaced
1378:31f57a969ffd 1380:4aa9e703af48
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 type EMPTY = object
16
17 proc test_01_static_label_new(time: float32) =
18 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160)
19 var renderdata = initRenderData()
20 var pipeline =
21 createPipeline[GlyphShader[200]](renderPass = vulkan.swapchain.renderPass)
22 var glyphs = Glyphs(
23 position: asGPUArray([vec3()], VertexBufferMapped),
24 scale: asGPUArray([1'f32], VertexBufferMapped),
25 color: asGPUArray([vec4(1, 1, 1, 1)], VertexBufferMapped),
26 glyphIndex: asGPUArray([0'u16], VertexBufferMapped),
27 )
28
29 var ds =
30 asDescriptorSetData(GlyphDescriptorSet[200](fontAtlas: font.fontAtlas.copy()))
31 assignBuffers(renderdata, glyphs)
32 assignBuffers(renderdata, ds)
33 uploadImages(renderdata, ds)
34 initDescriptorSet(renderdata, pipeline.layout(0), ds)
35
36 var start = getMonoTime()
37 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time:
38 withNextFrame(framebuffer, commandbuffer):
39 bindDescriptorSet(commandbuffer, ds, 0, pipeline)
40 withRenderPass(
41 vulkan.swapchain.renderPass,
42 framebuffer,
43 commandbuffer,
44 vulkan.swapchain.width,
45 vulkan.swapchain.height,
46 vec4(0, 0, 0, 0),
47 ):
48 withPipeline(commandbuffer, pipeline):
49 render(commandbuffer, pipeline, EMPTY(), glyphs, fixedVertexCount = 6)
50
51 # cleanup
52 checkVkResult vkDeviceWaitIdle(vulkan.device)
53 destroyPipeline(pipeline)
54 destroyRenderData(renderdata)
55
15 proc test_01_static_label(time: float32) = 56 proc test_01_static_label(time: float32) =
16 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) 57 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160)
17 var renderdata = initRenderData() 58 var renderdata = initRenderData()
18 var pipeline = 59 var pipeline =
19 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) 60 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass)
38 vulkan.swapchain.height, 79 vulkan.swapchain.height,
39 vec4(0, 0, 0, 0), 80 vec4(0, 0, 0, 0),
40 ): 81 ):
41 withPipeline(commandbuffer, pipeline): 82 withPipeline(commandbuffer, pipeline):
42 render(commandbuffer, pipeline, label1, vec3(), vec4(1, 1, 1, 1)) 83 render(commandbuffer, pipeline, label1, vec3(), vec4(1, 1, 1, 1))
43
44 # cleanup 84 # cleanup
45 checkVkResult vkDeviceWaitIdle(vulkan.device) 85 checkVkResult vkDeviceWaitIdle(vulkan.device)
46 destroyPipeline(pipeline) 86 destroyPipeline(pipeline)
47 destroyRenderData(renderdata) 87 destroyRenderData(renderdata)
48
49 #[
50 proc test_01_static_label_new(time: float32) =
51 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160)
52 var renderdata = initRenderData()
53 var pipeline =
54 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass)
55
56 var ds = asDescriptorSetData(FontDS(fontAtlas: font.fontAtlas.copy()))
57 uploadImages(renderdata, ds)
58 initDescriptorSet(renderdata, pipeline.layout(0), ds)
59
60 var label1 =
61 initTextbox(renderdata, pipeline.layout(0), font, 0.0005, "Hello semicongine!")
62
63 var start = getMonoTime()
64 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time:
65 label1.refresh()
66 withNextFrame(framebuffer, commandbuffer):
67 bindDescriptorSet(commandbuffer, ds, 0, pipeline)
68 withRenderPass(
69 vulkan.swapchain.renderPass,
70 framebuffer,
71 commandbuffer,
72 vulkan.swapchain.width,
73 vulkan.swapchain.height,
74 vec4(0, 0, 0, 0),
75 ):
76 withPipeline(commandbuffer, pipeline):
77 proc render(
78 commandBuffer = commandbuffer,
79 pipeline = pipeline,
80 mesh: TMesh,
81 instances: TInstance,
82 fixedVertexCount = -1,
83 fixedInstanceCount = -1,
84 )
85
86 # cleanup
87 checkVkResult vkDeviceWaitIdle(vulkan.device)
88 destroyPipeline(pipeline)
89 destroyRenderData(renderdata)
90 ]#
91 88
92 proc test_02_multiple_animated(time: float32) = 89 proc test_02_multiple_animated(time: float32) =
93 var font1 = loadFont("Overhaul.ttf", lineHeightPixels = 40) 90 var font1 = loadFont("Overhaul.ttf", lineHeightPixels = 40)
94 var font2 = loadFont("Overhaul.ttf", lineHeightPixels = 160) 91 var font2 = loadFont("Overhaul.ttf", lineHeightPixels = 160)
95 var font3 = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) 92 var font3 = loadFont("DejaVuSans.ttf", lineHeightPixels = 160)
291 for depthBuffer in [true, false]: 288 for depthBuffer in [true, false]:
292 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer) 289 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer)
293 setupSwapchain(renderpass = renderpass) 290 setupSwapchain(renderpass = renderpass)
294 291
295 # tests a simple triangle with minimalistic shader and vertex format 292 # tests a simple triangle with minimalistic shader and vertex format
296 # test_01_static_label_new(time) 293 test_01_static_label_new(time)
297 test_01_static_label(time) 294 # test_01_static_label(time)
298 test_02_multiple_animated(time) 295 # test_02_multiple_animated(time)
299 test_03_layouting(time) 296 # test_03_layouting(time)
300 test_04_lots_of_texts(time) 297 # test_04_lots_of_texts(time)
301 298
302 checkVkResult vkDeviceWaitIdle(vulkan.device) 299 checkVkResult vkDeviceWaitIdle(vulkan.device)
303 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil) 300 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil)
304 clearSwapchain() 301 clearSwapchain()
305 302