Mercurial > games > semicongine
annotate tests/test_text.nim @ 1379:9ca552dad5fc
did: continue working on new glyph-renderer
author | sam <sam@basx.dev> |
---|---|
date | Thu, 12 Dec 2024 19:17:43 +0700 |
parents | 92c089136a05 |
children | 4aa9e703af48 |
rev | line source |
---|---|
1236 | 1 import std/os |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
2 import std/algorithm |
1238
03634915bbdb
add: tests for updating texts, does not pass validation atm
sam <sam@basx.dev>
parents:
1237
diff
changeset
|
3 import std/strutils |
1236 | 4 import std/sequtils |
5 import std/monotimes | |
6 import std/times | |
7 import std/options | |
8 import std/random | |
9 | |
1267 | 10 import ../semicongine |
1236 | 11 |
1332 | 12 type FontDS = object |
13 fontAtlas: Image[Gray] | |
1327 | 14 |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
15 type EMPTY = object |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
16 |
1374 | 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) | |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
22 var glyphs = Glyphs( |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
23 position: asGPUArray([vec3()], VertexBufferMapped), |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
24 scale: asGPUArray([1'f32], VertexBufferMapped), |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
25 color: asGPUArray([vec4(1, 1, 1, 1)], VertexBufferMapped), |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
26 glyphIndex: asGPUArray([0'u16], VertexBufferMapped), |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
27 ) |
1374 | 28 |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
29 var ds = |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
30 asDescriptorSetData(GlyphDescriptorSet[200](fontAtlas: font.fontAtlas.copy())) |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
31 assignBuffers(renderdata, glyphs) |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
32 assignBuffers(renderdata, ds) |
1374 | 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): | |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
49 render(commandbuffer, pipeline, EMPTY(), glyphs, fixedVertexCount = 6) |
1374 | 50 |
51 # cleanup | |
52 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
53 destroyPipeline(pipeline) | |
54 destroyRenderData(renderdata) | |
55 | |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
56 proc test_01_static_label(time: float32) = |
1327 | 57 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
58 var renderdata = initRenderData() |
1332 | 59 var pipeline = |
60 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) | |
1236 | 61 |
1335 | 62 var ds = asDescriptorSetData(FontDS(fontAtlas: font.fontAtlas.copy())) |
1327 | 63 uploadImages(renderdata, ds) |
1332 | 64 initDescriptorSet(renderdata, pipeline.layout(0), ds) |
1236 | 65 |
1332 | 66 var label1 = |
67 initTextbox(renderdata, pipeline.layout(0), font, 0.0005, "Hello semicongine!") | |
1236 | 68 |
69 var start = getMonoTime() | |
70 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
71 label1.refresh() |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
72 withNextFrame(framebuffer, commandbuffer): |
1327 | 73 bindDescriptorSet(commandbuffer, ds, 0, pipeline) |
1332 | 74 withRenderPass( |
75 vulkan.swapchain.renderPass, | |
76 framebuffer, | |
77 commandbuffer, | |
78 vulkan.swapchain.width, | |
79 vulkan.swapchain.height, | |
80 vec4(0, 0, 0, 0), | |
81 ): | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
82 withPipeline(commandbuffer, pipeline): |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
83 render(commandbuffer, pipeline, label1, vec3(), vec4(1, 1, 1, 1)) |
1236 | 84 # cleanup |
85 checkVkResult vkDeviceWaitIdle(vulkan.device) | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
86 destroyPipeline(pipeline) |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
87 destroyRenderData(renderdata) |
1236 | 88 |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
89 proc test_02_multiple_animated(time: float32) = |
1282
3308b88e53a6
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1281
diff
changeset
|
90 var font1 = loadFont("Overhaul.ttf", lineHeightPixels = 40) |
3308b88e53a6
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1281
diff
changeset
|
91 var font2 = loadFont("Overhaul.ttf", lineHeightPixels = 160) |
3308b88e53a6
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1281
diff
changeset
|
92 var font3 = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) |
1327 | 93 var renderdata = initRenderData() |
94 | |
1332 | 95 var pipeline = |
96 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) | |
1327 | 97 |
1335 | 98 var ds1 = asDescriptorSetData(FontDS(fontAtlas: font1.fontAtlas.copy())) |
1327 | 99 uploadImages(renderdata, ds1) |
100 initDescriptorSet(renderdata, pipeline.layout(0), ds1) | |
101 | |
1335 | 102 var ds2 = asDescriptorSetData(FontDS(fontAtlas: font2.fontAtlas.copy())) |
1327 | 103 uploadImages(renderdata, ds2) |
104 initDescriptorSet(renderdata, pipeline.layout(0), ds2) | |
105 | |
1335 | 106 var ds3 = asDescriptorSetData(FontDS(fontAtlas: font3.fontAtlas.copy())) |
1327 | 107 uploadImages(renderdata, ds3) |
108 initDescriptorSet(renderdata, pipeline.layout(0), ds3) | |
109 | |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
110 var labels = [ |
1332 | 111 initTextbox(renderdata, pipeline.layout(0), font1, 0.004, " 0"), |
112 initTextbox(renderdata, pipeline.layout(0), font2, 0.001, " 1"), | |
113 initTextbox(renderdata, pipeline.layout(0), font3, 0.001, " 2"), | |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
114 ] |
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
115 |
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
116 var start = getMonoTime() |
1238
03634915bbdb
add: tests for updating texts, does not pass validation atm
sam <sam@basx.dev>
parents:
1237
diff
changeset
|
117 var p = 0 |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
118 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: |
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
119 let progress = ((getMonoTime() - start).inMilliseconds().int / 1000) / time |
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
120 for i in 0 ..< labels.len: |
1238
03634915bbdb
add: tests for updating texts, does not pass validation atm
sam <sam@basx.dev>
parents:
1237
diff
changeset
|
121 labels[i].text = $(p + i) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
122 labels[i].refresh() |
1238
03634915bbdb
add: tests for updating texts, does not pass validation atm
sam <sam@basx.dev>
parents:
1237
diff
changeset
|
123 inc p |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
124 withNextFrame(framebuffer, commandbuffer): |
1332 | 125 withRenderPass( |
126 vulkan.swapchain.renderPass, | |
127 framebuffer, | |
128 commandbuffer, | |
129 vulkan.swapchain.width, | |
130 vulkan.swapchain.height, | |
131 vec4(0, 0, 0, 0), | |
132 ): | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
133 withPipeline(commandbuffer, pipeline): |
1327 | 134 bindDescriptorSet(commandbuffer, ds1, 0, pipeline) |
135 render( | |
136 commandbuffer, | |
137 pipeline, | |
138 labels[0], | |
1332 | 139 position = vec3(0 / labels.len, 0.1 + progress * 0.5), |
140 color = vec4(1, 1, 1, 1), | |
1327 | 141 ) |
142 bindDescriptorSet(commandbuffer, ds2, 0, pipeline) | |
143 render( | |
144 commandbuffer, | |
145 pipeline, | |
146 labels[1], | |
1332 | 147 position = vec3(1 / labels.len, 0.1 + progress * 0.5), |
148 color = vec4(1, 1, 1, 1), | |
1327 | 149 ) |
150 bindDescriptorSet(commandbuffer, ds3, 0, pipeline) | |
151 render( | |
152 commandbuffer, | |
153 pipeline, | |
154 labels[2], | |
1332 | 155 position = vec3(2 / labels.len, 0.1 + progress * 0.5), |
156 color = vec4(1, 1, 1, 1), | |
1327 | 157 ) |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
158 |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
159 # cleanup |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
160 checkVkResult vkDeviceWaitIdle(vulkan.device) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
161 destroyPipeline(pipeline) |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
162 destroyRenderData(renderdata) |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
163 |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
164 proc test_03_layouting(time: float32) = |
1327 | 165 var font = loadFont("DejaVuSans.ttf", lineHeightPixels = 40) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
166 var renderdata = initRenderData() |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
167 |
1332 | 168 var pipeline = |
169 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) | |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
170 |
1335 | 171 var ds = asDescriptorSetData(FontDS(fontAtlas: font.fontAtlas.copy())) |
1327 | 172 uploadImages(renderdata, ds) |
1332 | 173 initDescriptorSet(renderdata, pipeline.layout(0), ds) |
1327 | 174 |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
175 var labels: seq[Textbox] |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
176 |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
177 for horizontal in HorizontalAlignment: |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
178 labels.add initTextbox( |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
179 renderdata, |
1292
5de466f5f087
add: color utils and textbox refactoring
sam <sam@basx.dev>
parents:
1283
diff
changeset
|
180 pipeline.layout(0), |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
181 font, |
1327 | 182 0.001, |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
183 $horizontal & " aligned", |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
184 horizontalAlignment = horizontal, |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
185 ) |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
186 for vertical in VerticalAlignment: |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
187 labels.add initTextbox( |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
188 renderdata, |
1292
5de466f5f087
add: color utils and textbox refactoring
sam <sam@basx.dev>
parents:
1283
diff
changeset
|
189 pipeline.layout(0), |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
190 font, |
1327 | 191 0.001, |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
192 $vertical & " aligned", |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
193 verticalAlignment = vertical, |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
194 ) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
195 labels.add initTextbox( |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
196 renderdata, |
1292
5de466f5f087
add: color utils and textbox refactoring
sam <sam@basx.dev>
parents:
1283
diff
changeset
|
197 pipeline.layout(0), |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
198 font, |
1327 | 199 0.001, |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
200 """Paragraph |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
201 This is a somewhat longer paragraph with a few newlines and a maximum width of 0.2. |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
202 |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
203 It should display with some space above and have a pleasing appearance overall! :)""", |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
204 maxWidth = 0.6, |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
205 verticalAlignment = Top, |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
206 horizontalAlignment = Left, |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
207 ) |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
208 |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
209 var start = getMonoTime() |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
210 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
211 let progress = ((getMonoTime() - start).inMilliseconds().int / 1000) / time |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
212 withNextFrame(framebuffer, commandbuffer): |
1327 | 213 bindDescriptorSet(commandbuffer, ds, 0, pipeline) |
1332 | 214 withRenderPass( |
215 vulkan.swapchain.renderPass, | |
216 framebuffer, | |
217 commandbuffer, | |
218 vulkan.swapchain.width, | |
219 vulkan.swapchain.height, | |
220 vec4(0, 0, 0, 0), | |
221 ): | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
222 withPipeline(commandbuffer, pipeline): |
1327 | 223 for i in 0 ..< labels.len: |
1332 | 224 render( |
225 commandbuffer, | |
226 pipeline, | |
227 labels[i], | |
228 vec3(0.5 - i.float32 * 0.1, 0.5 - i.float32 * 0.1), | |
229 vec4(1, 1, 1, 1), | |
230 ) | |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
231 |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
232 # cleanup |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
233 checkVkResult vkDeviceWaitIdle(vulkan.device) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
234 destroyPipeline(pipeline) |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
235 destroyRenderData(renderdata) |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
236 |
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
237 proc test_04_lots_of_texts(time: float32) = |
1327 | 238 var font = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
239 var renderdata = initRenderData() |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
240 |
1332 | 241 var pipeline = |
242 createPipeline[DefaultFontShader[FontDS]](renderPass = vulkan.swapchain.renderPass) | |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
243 |
1335 | 244 var ds = asDescriptorSetData(FontDS(fontAtlas: font.fontAtlas.copy())) |
1327 | 245 uploadImages(renderdata, ds) |
1332 | 246 initDescriptorSet(renderdata, pipeline.layout(0), ds) |
1327 | 247 |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
248 var labels: seq[Textbox] |
1327 | 249 var positions = newSeq[Vec3f](100) |
250 var colors = newSeq[Vec4f](100) | |
1329 | 251 var scales = newSeq[Vec2f](100) |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
252 for i in 0 ..< 100: |
1327 | 253 positions[i] = vec3(rand(-0.5 .. 0.5), rand(-0.5 .. 0.5), rand(-0.1 .. 0.1)) |
1332 | 254 colors[i] = |
255 vec4(rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0)) | |
1329 | 256 scales[i] = vec2(rand(0.5'f32 .. 1.5'f32), rand(0.5'f32 .. 1.5'f32)) |
1332 | 257 labels.add initTextbox(renderdata, pipeline.layout(0), font, 0.001, $i) |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
258 |
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
259 var start = getMonoTime() |
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
260 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: |
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
261 for l in labels.mitems: |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
262 l.refresh() |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
263 withNextFrame(framebuffer, commandbuffer): |
1327 | 264 bindDescriptorSet(commandbuffer, ds, 0, pipeline) |
1332 | 265 withRenderPass( |
266 vulkan.swapchain.renderPass, | |
267 framebuffer, | |
268 commandbuffer, | |
269 vulkan.swapchain.width, | |
270 vulkan.swapchain.height, | |
271 vec4(0, 0, 0, 0), | |
272 ): | |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
273 withPipeline(commandbuffer, pipeline): |
1327 | 274 for i in 0 ..< labels.len: |
1332 | 275 render( |
276 commandbuffer, pipeline, labels[i], positions[i], colors[i], scales[i] | |
277 ) | |
1240
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
278 |
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
279 # cleanup |
42eeb59f3a43
add: more tests, line and point rendering
sam <sam@basx.dev>
parents:
1239
diff
changeset
|
280 checkVkResult vkDeviceWaitIdle(vulkan.device) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
281 destroyPipeline(pipeline) |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
282 destroyRenderData(renderdata) |
1237
97813ac43cfb
add: multi-text with all properties animated
sam <sam@basx.dev>
parents:
1236
diff
changeset
|
283 |
1236 | 284 when isMainModule: |
1241
a0ed1a918fda
fix: letters sometimes overlapping other letters quad
sam <sam@basx.dev>
parents:
1240
diff
changeset
|
285 var time = 1'f32 |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
286 initVulkan() |
1236 | 287 |
1241
a0ed1a918fda
fix: letters sometimes overlapping other letters quad
sam <sam@basx.dev>
parents:
1240
diff
changeset
|
288 for depthBuffer in [true, false]: |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
289 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer) |
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
290 setupSwapchain(renderpass = renderpass) |
1236 | 291 |
1241
a0ed1a918fda
fix: letters sometimes overlapping other letters quad
sam <sam@basx.dev>
parents:
1240
diff
changeset
|
292 # tests a simple triangle with minimalistic shader and vertex format |
1374 | 293 test_01_static_label_new(time) |
1379
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
294 # test_01_static_label(time) |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
295 # test_02_multiple_animated(time) |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
296 # test_03_layouting(time) |
9ca552dad5fc
did: continue working on new glyph-renderer
sam <sam@basx.dev>
parents:
1374
diff
changeset
|
297 # test_04_lots_of_texts(time) |
1239
69489a678141
add: better syncing, better swapchain access, correct font offset, two font-rendering tests
sam <sam@basx.dev>
parents:
1238
diff
changeset
|
298 |
1241
a0ed1a918fda
fix: letters sometimes overlapping other letters quad
sam <sam@basx.dev>
parents:
1240
diff
changeset
|
299 checkVkResult vkDeviceWaitIdle(vulkan.device) |
a0ed1a918fda
fix: letters sometimes overlapping other letters quad
sam <sam@basx.dev>
parents:
1240
diff
changeset
|
300 vkDestroyRenderPass(vulkan.device, renderpass.vk, nil) |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
301 clearSwapchain() |
1236 | 302 |
1283
0369fa1ffbd9
did: undo part of stupid API renaming a few weeks back ;(
sam <sam@basx.dev>
parents:
1282
diff
changeset
|
303 destroyVulkan() |