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