52 lines
1.2 KiB
GLSL
52 lines
1.2 KiB
GLSL
#ifdef GL_ES
|
|
precision mediump float;
|
|
precision mediump int;
|
|
#endif
|
|
struct displayProperty {
|
|
vec2 size;
|
|
vec2 origin;
|
|
vec2 insidePos;
|
|
vec2 insideSize;
|
|
};
|
|
|
|
|
|
uniform displayProperty EW_widgetProperty;
|
|
|
|
|
|
// transmit from the vertex shader
|
|
varying vec2 v_position; // interpolated position ...
|
|
|
|
// internal static define
|
|
vec4 S_colorBg = vec4(0.0);
|
|
vec4 S_colorFg = vec4(1.0,1.0,1.0,0.8);
|
|
vec4 S_colorBorder = vec4(0.0,0.0,0.0,1.0);
|
|
float S_sizePadding = 1.0;
|
|
float S_sizeBorder = 3.0;
|
|
|
|
void main(void) {
|
|
// prevent origin moving ...
|
|
vec2 position = v_position - EW_widgetProperty.origin;
|
|
float specialBorder = S_sizeBorder+S_sizePadding;
|
|
vec2 endStart = EW_widgetProperty.size - vec2(S_sizePadding) - vec2(S_sizeBorder);
|
|
vec2 endStop = EW_widgetProperty.size - vec2(S_sizePadding);
|
|
if( position.x> S_sizePadding
|
|
&& position.y> S_sizePadding
|
|
&& position.x<= endStop.x
|
|
&& position.y<= endStop.y
|
|
) {
|
|
if( position.x<= specialBorder
|
|
|| position.y<= specialBorder
|
|
|| position.x> endStart.x
|
|
|| position.y> endStart.y
|
|
) {
|
|
gl_FragColor = S_colorBorder;
|
|
} else {
|
|
// note : int() is needed for the OpenGL ES platform
|
|
gl_FragColor = S_colorFg;
|
|
}
|
|
} else {
|
|
gl_FragColor = S_colorBg;
|
|
}
|
|
}
|
|
|