comparison tests/test_text.nim @ 1381:c8d1b87cf6c8

did: make progress on new glyph-rendering system
author sam <sam@basx.dev>
date Thu, 12 Dec 2024 23:54:49 +0700
parents 4aa9e703af48
children ec9f19151d44
comparison
equal deleted inserted replaced
1380:4aa9e703af48 1381:c8d1b87cf6c8
2 import std/algorithm 2 import std/algorithm
3 import std/strutils 3 import std/strutils
4 import std/sequtils 4 import std/sequtils
5 import std/monotimes 5 import std/monotimes
6 import std/times 6 import std/times
7 import std/tables
7 import std/options 8 import std/options
8 import std/random 9 import std/random
10 import std/unicode
9 11
10 import ../semicongine 12 import ../semicongine
11 13
12 type FontDS = object 14 type FontDS = object
13 fontAtlas: Image[Gray] 15 fontAtlas: Image[Gray]
14 16
15 type EMPTY = object 17 type EMPTY = object
16 18
19 const N_GLYPHS = 200
17 proc test_01_static_label_new(time: float32) = 20 proc test_01_static_label_new(time: float32) =
18 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160) 21 var font = loadFont("Overhaul.ttf", lineHeightPixels = 160)
19 var renderdata = initRenderData() 22 var renderdata = initRenderData()
20 var pipeline = 23 var pipeline =
21 createPipeline[GlyphShader[200]](renderPass = vulkan.swapchain.renderPass) 24 createPipeline[GlyphShader[N_GLYPHS]](renderPass = vulkan.swapchain.renderPass)
25 var (ds, glyphtable) = glyphDescriptorSet(font, N_GLYPHS)
22 var glyphs = Glyphs( 26 var glyphs = Glyphs(
23 position: asGPUArray([vec3()], VertexBufferMapped), 27 position: asGPUArray([vec3(), vec3()], VertexBufferMapped),
24 scale: asGPUArray([1'f32], VertexBufferMapped), 28 scale: asGPUArray([1'f32, 1'f32], VertexBufferMapped),
25 color: asGPUArray([vec4(1, 1, 1, 1)], VertexBufferMapped), 29 color: asGPUArray([vec4(1, 1, 1, 1), vec4(1, 1, 1, 1)], VertexBufferMapped),
26 glyphIndex: asGPUArray([0'u16], VertexBufferMapped), 30 glyphIndex:
31 asGPUArray([glyphtable[Rune('Q')], glyphtable[Rune('H')]], VertexBufferMapped),
27 ) 32 )
28 33
29 var ds =
30 asDescriptorSetData(GlyphDescriptorSet[200](fontAtlas: font.fontAtlas.copy()))
31 assignBuffers(renderdata, glyphs) 34 assignBuffers(renderdata, glyphs)
32 assignBuffers(renderdata, ds) 35 assignBuffers(renderdata, ds)
33 uploadImages(renderdata, ds) 36 uploadImages(renderdata, ds)
34 initDescriptorSet(renderdata, pipeline.layout(0), ds) 37 initDescriptorSet(renderdata, pipeline.layout(0), ds)
35 38
280 checkVkResult vkDeviceWaitIdle(vulkan.device) 283 checkVkResult vkDeviceWaitIdle(vulkan.device)
281 destroyPipeline(pipeline) 284 destroyPipeline(pipeline)
282 destroyRenderData(renderdata) 285 destroyRenderData(renderdata)
283 286
284 when isMainModule: 287 when isMainModule:
285 var time = 1'f32 288 var time = 1000'f32
286 initVulkan() 289 initVulkan()
287 290
288 for depthBuffer in [true, false]: 291 for depthBuffer in [true, false]:
289 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer) 292 var renderpass = createDirectPresentationRenderPass(depthBuffer = depthBuffer)
290 setupSwapchain(renderpass = renderpass) 293 setupSwapchain(renderpass = renderpass)