Skip to content

Commit 40519ef

Browse files
committed
Work on mip maps
1 parent 6480318 commit 40519ef

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

include/nbl/ext/TextRendering/TextRendering.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ class TextRenderer : public nbl::core::IReferenceCounted
3737
static constexpr asset::E_FORMAT MSDFTextureFormat = asset::E_FORMAT::EF_R8G8B8A8_SNORM;
3838

3939
// Spits out CPUBuffer containing the image data in SNORM format
40-
core::smart_refctd_ptr<ICPUBuffer> generateShapeMSDF(msdfgen::Shape glyph, uint32_t msdfPixelRange, uint32_t2 msdfExtents, float32_t2 scale, float32_t2 translate);
40+
core::smart_refctd_ptr<ICPUImage> generateShapeMSDF(
41+
msdfgen::Shape glyph, uint32_t msdfPixelRange,
42+
uint32_t2 msdfExtents, uint32_t msdfMipLevels,
43+
float32_t2 scale, float32_t2 translate);
4144

4245
TextRenderer()
4346
{
@@ -95,7 +98,7 @@ class FontFace : public nbl::core::IReferenceCounted
9598
// it will place the glyph in the center of msdfExtents considering the margin of msdfPixelRange
9699
// preserves aspect ratio of the glyph corresponding to metrics of the "glyphId"
97100
// use the `getUV` to address the glyph in your texture correctly.
98-
core::smart_refctd_ptr<ICPUBuffer> generateGlyphMSDF(uint32_t msdfPixelRange, uint32_t glyphId, uint32_t2 textureExtents);
101+
core::smart_refctd_ptr<ICPUImage> generateGlyphMSDF(uint32_t msdfPixelRange, uint32_t glyphId, uint32_t2 textureExtents, uint32_t mipLevels);
99102

100103
// transforms uv in glyph space to uv in the actual texture
101104
float32_t2 getUV(float32_t2 uv, float32_t2 glyphSize, uint32_t2 textureExtents, uint32_t msdfPixelRange);

src/nbl/ext/TextRendering/TextRendering.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace ext
1818
namespace TextRendering
1919
{
2020

21-
core::smart_refctd_ptr<ICPUBuffer> TextRenderer::generateShapeMSDF(msdfgen::Shape glyph, uint32_t msdfPixelRange, uint32_t2 msdfExtents, float32_t2 scale, float32_t2 translate)
21+
core::smart_refctd_ptr<ICPUImage> TextRenderer::generateShapeMSDF(msdfgen::Shape glyph, uint32_t msdfPixelRange, uint32_t2 msdfExtents, uint32_t msdfMipLevels, float32_t2 scale, float32_t2 translate)
2222
{
2323
uint32_t glyphW = msdfExtents.x;
2424
uint32_t glyphH = msdfExtents.y;
@@ -66,7 +66,7 @@ FontFace::GlyphMetrics FontFace::getGlyphMetricss(uint32_t glyphId)
6666
};
6767
}
6868

69-
core::smart_refctd_ptr<ICPUBuffer> FontFace::generateGlyphMSDF(uint32_t msdfPixelRange, uint32_t glyphId, uint32_t2 textureExtents)
69+
core::smart_refctd_ptr<ICPUImage> FontFace::generateGlyphMSDF(uint32_t msdfPixelRange, uint32_t glyphId, uint32_t2 textureExtents, uint32_t mipLevels)
7070
{
7171
auto shape = generateGlyphShape(glyphId);
7272

@@ -92,7 +92,7 @@ core::smart_refctd_ptr<ICPUBuffer> FontFace::generateGlyphMSDF(uint32_t msdfPixe
9292
const float32_t2 shapeSpaceCenter = float32_t2(shapeBounds.l + shapeBounds.r, shapeBounds.t + shapeBounds.b) * float32_t2(0.5);
9393
const float32_t2 translate = float32_t2(textureExtents) / (float32_t2(2.0) * uniformScale) - shapeSpaceCenter;
9494

95-
return m_textRenderer->generateShapeMSDF(shape, msdfPixelRange, textureExtents, float32_t2(uniformScale, uniformScale), translate);
95+
return m_textRenderer->generateShapeMSDF(shape, msdfPixelRange, textureExtents, mipLevels, float32_t2(uniformScale, uniformScale), translate);
9696
}
9797

9898
float32_t2 FontFace::getUV(float32_t2 uv, float32_t2 glyphSize, uint32_t2 textureExtents, uint32_t msdfPixelRange)

0 commit comments

Comments
 (0)