diff --git a/crt/crt-geom-deluxe.slangp b/crt/crt-geom-deluxe.slangp index 9a145ee..77dc897 100644 --- a/crt/crt-geom-deluxe.slangp +++ b/crt/crt-geom-deluxe.slangp @@ -17,13 +17,14 @@ alias3 = blur shader4 = shaders/geom-deluxe/crt-geom-deluxe.slang filter_linear4 = true -textures = "aperture;slot;delta" -delta = shaders/geom-deluxe/masks/delta_2_4x1_rgb.png -delta_filter_linear = true -delta_repeat_mode = repeat -slot = shaders/geom-deluxe/masks/slot_2_5x4_bgr.png -slot_filter_linear = true -slot_repeat_mode = repeat -aperture = shaders/geom-deluxe/masks/aperture_2_4_rgb.png -aperture_filter_linear = true -aperture_repeat_mode = repeat \ No newline at end of file +# comment these mask textures since we're generating them in the shader +#textures = "aperture;slot;delta" +#delta = shaders/geom-deluxe/masks/delta_2_4x1_rgb.png +#delta_filter_linear = true +#delta_repeat_mode = repeat +#slot = shaders/geom-deluxe/masks/slot_2_5x4_bgr.png +#slot_filter_linear = true +#slot_repeat_mode = repeat +#aperture = shaders/geom-deluxe/masks/aperture_2_4_rgb.png +#aperture_filter_linear = true +#aperture_repeat_mode = repeat diff --git a/crt/shaders/geom-deluxe/crt-geom-deluxe.slang b/crt/shaders/geom-deluxe/crt-geom-deluxe.slang index 7d8d6c7..89b17bc 100644 --- a/crt/shaders/geom-deluxe/crt-geom-deluxe.slang +++ b/crt/shaders/geom-deluxe/crt-geom-deluxe.slang @@ -12,6 +12,8 @@ #include "geom-deluxe-params.inc" +#include "../../../include/subpixel_masks.h" + #define u_tex_size0 global.SourceSize #define u_tex_size1 global.internal1Size #define u_quad_dims global.OutputSize @@ -117,9 +119,10 @@ layout(location = 4) in vec2 v_one; layout(location = 0) out vec4 FragColor; layout(set = 0, binding = 2) uniform sampler2D blur; layout(set = 0, binding = 3) uniform sampler2D internal1; -layout(set = 0, binding = 4) uniform sampler2D aperture; -layout(set = 0, binding = 5) uniform sampler2D slot; -layout(set = 0, binding = 6) uniform sampler2D delta; +// comment these out, as we're using generated masks instead of LUTs +//layout(set = 0, binding = 4) uniform sampler2D aperture; +//layout(set = 0, binding = 5) uniform sampler2D slot; +//layout(set = 0, binding = 6) uniform sampler2D delta; #define blur_texture blur @@ -301,23 +304,10 @@ void main() // original code; just makes a giant phosphor here // xy = v_texCoord.xy * u_quad_dims.xy / u_tex_size1.xy; - // tiling; looks nasty at non-integer x and/or y - // xy = fract(v_texCoord * global.SourceSize.xy * 1.9999); - // gl_FragCoord; tied to physical pixel size xy = v_texCoord.xy * global.OutputSize.xy; - - //vec3 mask = texture(mask_texture, xy).rgb; - vec3 mask = vec3(1.0); - if(mask_picker == 0) // no mask - { - FragColor = vec4(mul_res, col.a); - return; - } - else if(mask_picker == 1) mask = texture(aperture, xy * 0.3333).rgb; - else if(mask_picker == 2) mask = texture(slot, xy * 0.25).rgb; - else mask = texture(delta, xy * 0.49999).rgb; - mask = mix(vec3(1.0), mask, aperture_strength.x); + + vec3 mask = mask_weights(xy, aperture_strength.x, mask_picker); FragColor = vec4(mul_res*mask, col.a); -} \ No newline at end of file +} diff --git a/crt/shaders/geom-deluxe/geom-deluxe-params.inc b/crt/shaders/geom-deluxe/geom-deluxe-params.inc index ceb0ffa..8dc2181 100644 --- a/crt/shaders/geom-deluxe/geom-deluxe-params.inc +++ b/crt/shaders/geom-deluxe/geom-deluxe-params.inc @@ -16,7 +16,7 @@ layout(std140, set = 0, binding = 0) uniform UBO mat4 MVP; } global; -#pragma parameter mask_type "Mask (none, aperture, slot, delta)" 1.0 0.0 3.0 1.0 +#pragma parameter mask_type "Mask (aperture, delta, slot)" 1.0 1.0 19.0 1.0 #pragma parameter aperture_strength "Shadow mask strength" 0.4 0.0 1.0 0.05 #pragma parameter phosphor_power "Phosphor decay power" 1.2 0.5 3.0 0.05 #pragma parameter phosphor_amplitude "Phosphor persistence amplitude" 0.04 0.0 0.2 0.01 @@ -52,4 +52,4 @@ vec2 angle = vec2(params.angle_x, params.angle_y); vec2 overscan = vec2(params.overscan_x, params.overscan_y); int mask_picker = int(params.mask_type); -const float gamma = 2.2; \ No newline at end of file +const float gamma = 2.2;