24 static constexpr int atlasNrHorizontalPages = 16;
25 static constexpr int atlasNrVerticalPages = 16;
26 static constexpr int atlasImageWidth = atlasNrHorizontalPages * Page::widthIncludingBorder;
27 static constexpr int atlasImageHeight = atlasNrVerticalPages * Page::heightIncludingBorder;
28 static constexpr int atlasNrPagesPerImage = atlasNrHorizontalPages * atlasNrVerticalPages;
29 static constexpr int atlasMaximumNrImages = 16;
30 static constexpr int stagingImageWidth = 1024;
31 static constexpr int stagingImageHeight = 1024;
35 vk::ShaderModule vertexShaderModule;
36 vk::ShaderModule fragmentShaderModule;
43 vk::Sampler atlasSampler;
44 vk::DescriptorImageInfo atlasSamplerDescriptorImageInfo;
66 ttlet imageIndex = page.nr / atlasNrPagesPerImage;
67 ttlet pageNrInsideImage = page.nr % atlasNrPagesPerImage;
69 ttlet pageY = pageNrInsideImage / atlasNrVerticalPages;
70 ttlet pageX = pageNrInsideImage % atlasNrVerticalPages;
72 ttlet x = pageX * Page::widthIncludingBorder + Page::border;
73 ttlet y = pageY * Page::heightIncludingBorder + Page::border;
75 return ivec{x, y, imageIndex, 1};
91 void drawInCommandBuffer(vk::CommandBuffer &commandBuffer);
95 void prepareAtlasForRendering();
99 return getStagingPixelMap().submap({{0,0}, extent});
102 void updateAtlasWithStagingPixelMap(Image
const &image);
105 void teardownShaders(GUIDevice_vulkan *vulkanDevice);
106 void addAtlasImage();
108 void teardownAtlas(GUIDevice_vulkan *vulkanDevice);