47 lines
1,009 B
GLSL
47 lines
1,009 B
GLSL
#ifdef GL_ES
|
|
precision highp float;
|
|
#else
|
|
#define highp
|
|
#define mediump
|
|
#define lowp
|
|
#endif
|
|
|
|
attribute vec4 a_pos;
|
|
|
|
#ifdef SUPPORTED_GL_OES_30
|
|
attribute vec4 a_colorMul;
|
|
attribute vec4 a_colorAdd;
|
|
#endif
|
|
|
|
uniform mat4 u_projectionView;
|
|
|
|
uniform vec3 u_corner0;
|
|
uniform vec3 u_corner1;
|
|
uniform vec3 u_corner2;
|
|
uniform vec3 u_corner3;
|
|
|
|
uniform vec2 u_viewportSize;
|
|
uniform vec2 u_viewportOffset;
|
|
uniform vec2 u_textureSizeInverse;
|
|
|
|
varying highp vec3 v_uvw;
|
|
|
|
#ifdef SUPPORTED_GL_OES_30
|
|
varying mediump vec4 v_colorMul;
|
|
varying mediump vec4 v_colorAdd;
|
|
#endif
|
|
|
|
void main(void)
|
|
{
|
|
vec3 pos = u_corner0 * a_pos.x + u_corner1 * a_pos.y + u_corner2 * a_pos.z + u_corner3 * a_pos.w;
|
|
|
|
gl_Position = u_projectionView * vec4(pos, 1.0);
|
|
|
|
vec2 uv = ((gl_Position.xy / gl_Position.w * vec2(0.5, 0.5) + vec2(0.5, 0.5)) * u_viewportSize - u_viewportOffset) * u_textureSizeInverse;
|
|
v_uvw = vec3(uv * gl_Position.w, gl_Position.w);
|
|
|
|
#ifdef SUPPORTED_GL_OES_30
|
|
v_colorMul = a_colorMul;
|
|
v_colorAdd = a_colorAdd;
|
|
#endif
|
|
}
|