Skip to content

Instantly share code, notes, and snippets.

@yui0
Created December 4, 2017 11:31
Show Gist options
  • Save yui0/a9a75c93b9e7c6a08f905ed548b4b17c to your computer and use it in GitHub Desktop.
Save yui0/a9a75c93b9e7c6a08f905ed548b4b17c to your computer and use it in GitHub Desktop.
#define INPUTPLANE 1
precision highp float;
uniform sampler2D tex;
uniform mat3 weight[128];
uniform vec2 pixSize;
uniform float bias;
varying vec2 uv;
void main() {
vec4 inputOffset[1];
inputOffset[0] = vec4(0,0,0.062499,0.124999);
float sum = 0.0;
for (int i = 0; i < INPUTPLANE; ++i) {
vec2 tuv = uv + inputOffset[i].xy;
mat3 pix = mat3(
vec3(texture2D(tex, tuv + vec2(-pixSize.x, -pixSize.y)).x,
texture2D(tex, tuv + vec2( 0, -pixSize.y)).x,
texture2D(tex, tuv + vec2( pixSize.x, -pixSize.y)).x),
vec3(texture2D(tex, tuv + vec2(-pixSize.x, 0)).x,
texture2D(tex, tuv + vec2( 0, 0)).x,
texture2D(tex, tuv + vec2( pixSize.x, 0)).x),
vec3(texture2D(tex, tuv + vec2(-pixSize.x, pixSize.y)).x,
texture2D(tex, tuv + vec2( 0, pixSize.y)).x,
texture2D(tex, tuv + vec2( pixSize.x, pixSize.y)).x)
);
sum += dot(weight[i][0].xyz, pix[0].xyz);
sum += dot(weight[i][1].xyz, pix[1].xyz);
sum += dot(weight[i][2].xyz, pix[2].xyz);
}
sum += bias;
sum = max(sum, 0.0) + min(sum, 0.0) * 0.1;
gl_FragColor = vec4(sum,sum,sum,1.0);
}
#define INPUTPLANE 32
precision highp float;
uniform sampler2D tex;
uniform mat3 weight[128];
uniform vec2 pixSize;
uniform float bias;
varying vec2 uv;
void main() {
vec4 inputOffset[32];
inputOffset[0] = vec4(0,0,0.062499,0.124999);
inputOffset[1] = vec4(0.0625,0,0.124999,0.124999);
inputOffset[2] = vec4(0.125,0,0.187499,0.124999);
inputOffset[3] = vec4(0.1875,0,0.249999,0.124999);
inputOffset[4] = vec4(0.25,0,0.312499,0.124999);
inputOffset[5] = vec4(0.3125,0,0.374999,0.124999);
inputOffset[6] = vec4(0.375,0,0.437499,0.124999);
inputOffset[7] = vec4(0.4375,0,0.499999,0.124999);
inputOffset[8] = vec4(0.5,0,0.562499,0.124999);
inputOffset[9] = vec4(0.5625,0,0.624999,0.124999);
inputOffset[10] = vec4(0.625,0,0.687499,0.124999);
inputOffset[11] = vec4(0.6875,0,0.749999,0.124999);
inputOffset[12] = vec4(0.75,0,0.812499,0.124999);
inputOffset[13] = vec4(0.8125,0,0.874999,0.124999);
inputOffset[14] = vec4(0.875,0,0.937499,0.124999);
inputOffset[15] = vec4(0.9375,0,0.999999,0.124999);
inputOffset[16] = vec4(0,0.125,0.062499,0.249999);
inputOffset[17] = vec4(0.0625,0.125,0.124999,0.249999);
inputOffset[18] = vec4(0.125,0.125,0.187499,0.249999);
inputOffset[19] = vec4(0.1875,0.125,0.249999,0.249999);
inputOffset[20] = vec4(0.25,0.125,0.312499,0.249999);
inputOffset[21] = vec4(0.3125,0.125,0.374999,0.249999);
inputOffset[22] = vec4(0.375,0.125,0.437499,0.249999);
inputOffset[23] = vec4(0.4375,0.125,0.499999,0.249999);
inputOffset[24] = vec4(0.5,0.125,0.562499,0.249999);
inputOffset[25] = vec4(0.5625,0.125,0.624999,0.249999);
inputOffset[26] = vec4(0.625,0.125,0.687499,0.249999);
inputOffset[27] = vec4(0.6875,0.125,0.749999,0.249999);
inputOffset[28] = vec4(0.75,0.125,0.812499,0.249999);
inputOffset[29] = vec4(0.8125,0.125,0.874999,0.249999);
inputOffset[30] = vec4(0.875,0.125,0.937499,0.249999);
inputOffset[31] = vec4(0.9375,0.125,0.999999,0.249999);
float sum = 0.0;
for (int i = 0; i < INPUTPLANE; ++i) {
vec2 tuv = uv + inputOffset[i].xy;
mat3 pix = mat3(
vec3(texture2D(tex, tuv + vec2(-pixSize.x, -pixSize.y)).x,
texture2D(tex, tuv + vec2( 0, -pixSize.y)).x,
texture2D(tex, tuv + vec2( pixSize.x, -pixSize.y)).x),
vec3(texture2D(tex, tuv + vec2(-pixSize.x, 0)).x,
texture2D(tex, tuv + vec2( 0, 0)).x,
texture2D(tex, tuv + vec2( pixSize.x, 0)).x),
vec3(texture2D(tex, tuv + vec2(-pixSize.x, pixSize.y)).x,
texture2D(tex, tuv + vec2( 0, pixSize.y)).x,
texture2D(tex, tuv + vec2( pixSize.x, pixSize.y)).x)
);
sum += dot(weight[i][0].xyz, pix[0].xyz);
sum += dot(weight[i][1].xyz, pix[1].xyz);
sum += dot(weight[i][2].xyz, pix[2].xyz);
}
sum += bias;
sum = max(sum, 0.0) + min(sum, 0.0) * 0.1;
gl_FragColor = vec4(sum,sum,sum,1.0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment