0% found this document useful (0 votes)
15 views1 page

Fallback hq2x F

The document contains a fragment shader code that processes texture data to compute a color output based on various weighted calculations. It uses offsets to sample surrounding texels and applies mathematical operations to determine the final color. The shader includes precision settings and constants for controlling the output characteristics.

Uploaded by

syarifm936
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views1 page

Fallback hq2x F

The document contains a fragment shader code that processes texture data to compute a color output based on various weighted calculations. It uses offsets to sample surrounding texels and applies mathematical operations to determine the final color. The shader includes precision settings and constants for controlling the output characteristics.

Uploaded by

syarifm936
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 1

uniform lowp vec2 srcTexelHalfDelta;

in lowp vec2 texUVOut;

void main()
{
#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif

const float mx = 0.325;


const float k = -0.250;
const float maxW = 0.25;
const float minW =-0.05;
const float lumAdd = 0.25;
const vec3 dt = vec3(1.0, 1.0, 1.0);

vec2 offsetDiag = vec2(srcTexelHalfDelta.x, srcTexelHalfDelta.y);


vec2 offsetDiagNegX = vec2(-srcTexelHalfDelta.x, srcTexelHalfDelta.y);
vec2 offsetX = vec2(srcTexelHalfDelta.x, 0.0);
vec2 offsetY = vec2(0.0, srcTexelHalfDelta.y);
vec3 c00 = TEXTURE(TEX, texUVOut - offsetDiag).rgb;
vec3 c10 = TEXTURE(TEX, texUVOut - offsetY).rgb;
vec3 c20 = TEXTURE(TEX, texUVOut - offsetDiagNegX).rgb;
vec3 c01 = TEXTURE(TEX, texUVOut - offsetX).rgb;
vec3 c11 = TEXTURE(TEX, texUVOut).rgb;
vec3 c21 = TEXTURE(TEX, texUVOut + offsetX).rgb;
vec3 c02 = TEXTURE(TEX, texUVOut + offsetDiagNegX).rgb;
vec3 c12 = TEXTURE(TEX, texUVOut + offsetY).rgb;
vec3 c22 = TEXTURE(TEX, texUVOut + offsetDiag).rgb;

float md1 = dot(abs(c00 - c22), dt);


float md2 = dot(abs(c02 - c20), dt);

float w1 = dot(abs(c22 - c11), dt) * md2;


float w2 = dot(abs(c02 - c11), dt) * md1;
float w3 = dot(abs(c00 - c11), dt) * md2;
float w4 = dot(abs(c20 - c11), dt) * md1;

float t1 = w1 + w3;
float t2 = w2 + w4;
float ww = max(t1, t2) + 0.0001;

c11 = (w1 * c00 + w2 * c20 + w3 * c22 + w4 * c02 + ww * c11) / (t1 + t2 +


ww);

float lc1 = k / (0.12 * dot(c10 + c12 + c11, dt) + lumAdd);


float lc2 = k / (0.12 * dot(c01 + c21 + c11, dt) + lumAdd);

w1 = clamp(lc1 * dot(abs(c11 - c10), dt) + mx, minW, maxW);


w2 = clamp(lc2 * dot(abs(c11 - c21), dt) + mx, minW, maxW);
w3 = clamp(lc1 * dot(abs(c11 - c12), dt) + mx, minW, maxW);
w4 = clamp(lc2 * dot(abs(c11 - c01), dt) + mx, minW, maxW);

lowp vec4 color = vec4(w1 * c10 + w2 * c21 + w3 * c12 + w4 * c01 + (1.0 - w1


- w2 - w3 - w4) * c11, 1.0);
FRAGCOLOR = color;
}

You might also like