Guest User

Untitled

a guest
Nov 13th, 2023
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. shader_type canvas_item;
  2.  
  3. uniform sampler2D tiledtexture: repeat_enable, filter_linear_mipmap;
  4. uniform float opacity : hint_range(0.0, 1.0);
  5. uniform float pixel_size = 0.01;
  6. uniform bool greyscale = true;
  7. uniform float contrast;
  8. uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
  9. uniform vec3 pixel_colors : source_color;
  10.  
  11.  
  12. vec4 to_grayscale(vec4 color) {
  13.     float luminance = 0.21 * color.r + 0.72 * color.g + 0.07 * color.b;
  14.     return vec4(luminance, luminance, luminance, color.a);
  15. }
  16.  
  17.  
  18. vec4 adjust_contrast(vec4 color) {
  19.     color.rgb = (color.rgb - 0.5) * max(contrast, 0.0) + 0.5;
  20.     return color;
  21. }
  22.  
  23.  
  24. vec4 hard_mix(vec4 color1, vec4 color2) {
  25.     vec4 result;
  26.     for (int i = 0; i < 4; i++) {
  27.         float value = color1[i] + color2[i];
  28.         if (value >= 1.0) {
  29.             result[i] = 1.0;
  30.         } else {
  31.             result[i] = 0.0;
  32.         }
  33.     }
  34.     return result;
  35. }
  36.  
  37.  
  38.  
  39.  
  40. void fragment() {
  41.    
  42.     vec2 uv = SCREEN_UV;
  43.     vec2 uv2 = SCREEN_UV;
  44.    
  45.    
  46.     uv = floor(uv / pixel_size) * pixel_size;
  47.     vec4 color1 = texture(screen_texture, uv);
  48.    
  49.    
  50.     if (greyscale) {
  51.         color1 = to_grayscale(color1);
  52.         color1 = adjust_contrast(color1);
  53.        
  54.     }
  55.    
  56.    
  57.     vec4 color2 = texture(tiledtexture, uv2 / pixel_size);
  58.     vec4 final_result = mix(color1, hard_mix(color1, color2), opacity);
  59.    
  60.    
  61.     if (final_result == vec4(1.0, 1.0, 1.0, 1.0)) {
  62.         final_result = vec4(pixel_colors, 1.0);
  63.     }
  64.    
  65.  
  66.     COLOR = final_result;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment