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