【发布时间】:2015-04-21 08:38:44
【问题描述】:
我有一个距离场字体,我想用垂直渐变进行渲染。我遇到的问题是我无法解决是否有一种简单的方法可以让我获得相对于我从字体纹理图集渲染的字形的 y 坐标。
我正在使用 LibGDX。我可以使用 v_texCoord.y 来获取相对于纹理的位置。有没有一种简单的方法可以获得相对于我正在为当前角色渲染的纹理区域的 y 位置?一旦我知道了,我就可以使用 mix(...) 在片段着色器中创建渐变。
顶点着色器
attribute vec4 a_position;
attribute vec2 a_texCoord0;
attribute vec4 a_color;
uniform mat4 u_projTrans;
varying vec4 v_color;
varying vec2 v_texCoord;
void main()
{
gl_Position = u_projTrans * a_position;
v_texCoord = a_texCoord0;
v_color = a_color;
}
片段着色器
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_texture;
uniform float u_boldness;
uniform float u_smoothing;
varying vec4 v_color;
varying vec2 v_texCoord;
void main()
{
float distance = texture2D(u_texture, v_texCoord).a;
float alpha = smoothstep(0.5 - u_boldness - u_smoothing, 0.5 - u_boldness + u_smoothing, distance);
gl_FragColor = vec4(v_color.rgb * alpha, alpha * v_color.a);
}
【问题讨论】:
标签: opengl-es libgdx shader fragment-shader vertex-shader