mirror of
https://github.com/SangeloDev/SangeFault.git
synced 2024-11-10 07:32:43 +00:00
a50683c84e
basically starting over... this is gonna be fun!
52 lines
1.8 KiB
GLSL
52 lines
1.8 KiB
GLSL
#version 150
|
|
|
|
uniform sampler2D DiffuseSampler;
|
|
|
|
in vec2 texCoord;
|
|
in vec2 oneTexel;
|
|
|
|
uniform vec2 InSize;
|
|
|
|
const float Pi2 = 6.283185307;
|
|
|
|
const vec4 A2 = vec4(1.0);
|
|
const vec4 B = vec4(0.5);
|
|
const float P = 1.0;
|
|
const float CCFrequency = 3.59754545;
|
|
const float ScanTime = 52.6;
|
|
const float Pi2ScanTime = Pi2 * ScanTime;
|
|
const vec4 YTransform = vec4(0.299, 0.587, 0.114, 0.0);
|
|
const vec4 ITransform = vec4(0.595716, -0.274453, -0.321263, 0.0);
|
|
const vec4 QTransform = vec4(0.211456, -0.522591, 0.31135, 0.0);
|
|
const vec4 MinC = vec4(-1.1183);
|
|
const vec4 InvCRange = vec4(1.0 / 3.2366);
|
|
|
|
out vec4 fragColor;
|
|
|
|
void main() {
|
|
vec2 InverseP = vec2(P, 0.0) * oneTexel;
|
|
|
|
// UVs for four linearly-interpolated samples spread 0.25 texels apart
|
|
vec2 C0 = texCoord;
|
|
vec2 C1 = texCoord + InverseP * 0.25;
|
|
vec2 C2 = texCoord + InverseP * 0.50;
|
|
vec2 C3 = texCoord + InverseP * 0.75;
|
|
vec4 Cx = vec4(C0.x, C1.x, C2.x, C3.x);
|
|
vec4 Cy = vec4(C0.y, C1.y, C2.y, C3.y);
|
|
|
|
vec4 Texel0 = texture(DiffuseSampler, C0);
|
|
vec4 Texel1 = texture(DiffuseSampler, C1);
|
|
vec4 Texel2 = texture(DiffuseSampler, C2);
|
|
vec4 Texel3 = texture(DiffuseSampler, C3);
|
|
|
|
// Calculate the expected time of the sample.
|
|
vec4 T = A2 * Cy * vec4(InSize.y) + B + Cx;
|
|
vec4 W = vec4(Pi2ScanTime * CCFrequency);
|
|
vec4 TW = T * W;
|
|
vec4 Y = vec4(dot(Texel0, YTransform), dot(Texel1, YTransform), dot(Texel2, YTransform), dot(Texel3, YTransform));
|
|
vec4 I = vec4(dot(Texel0, ITransform), dot(Texel1, ITransform), dot(Texel2, ITransform), dot(Texel3, ITransform));
|
|
vec4 Q = vec4(dot(Texel0, QTransform), dot(Texel1, QTransform), dot(Texel2, QTransform), dot(Texel3, QTransform));
|
|
|
|
vec4 Encoded = Y + I * cos(TW) + Q * sin(TW);
|
|
fragColor = (Encoded - MinC) * InvCRange;
|
|
}
|