mirror of
https://github.com/italicsjenga/slang-shaders.git
synced 2024-11-22 15:51:30 +11:00
parent
954467430c
commit
a6305a1789
|
@ -6,15 +6,21 @@ layout(push_constant) uniform Push
|
||||||
vec4 OriginalSize;
|
vec4 OriginalSize;
|
||||||
vec4 OutputSize;
|
vec4 OutputSize;
|
||||||
uint FrameCount;
|
uint FrameCount;
|
||||||
|
float palette, color_enhance;
|
||||||
} params;
|
} params;
|
||||||
|
|
||||||
|
#pragma parameter palette "Choose palette Hercules/CGA/EGA" 2.0 0.0 2.0 1.0
|
||||||
|
#define palette params.palette
|
||||||
|
|
||||||
|
#pragma parameter color_enhance "Color Enchance" 1.4 1.0 4.0 0.05
|
||||||
|
#define color_enhance params.color_enhance
|
||||||
|
|
||||||
#define _ 0.0
|
#define _ 0.0
|
||||||
#define o (1./3.)
|
#define o (1./3.)
|
||||||
#define b (2./3.)
|
#define b (2./3.)
|
||||||
#define B 1.0
|
#define B 1.0
|
||||||
|
|
||||||
#define color_enhance 1.0
|
|
||||||
#define SourceSize params.SourceSize
|
#define SourceSize params.SourceSize
|
||||||
|
|
||||||
layout(std140, set = 0, binding = 0) uniform UBO
|
layout(std140, set = 0, binding = 0) uniform UBO
|
||||||
|
@ -42,7 +48,10 @@ layout(set = 0, binding = 2) uniform sampler2D Source;
|
||||||
// Color lookup table (RGBI palette with brown fix)
|
// Color lookup table (RGBI palette with brown fix)
|
||||||
const vec3 rgbi_palette[19] =
|
const vec3 rgbi_palette[19] =
|
||||||
{
|
{
|
||||||
vec3(_, _, _),
|
vec3(_, _, _), // cga
|
||||||
|
vec3(B, B, B), // cga white
|
||||||
|
vec3(o, B, B), // cga cyan
|
||||||
|
vec3(B, o, B), // cga pink
|
||||||
vec3(_, _, b),
|
vec3(_, _, b),
|
||||||
vec3(_, b, _),
|
vec3(_, b, _),
|
||||||
vec3(_, b, _),
|
vec3(_, b, _),
|
||||||
|
@ -56,11 +65,24 @@ const vec3 rgbi_palette[19] =
|
||||||
vec3(o, o, o),
|
vec3(o, o, o),
|
||||||
vec3(o, o, B),
|
vec3(o, o, B),
|
||||||
vec3(o, B, o),
|
vec3(o, B, o),
|
||||||
vec3(o, B, B),
|
|
||||||
vec3(B, o, o),
|
vec3(B, o, o),
|
||||||
vec3(B, o, B),
|
|
||||||
vec3(B, B, o),
|
vec3(B, B, o),
|
||||||
vec3(B, B, B),
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const vec3 cga_palette[4] =
|
||||||
|
{
|
||||||
|
vec3(_, _, _), // cga
|
||||||
|
vec3(o, B, B), // cga cyan
|
||||||
|
vec3(B, o, B), // cga pink
|
||||||
|
vec3(B, B, B), // cga white
|
||||||
|
};
|
||||||
|
|
||||||
|
const vec3 simcga_palette[2] =
|
||||||
|
{
|
||||||
|
vec3(_, _, _), // black
|
||||||
|
vec3(o, b, o), // green
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -80,7 +102,9 @@ vec3 nearest_rgbi (vec3 original)
|
||||||
float dst;
|
float dst;
|
||||||
float min_dst = 2.0;
|
float min_dst = 2.0;
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
for (int i=0; i<19; i++)
|
|
||||||
|
int set; if (palette == 2.0)set = 19; else if (palette == 1.0) set = 4;else if (palette == 1.0) set = 2;
|
||||||
|
for (int i=0; i<set; i++)
|
||||||
{
|
{
|
||||||
dst = distance(original, rgbi_palette[i]);
|
dst = distance(original, rgbi_palette[i]);
|
||||||
if (dst < min_dst)
|
if (dst < min_dst)
|
||||||
|
@ -89,7 +113,10 @@ vec3 nearest_rgbi (vec3 original)
|
||||||
idx = i;
|
idx = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rgbi_palette[idx];
|
if (palette == 2.0) return rgbi_palette[idx];
|
||||||
|
else if (palette == 1.0) return cga_palette[idx];
|
||||||
|
else if (palette == 0.0) return simcga_palette[idx];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -98,7 +125,7 @@ float modu(float x, float y)
|
||||||
return x - y * floor(x/y);
|
return x - y * floor(x/y);
|
||||||
}
|
}
|
||||||
|
|
||||||
//fragment
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vec3 color = texture(Source, vTexCoord.xy).rgb;
|
vec3 color = texture(Source, vTexCoord.xy).rgb;
|
||||||
|
@ -128,5 +155,10 @@ void main()
|
||||||
color *= 255.0;
|
color *= 255.0;
|
||||||
color += ohyes;
|
color += ohyes;
|
||||||
color /= 255.0;
|
color /= 255.0;
|
||||||
FragColor = vec4(nearest_rgbi(color*color_enhance), 1.0);
|
|
||||||
|
|
||||||
|
vec3 final = nearest_rgbi(color*color_enhance);
|
||||||
|
|
||||||
|
|
||||||
|
FragColor = vec4(final, 1.0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue