precision highp float; precision highp int; precision lowp sampler2D; precision lowp samplerCube; #ifdef GLES #if __VERSION__ >290 layout(location = 0) uniform vec4 matrix_1; layout(location = 1) uniform vec4 matrix_2; layout(location = 2) uniform vec4 uv_transform; layout(location = 0) in vec2 positions; layout(location = 1) in vec2 tex_coords; out mediump vec2 uv; #else uniform vec4 matrix_1; uniform vec4 matrix_2; uniform vec4 uv_transform; attribute vec2 positions; attribute vec2 tex_coords; varying mediump vec2 uv; #endif #else #if __VERSION__ > 320 uniform vec4 matrix_1; uniform vec4 matrix_2; uniform vec4 uv_transform; layout(location = 0) in vec2 positions; layout(location = 1) in vec2 tex_coords; out vec2 uv; #else uniform vec4 matrix_1; uniform vec4 matrix_2; uniform vec4 uv_transform; attribute vec2 positions; attribute vec2 tex_coords; varying vec2 uv; #endif #endif void main() { vec3 position = mat3(matrix_1.x,matrix_1.y,0,matrix_1.z,matrix_1.w,0,matrix_2.xy,1) * vec3(positions,1.0); uv = tex_coords * uv_transform.zw + uv_transform.xy; gl_Position = vec4(position.xy,0,1.0); }