25 static constexpr int atlasNrHorizontalPages = 16;
26 static constexpr int atlasNrVerticalPages = 16;
27 static constexpr int atlasImageWidth = atlasNrHorizontalPages * Page::widthIncludingBorder;
28 static constexpr int atlasImageHeight = atlasNrVerticalPages * Page::heightIncludingBorder;
29 static constexpr int atlasNrPagesPerImage = atlasNrHorizontalPages * atlasNrVerticalPages;
30 static constexpr int atlasMaximumNrImages = 16;
31 static constexpr int stagingImageWidth = 1024;
32 static constexpr int stagingImageHeight = 1024;
36 vk::ShaderModule vertexShaderModule;
37 vk::ShaderModule fragmentShaderModule;
44 vk::Sampler atlasSampler;
45 vk::DescriptorImageInfo atlasSamplerDescriptorImageInfo;
67 ttlet imageIndex = page.nr / atlasNrPagesPerImage;
68 ttlet pageNrInsideImage = page.nr % atlasNrPagesPerImage;
70 ttlet pageY = pageNrInsideImage / atlasNrVerticalPages;
71 ttlet pageX = pageNrInsideImage % atlasNrVerticalPages;
73 ttlet x = pageX * Page::widthIncludingBorder + Page::border;
74 ttlet y = pageY * Page::heightIncludingBorder + Page::border;
76 return point3{narrow_cast<float>(x), narrow_cast<float>(y), narrow_cast<float>(imageIndex)};
94 void drawInCommandBuffer(vk::CommandBuffer &commandBuffer);
98 void prepareAtlasForRendering();
102 return getStagingPixelMap().submap(0, 0, width, height);
105 void updateAtlasWithStagingPixelMap(
Image const &image);
109 void addAtlasImage();