Add scanlines effect

This commit is contained in:
Agent X 2026-02-12 19:17:30 -05:00
parent 4459432c64
commit 5f7f29a5b5
6 changed files with 15 additions and 4 deletions

View file

@ -2982,7 +2982,8 @@ SHADER_FLAG_CONTRAST = 3 --- @type ShaderFlag
SHADER_FLAG_EXPOSURE = 4 --- @type ShaderFlag
SHADER_FLAG_DITHERING = 5 --- @type ShaderFlag
SHADER_FLAG_POSTERIZATION = 6 --- @type ShaderFlag
SHADER_FLAG_MAX = 7 --- @type ShaderFlag
SHADER_FLAG_SCANLINES = 7 --- @type ShaderFlag
SHADER_FLAG_MAX = 8 --- @type ShaderFlag
--- @alias ShaderFlag
--- | `SHADER_FLAG_HUE`
@ -2992,6 +2993,7 @@ SHADER_FLAG_MAX = 7 --- @type ShaderFlag
--- | `SHADER_FLAG_EXPOSURE`
--- | `SHADER_FLAG_DITHERING`
--- | `SHADER_FLAG_POSTERIZATION`
--- | `SHADER_FLAG_SCANLINES`
--- | `SHADER_FLAG_MAX`
--- @type integer

View file

@ -1340,7 +1340,8 @@
| SHADER_FLAG_EXPOSURE | 4 |
| SHADER_FLAG_DITHERING | 5 |
| SHADER_FLAG_POSTERIZATION | 6 |
| SHADER_FLAG_MAX | 7 |
| SHADER_FLAG_SCANLINES | 7 |
| SHADER_FLAG_MAX | 8 |
[:arrow_up_small:](#)

View file

@ -506,6 +506,12 @@ static struct ShaderProgram *gfx_opengl_create_and_load_new_shader(struct ColorC
append_line(fs_buf, &fs_len, "int levels = int(uShaderFlagValues[6]);");
append_line(fs_buf, &fs_len, "texel.rgb = floor(texel.rgb * levels) / levels;");
append_line(fs_buf, &fs_len, "}");
// scan lines
append_line(fs_buf, &fs_len, "if (uShaderFlags[7] == 1) {");
append_line(fs_buf, &fs_len, "float scan = sin(gl_FragCoord.y * 1.5) * 0.04;");
append_line(fs_buf, &fs_len, "texel.rgb -= scan * uShaderFlagValues[7];");
append_line(fs_buf, &fs_len, "}");
}
if (opt_fog) {

View file

@ -126,7 +126,7 @@ Color gFogColor = { 0xFF, 0xFF, 0xFF };
f32 gFogIntensity = 1;
int gShaderFlags[SHADER_FLAG_MAX] = { 0 };
f32 gDefaultShaderFlagValues[SHADER_FLAG_MAX] = { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 8.0f };
f32 gDefaultShaderFlagValues[SHADER_FLAG_MAX] = { 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 8.0f, 1.0f };
f32 gShaderFlagValues[SHADER_FLAG_MAX] = { 0 };
bool gShaderFlagsScreen = false;

View file

@ -12,6 +12,7 @@ enum ShaderFlag {
SHADER_FLAG_EXPOSURE,
SHADER_FLAG_DITHERING,
SHADER_FLAG_POSTERIZATION,
SHADER_FLAG_SCANLINES,
SHADER_FLAG_MAX
};

View file

@ -1547,7 +1547,8 @@ char gSmluaConstants[] = ""
"SHADER_FLAG_EXPOSURE=4\n"
"SHADER_FLAG_DITHERING=5\n"
"SHADER_FLAG_POSTERIZATION=6\n"
"SHADER_FLAG_MAX=7\n"
"SHADER_FLAG_SCANLINES=7\n"
"SHADER_FLAG_MAX=8\n"
"GRAPH_RENDER_ACTIVE=(1 << 0)\n"
"GRAPH_RENDER_CHILDREN_FIRST=(1 << 1)\n"
"GRAPH_RENDER_BILLBOARD=(1 << 2)\n"