particle_lineAA_base.shader 990 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. shader_type spatial;
  2. render_mode blend_mix,depth_draw_alpha_prepass,cull_disabled,unshaded;
  3. uniform sampler2D test_texture:hint_albedo; //only for compare vs other
  4. void vertex() {
  5. }
  6. // https://iquilezles.org/www/articles/filterableprocedurals/filterableprocedurals.htm
  7. float filteredGrid( in vec2 p, in vec2 dpdx, in vec2 dpdy )
  8. {
  9. const float N = 10.0;
  10. vec2 w = max(abs(dpdx), abs(dpdy));
  11. vec2 a = p + 0.5*w;
  12. vec2 b = p - 0.5*w;
  13. vec2 i = (floor(a)+min(fract(a)*N,1.0)-
  14. floor(b)-min(fract(b)*N,1.0))/(N*w);
  15. return (i.x);
  16. }
  17. void fragment() {
  18. vec2 tuv=UV;
  19. tuv+=-0.5;
  20. float scale=.25;
  21. tuv.x*=scale;
  22. tuv.x+=(0.5/10.);
  23. float d=0.;
  24. d=filteredGrid(tuv,dFdx(tuv),dFdy(tuv)); //procedural filtered
  25. //d=1.-step(0.05,abs(tuv.x)); //procedural, not filtered
  26. tuv=UV;
  27. tuv.x=(tuv.x-0.5)*scale+0.5;
  28. //d=texture(test_texture,tuv).a; //texture
  29. ALBEDO=vec3(0.);
  30. ALBEDO=d*vec3(0.0);
  31. ALPHA=d;
  32. //ALBEDO=vec3(1.);
  33. }