UNPKG

video-upscale

Version:
2 lines (1 loc) 775 B
export default "#version 300 es\nprecision highp float;uniform sampler2D u_image;in vec2 A;out vec4 B;uniform float u_GAMMA;float C(vec3 D){return dot(D.rgb,vec3(0.299,0.587,0.114));}vec4 E(sampler2D F,vec2 G){vec2 H=vec2(textureSize(F,0));vec4 I=texture(F,G);float J=C(I.rgb);float K=J;float L=J;vec4 M=vec4(1,0,1,-1)/H.xxyy;vec3 N;vec3 O=texture(F,G+M.yw).rgb;J=C(O);K=max(K,J);L=min(L,J);N=O;O=texture(F,G+M.xy).rgb;J=C(O);K=max(K,J);L=min(L,J);N+=O;O=texture(F,G+M.yz).rgb;J=C(O);K=max(K,J);L=min(L,J);N+=O;O=texture(F,G-M.xy).rgb;J=C(O);K=max(K,J);L=min(L,J);N+=O;float P=L;float Q=1.-K;float R;K=max(0.,K);if(Q<P){R=Q/K;}else{R=P/K;}R=-0.2*max(sqrt(R),0.);vec3 D=(I.rgb+N*R)/(1.+4.*R);return vec4(D,1.);}void main(){B=E(u_image,A);B.rgb=pow(B.rgb,vec3(1./u_GAMMA));}";