mirror of https://github.com/mosra/magnum.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
|
13 years ago
|
#ifndef NEW_GLSL
|
||
|
|
#define in varying
|
||
|
|
#define fragmentColor gl_FragColor
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifndef GL_ES
|
||
|
|
#ifdef EXPLICIT_UNIFORM_LOCATION
|
||
|
|
layout(location = 1) uniform lowp vec4 color;
|
||
|
|
layout(location = 2) uniform lowp vec4 outlineColor;
|
||
|
|
layout(location = 3) uniform lowp vec2 outlineRange = vec2(0.5, 0.0);
|
||
|
|
layout(location = 4) uniform lowp float smoothness = 0.04;
|
||
|
|
#else
|
||
|
|
uniform lowp vec4 color;
|
||
|
|
uniform lowp vec4 outlineColor;
|
||
|
|
uniform lowp vec2 outlineRange = vec2(0.5, 0.0);
|
||
|
|
uniform lowp float smoothness = 0.04;
|
||
|
|
#endif
|
||
|
|
#else
|
||
|
|
uniform lowp vec4 color;
|
||
|
|
uniform lowp vec4 outlineColor;
|
||
|
|
uniform lowp vec2 outlineRange;
|
||
|
|
uniform lowp float smoothness;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#ifdef EXPLICIT_TEXTURE_LAYER
|
||
|
|
layout(binding = 16) uniform sampler2D vectorTexture;
|
||
|
|
#else
|
||
|
|
uniform lowp sampler2D vectorTexture;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
in vec2 fragmentTextureCoordinates;
|
||
|
|
|
||
|
|
#ifdef NEW_GLSL
|
||
|
|
out vec4 fragmentColor;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
void main() {
|
||
|
|
lowp float intensity = texture(vectorTexture, fragmentTextureCoordinates).r;
|
||
|
|
|
||
|
|
/* Fill color */
|
||
|
|
fragmentColor = smoothstep(outlineRange.x-smoothness, outlineRange.x+smoothness, intensity)*color;
|
||
|
|
|
||
|
|
/* Outline */
|
||
|
|
if(outlineRange.x < outlineRange.y) {
|
||
|
|
lowp float mid = (outlineRange.x + outlineRange.y)/2.0;
|
||
|
|
lowp float half = (outlineRange.y - outlineRange.x)/2.0;
|
||
|
|
fragmentColor += smoothstep(half+smoothness, half-smoothness, distance(mid, intensity))*outlineColor;
|
||
|
|
}
|
||
|
|
}
|