Advertisement
Guest User

Untitled

a guest
Sep 14th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // uniform float gradients[16];
  2. // uniform vec2 gradients[16];
  3. uniform vec2 gradients[16]; // "corner" vectors
  4. uniform int grad_size; // size of a cell
  5. uniform int grad_quant; // how many gradients
  6.  
  7. #define mat(i,j) gradients[i+grad_quant*j]
  8.  
  9. float get_value_at(ivec2 pixel_coord) {
  10.    
  11.     // which gradient is this pixel in?
  12.     ivec2 grad_coord = ivec2(int(pixel_coord.x/float(grad_size)), int(pixel_coord.y/float(grad_size)));
  13.    
  14.     // what pixel is this gradient pixel?
  15.     ivec2 grad_coord_scaled = grad_coord * grad_size;
  16.    
  17.     // vector with 0..1 values
  18.     vec2 nm = vec2(pixel_coord - grad_coord_scaled) / float(grad_size);
  19.  
  20.     vec2 A = mat(grad_coord.x,     grad_coord.y);
  21.     vec2 B = mat(grad_coord.x + 1, grad_coord.y);
  22.     vec2 C = mat(grad_coord.x,     grad_coord.y + 1);
  23.     vec2 D = mat(grad_coord.x + 1, grad_coord.y + 1);
  24.  
  25.     float dot_a = dot(A, nm);
  26.     float dot_b = dot(B, vec2(nm.x - 1.0f, nm.y));
  27.     float dot_c = dot(C, vec2(nm.x,        nm.y - 1.0f));
  28.     float dot_d = dot(D, vec2(nm.x - 1.0f, nm.y - 1.0f));
  29.  
  30.     // return
  31.     // mix(
  32.     //     A,B,
  33.     //     vec2(float((pixel_coord.x/10)%4)/4.f, float((pixel_coord.y/10)%4)/4.f)
  34.     //     ).x+0.3;
  35.     return abs(
  36.         mix(
  37.             mix(dot_a, dot_b, nm.x),
  38.             mix(dot_c, dot_d, nm.x),
  39.             nm.y
  40.             ));
  41.     ;
  42. }
  43.  
  44. void main()
  45. {
  46.     // float val = get_value_at(gl_FragCoord.xy);
  47.     // float val = get_value_at(glTexCoord.xy);
  48.     gl_FragColor = get_value_at(ivec2(glTexCoord.x, glTexCoord.y));
  49.     // gl_FragColor = vec4(0,1,0,1);
  50.     gl_FragColor = vec4(0,val,0,1);
  51.  
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement