CanvasBackground.gdshader 624 B

12345678910111213141516171819202122232425
  1. shader_type canvas_item;
  2. uniform vec4 bg_color: source_color;
  3. uniform float zoom;
  4. const vec4 grid_gray = vec4(0.8, 0.8, 0.8, 1.0);
  5. const vec4 grid_white = vec4(1.0, 1.0, 1.0, 1.0);
  6. varying vec2 pixel_pos;
  7. void vertex() {
  8. pixel_pos = (MODEL_MATRIX * vec4(VERTEX, 0.0, 1.0)).xy;
  9. }
  10. void fragment() {
  11. float grid_size = pow(2.0, ceil(log2((16.0 / zoom))));
  12. vec2 grid_coord = floor(pixel_pos / grid_size);
  13. bool is_dark_cell = mod(grid_coord.x + grid_coord.y, 2.0) == 0.0;
  14. COLOR = is_dark_cell ? grid_gray : grid_white;
  15. if (bg_color.a > 0.0) {
  16. COLOR = mix(COLOR, bg_color, bg_color.a);
  17. }
  18. }