Mercurial > games > semicongine
comparison tests/test_text.nim @ 1292:5de466f5f087
add: color utils and textbox refactoring
author | sam <sam@basx.dev> |
---|---|
date | Sun, 04 Aug 2024 00:58:00 +0700 |
parents | 0369fa1ffbd9 |
children | 385dbd68a947 |
comparison
equal
deleted
inserted
replaced
1291:a6a80b78e811 | 1292:5de466f5f087 |
---|---|
15 var pipeline = createPipeline[DefaultFontShader](renderPass = vulkan.swapchain.renderPass) | 15 var pipeline = createPipeline[DefaultFontShader](renderPass = vulkan.swapchain.renderPass) |
16 | 16 |
17 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) | 17 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) |
18 var label1 = initTextbox( | 18 var label1 = initTextbox( |
19 renderdata, | 19 renderdata, |
20 pipeline.descriptorSetLayouts[0], | 20 pipeline.layout(0), |
21 font, | 21 font, |
22 "Hello semicongine!", | 22 "Hello semicongine!", |
23 color = vec4(1, 1, 1, 1), | 23 color = vec4(1, 1, 1, 1), |
24 scale = 0.0005, | 24 scale = 0.0005, |
25 ) | 25 ) |
28 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: | 28 while ((getMonoTime() - start).inMilliseconds().int / 1000) < time: |
29 label1.refresh() | 29 label1.refresh() |
30 withNextFrame(framebuffer, commandbuffer): | 30 withNextFrame(framebuffer, commandbuffer): |
31 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): | 31 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): |
32 withPipeline(commandbuffer, pipeline): | 32 withPipeline(commandbuffer, pipeline): |
33 render(label1, commandbuffer, pipeline) | 33 render(commandbuffer, pipeline, label1) |
34 | 34 |
35 # cleanup | 35 # cleanup |
36 checkVkResult vkDeviceWaitIdle(vulkan.device) | 36 checkVkResult vkDeviceWaitIdle(vulkan.device) |
37 destroyPipeline(pipeline) | 37 destroyPipeline(pipeline) |
38 destroyRenderData(renderdata) | 38 destroyRenderData(renderdata) |
46 var font2 = loadFont("Overhaul.ttf", lineHeightPixels = 160) | 46 var font2 = loadFont("Overhaul.ttf", lineHeightPixels = 160) |
47 var font3 = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) | 47 var font3 = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) |
48 var labels = [ | 48 var labels = [ |
49 initTextbox( | 49 initTextbox( |
50 renderdata, | 50 renderdata, |
51 pipeline.descriptorSetLayouts[0], | 51 pipeline.layout(0), |
52 font1, | 52 font1, |
53 " 0", | 53 " 0", |
54 color = vec4(0, 1, 1, 1), | 54 color = vec4(0, 1, 1, 1), |
55 scale = 0.004, | 55 scale = 0.004, |
56 position = vec3(-0.3, 0.5) | 56 position = vec3(-0.3, 0.5) |
57 ), | 57 ), |
58 initTextbox( | 58 initTextbox( |
59 renderdata, | 59 renderdata, |
60 pipeline.descriptorSetLayouts[0], | 60 pipeline.layout(0), |
61 font2, | 61 font2, |
62 " 1", | 62 " 1", |
63 color = vec4(1, 0, 1, 1), | 63 color = vec4(1, 0, 1, 1), |
64 scale = 0.001, | 64 scale = 0.001, |
65 position = vec3(0, 0) | 65 position = vec3(0, 0) |
66 ), | 66 ), |
67 initTextbox( | 67 initTextbox( |
68 renderdata, | 68 renderdata, |
69 pipeline.descriptorSetLayouts[0], | 69 pipeline.layout(0), |
70 font3, | 70 font3, |
71 " 2", | 71 " 2", |
72 color = vec4(1, 1, 0, 1), | 72 color = vec4(1, 1, 0, 1), |
73 scale = 0.001, | 73 scale = 0.001, |
74 position = vec3(0.3, -0.5) | 74 position = vec3(0.3, -0.5) |
90 inc p | 90 inc p |
91 withNextFrame(framebuffer, commandbuffer): | 91 withNextFrame(framebuffer, commandbuffer): |
92 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): | 92 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): |
93 withPipeline(commandbuffer, pipeline): | 93 withPipeline(commandbuffer, pipeline): |
94 for label in labels: | 94 for label in labels: |
95 render(label, commandbuffer, pipeline) | 95 render(commandbuffer, pipeline, label) |
96 | 96 |
97 # cleanup | 97 # cleanup |
98 checkVkResult vkDeviceWaitIdle(vulkan.device) | 98 checkVkResult vkDeviceWaitIdle(vulkan.device) |
99 destroyPipeline(pipeline) | 99 destroyPipeline(pipeline) |
100 destroyRenderData(renderdata) | 100 destroyRenderData(renderdata) |
108 var labels: seq[Textbox] | 108 var labels: seq[Textbox] |
109 | 109 |
110 for horizontal in HorizontalAlignment: | 110 for horizontal in HorizontalAlignment: |
111 labels.add initTextbox( | 111 labels.add initTextbox( |
112 renderdata, | 112 renderdata, |
113 pipeline.descriptorSetLayouts[0], | 113 pipeline.layout(0), |
114 font, | 114 font, |
115 $horizontal & " aligned", | 115 $horizontal & " aligned", |
116 color = vec4(1, 1, 1, 1), | 116 color = vec4(1, 1, 1, 1), |
117 scale = 0.001, | 117 scale = 0.001, |
118 position = vec3(0, 0.9 - (horizontal.float * 0.15)), | 118 position = vec3(0, 0.9 - (horizontal.float * 0.15)), |
119 horizontalAlignment = horizontal, | 119 horizontalAlignment = horizontal, |
120 ) | 120 ) |
121 for vertical in VerticalAlignment: | 121 for vertical in VerticalAlignment: |
122 labels.add initTextbox( | 122 labels.add initTextbox( |
123 renderdata, | 123 renderdata, |
124 pipeline.descriptorSetLayouts[0], | 124 pipeline.layout(0), |
125 font, | 125 font, |
126 $vertical & " aligned", | 126 $vertical & " aligned", |
127 color = vec4(1, 1, 1, 1), | 127 color = vec4(1, 1, 1, 1), |
128 scale = 0.001, | 128 scale = 0.001, |
129 position = vec3(-0.35 + (vertical.float * 0.35), 0.3), | 129 position = vec3(-0.35 + (vertical.float * 0.35), 0.3), |
130 verticalAlignment = vertical, | 130 verticalAlignment = vertical, |
131 ) | 131 ) |
132 labels.add initTextbox( | 132 labels.add initTextbox( |
133 renderdata, | 133 renderdata, |
134 pipeline.descriptorSetLayouts[0], | 134 pipeline.layout(0), |
135 font, | 135 font, |
136 """Paragraph | 136 """Paragraph |
137 This is a somewhat longer paragraph with a few newlines and a maximum width of 0.2. | 137 This is a somewhat longer paragraph with a few newlines and a maximum width of 0.2. |
138 | 138 |
139 It should display with some space above and have a pleasing appearance overall! :)""", | 139 It should display with some space above and have a pleasing appearance overall! :)""", |
151 let progress = ((getMonoTime() - start).inMilliseconds().int / 1000) / time | 151 let progress = ((getMonoTime() - start).inMilliseconds().int / 1000) / time |
152 withNextFrame(framebuffer, commandbuffer): | 152 withNextFrame(framebuffer, commandbuffer): |
153 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): | 153 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): |
154 withPipeline(commandbuffer, pipeline): | 154 withPipeline(commandbuffer, pipeline): |
155 for label in labels: | 155 for label in labels: |
156 render(label, commandbuffer, pipeline) | 156 render(commandbuffer, pipeline, label) |
157 | 157 |
158 # cleanup | 158 # cleanup |
159 checkVkResult vkDeviceWaitIdle(vulkan.device) | 159 checkVkResult vkDeviceWaitIdle(vulkan.device) |
160 destroyPipeline(pipeline) | 160 destroyPipeline(pipeline) |
161 destroyRenderData(renderdata) | 161 destroyRenderData(renderdata) |
168 var font = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) | 168 var font = loadFont("DejaVuSans.ttf", lineHeightPixels = 160) |
169 var labels: seq[Textbox] | 169 var labels: seq[Textbox] |
170 for i in 0 ..< 100: | 170 for i in 0 ..< 100: |
171 labels.add initTextbox( | 171 labels.add initTextbox( |
172 renderdata, | 172 renderdata, |
173 pipeline.descriptorSetLayouts[0], | 173 pipeline.layout(0), |
174 font, | 174 font, |
175 $i, | 175 $i, |
176 color = vec4(rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0)), | 176 color = vec4(rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0), rand(0.5 .. 1.0)), |
177 scale = rand(0.0002 .. 0.002), | 177 scale = rand(0.0002 .. 0.002), |
178 position = vec3(rand(-0.5 .. 0.5), rand(-0.5 .. 0.5), rand(-0.1 .. 0.1)) | 178 position = vec3(rand(-0.5 .. 0.5), rand(-0.5 .. 0.5), rand(-0.1 .. 0.1)) |
185 l.refresh() | 185 l.refresh() |
186 withNextFrame(framebuffer, commandbuffer): | 186 withNextFrame(framebuffer, commandbuffer): |
187 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): | 187 withRenderPass(vulkan.swapchain.renderPass, framebuffer, commandbuffer, vulkan.swapchain.width, vulkan.swapchain.height, vec4(0, 0, 0, 0)): |
188 withPipeline(commandbuffer, pipeline): | 188 withPipeline(commandbuffer, pipeline): |
189 for l in labels: | 189 for l in labels: |
190 render(l, commandbuffer, pipeline) | 190 render(commandbuffer, pipeline, l) |
191 | 191 |
192 # cleanup | 192 # cleanup |
193 checkVkResult vkDeviceWaitIdle(vulkan.device) | 193 checkVkResult vkDeviceWaitIdle(vulkan.device) |
194 destroyPipeline(pipeline) | 194 destroyPipeline(pipeline) |
195 destroyRenderData(renderdata) | 195 destroyRenderData(renderdata) |