Skip to content

Commit 827d201

Browse files
committed
fix font rendering pxRange
1 parent c1e0be6 commit 827d201

File tree

4 files changed

+5
-6
lines changed

4 files changed

+5
-6
lines changed

data/cage/shaders/gui/font.glsl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,30 @@ layout(std140, binding = CAGE_SHADER_UNIBLOCK_CUSTOMDATA) uniform Instances
1212
InstanceStruct instances[512];
1313
};
1414

15+
layout(binding = 0) uniform sampler2D uniTexture;
1516
layout(location = 0) uniform mat4 uniMvp;
1617
layout(location = CAGE_SHADER_ATTRIB_IN_POSITION) in vec3 inPosition;
1718
layout(location = CAGE_SHADER_ATTRIB_IN_UV) in vec2 inUv;
1819

1920
out vec2 varUv;
21+
flat out float varPxRange;
2022

2123
void main()
2224
{
2325
InstanceStruct inst = instances[gl_InstanceID];
2426
gl_Position = uniMvp * vec4(inPosition.xy * inst.wrld.zw + inst.wrld.xy, 0, 1);
2527
varUv = inPosition.xy * inst.text.zw + inst.text.xy;
28+
varPxRange = 6 * inst.wrld.w / (inst.text.w * float(textureSize(uniTexture, 0).y));
2629
}
2730

2831
$define shader fragment
2932

3033
layout(binding = 0) uniform sampler2D uniTexture;
3134
layout(location = 4) uniform vec3 uniColor;
32-
layout(location = 15) uniform float uniScreenPxRange;
3335

3436
in vec2 varUv;
3537
out vec4 outColor;
38+
flat in float varPxRange;
3639

3740
float median(vec3 v)
3841
{
@@ -42,7 +45,7 @@ float median(vec3 v)
4245
void main()
4346
{
4447
float sd = median(texture(uniTexture, varUv).rgb);
45-
float screenPxDistance = uniScreenPxRange * (sd - 0.5);
48+
float screenPxDistance = varPxRange * (sd - 0.5);
4649
float opacity = clamp(screenPxDistance + 0.5, 0, 1);
4750
outColor = vec4(uniColor, opacity);
4851
}

sources/libengine/graphics/font.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ extern "C"
1818
#include <cage-engine/assetStructs.h>
1919
#include <cage-engine/font.h>
2020
#include <cage-engine/model.h>
21-
#include <cage-engine/opengl.h>
2221
#include <cage-engine/renderQueue.h>
2322
#include <cage-engine/shaderConventions.h>
2423
#include <cage-engine/texture.h>

sources/libengine/gui/graphics.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ namespace cage
105105
const Real pointsScale = item->hierarchy->impl->pointsScale;
106106
position *= pointsScale;
107107
transform = transpose(Mat4(pointsScale * 2.0 / orr[0], 0, 0, 2.0 * position[0] / orr[0] - 1.0, 0, pointsScale * 2.0 / orr[1], 0, 1.0 - 2.0 * position[1] / orr[1], 0, 0, 1, 0, 0, 0, 0, 1));
108-
data.screenPxRange = data.format.size * pointsScale * 0.13;
109108
}
110109

111110
RenderableText::~RenderableText()
@@ -120,7 +119,6 @@ namespace cage
120119
q->bind(shader);
121120
q->uniform(shader, 0, transform);
122121
q->uniform(shader, 4, data.color);
123-
q->uniform(shader, 15, data.screenPxRange);
124122
data.font->render(q, +impl->assetOnDemand, data.layout);
125123
}
126124

sources/libengine/gui/private.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ namespace cage
158158
Holder<Font> font;
159159
FontLayoutResult layout;
160160
Vec3 color = Vec3::Nan();
161-
Real screenPxRange;
162161
};
163162

164163
struct TextItem : private Immovable, private CommonTextData

0 commit comments

Comments
 (0)