+static struct vg_shader _shader_ui_image =
+{
+ .name = "[vg] ui_image",
+ .link = NULL,
+ .vs =
+ {
+ .orig_file = NULL,
+ .static_src =
+ "layout (location=0) in vec2 a_co;"
+ "layout (location=1) in vec2 a_uv;"
+ "layout (location=2) in vec4 a_colour;"
+ "layout (location=3) in vec4 a_clip;"
+ "uniform mat3 uPv;"
+ ""
+ "out vec2 aTexCoords;"
+ "out vec4 aColour;"
+ "out vec2 aWsp;"
+ "out vec4 aClip;"
+ ""
+ "void main()"
+ "{"
+ "gl_Position = vec4( uPv * vec3( a_co, 1.0 ), 1.0 );"
+ "aTexCoords = a_uv * 0.0078125;"
+ "aColour = a_colour;"
+
+ "aWsp = a_co;"
+ "aClip = a_clip;"
+ "}",
+ },
+ .fs =
+ {
+ .orig_file = NULL,
+ .static_src =
+ "uniform sampler2D uTexImage;"
+ "out vec4 FragColor;"
+ ""
+ "in vec2 aTexCoords;"
+ "in vec4 aColour;"
+ ""
+ "in vec2 aWsp;"
+ "in vec4 aClip;"
+
+ "void main()"
+ "{"
+ "float clip_blend = step( aWsp.x, aClip.z ) *"
+ "step( aWsp.y, aClip.w ) *"
+ "step( aClip.x, aWsp.x ) *"
+ "step( aClip.y, aWsp.y ); "
+
+ "vec4 colour = texture( uTexImage, aTexCoords );"
+ "float value = dot(vec4(1.0),colour)*0.25;"
+
+ "vec3 col = vec3(pow(cos(value*3.14159265*2.0)*0.5+0.5,0.5))"
+ "* vec3(step(value,0.5),0.3,step(1.0-value,0.5));"
+
+ "FragColor = vec4( col*4.0, clip_blend );"
+ "}"
+ }
+};
+