You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

114 line
2.9 KiB

  1. -- GLSL.Vert --
  2. #version 120
  3. attribute vec2 in_Position;
  4. void main(void)
  5. {
  6. gl_Position = vec4(in_Position, 0.0, 1.0);
  7. }
  8. -- GLSL.Frag --
  9. #version 120
  10. uniform float in_Time;
  11. vec3 noise3(vec2 p)
  12. {
  13. return vec3(fract(sin(dot(p, vec2(12.3453, -54.3353432))) * 8433.235443),
  14. fract(sin(dot(p, vec2(34.23232, 98.03537))) * 8294.5345433),
  15. fract(sin(dot(p, vec2(82.91234, -19.243533))) * 2912.454369));
  16. }
  17. vec3 noise3(vec3 p)
  18. {
  19. return vec3(fract(sin(54.343909 + dot(p, vec3(12.3453, -54.3353432, 34.3490432))) * 8433.235443),
  20. fract(sin(93.329945 - dot(p, vec3(34.23232, 98.0353743, 90.2390984))) * 8294.5345433),
  21. fract(sin(32.039284 + dot(p, vec3(82.91234, -19.243533, 22.3294090))) * 2912.454369));
  22. }
  23. vec3 perlin2d(vec2 p)
  24. {
  25. vec2 a = floor(p);
  26. vec2 d = p - a;
  27. d = d * d * (3.0 - 2.0 * d);
  28. vec3 n1 = noise3(a);
  29. vec3 n2 = noise3(a + vec2(1.0, 0.0));
  30. vec3 n3 = noise3(a + vec2(0.0, 1.0));
  31. vec3 n4 = noise3(a + vec2(1.0, 1.0));
  32. vec3 q1 = n2 * d.x + n1 * (1.0 - d.x);
  33. vec3 q2 = n4 * d.x + n3 * (1.0 - d.x);
  34. vec3 q3 = q2 * d.y + q1 * (1.0 - d.y);
  35. return q3;
  36. }
  37. vec3 perlin3d(vec3 p)
  38. {
  39. mat3 r = mat3(0.36, 0.48, -0.8, -0.8, 0.60, 0.0, 0.48, 0.64, 0.60);
  40. p = r * p;
  41. vec3 a = floor(p);
  42. vec3 d = p - a;
  43. d = d * d * (3.0 - 2.0 * d);
  44. vec3 o1 = noise3(a);
  45. vec3 o2 = noise3(a + vec3(1.0, 0.0, 0.0));
  46. vec3 o3 = noise3(a + vec3(0.0, 1.0, 0.0));
  47. vec3 o4 = noise3(a + vec3(1.0, 1.0, 0.0));
  48. vec3 o5 = noise3(a + vec3(0.0, 0.0, 1.0));
  49. vec3 o6 = noise3(a + vec3(1.0, 0.0, 1.0));
  50. vec3 o7 = noise3(a + vec3(0.0, 1.0, 1.0));
  51. vec3 o8 = noise3(a + vec3(1.0, 1.0, 1.0));
  52. vec3 n1 = o2 * d.x + o1 * (1.0 - d.x);
  53. vec3 n2 = o4 * d.x + o3 * (1.0 - d.x);
  54. vec3 n3 = o6 * d.x + o5 * (1.0 - d.x);
  55. vec3 n4 = o8 * d.x + o7 * (1.0 - d.x);
  56. vec3 q1 = n2 * d.y + n1 * (1.0 - d.y);
  57. vec3 q2 = n4 * d.y + n3 * (1.0 - d.y);
  58. vec3 q3 = q2 * d.z + q1 * (1.0 - d.z);
  59. return q3;
  60. }
  61. void main(void)
  62. {
  63. vec2 xy = gl_FragCoord.xy;
  64. float z = in_Time * 2.0;
  65. vec3 p = perlin3d(vec3(xy / 160.0, z)) / 2.0
  66. + perlin3d(vec3(xy / 80.0, z + 1.5)) / 4.0
  67. + perlin3d(vec3(xy / 40.0, z + 0.3)) / 8.0
  68. + perlin3d(vec3(xy / 20.0, z + 3.3)) / 16.0
  69. + perlin3d(vec3(xy / 10.0, z + 2.0)) / 32.0
  70. + perlin3d(vec3(xy / 5.0, z + 1.7)) / 64.0
  71. + perlin3d(vec3(xy / 2.5, z + 4.2)) / 128.0;
  72. p = p * p * (3.0 - 2.0 * p);
  73. p = p * p * (3.0 - 2.0 * p);
  74. gl_FragColor = vec4(min(p.x * 2.0, 1.0), max(p.x * 1.5 - 0.5, 0.0), 0.0, 1.0);
  75. }
  76. -- HLSL.Vert --
  77. void main(float2 in_Position : POSITION,
  78. out float4 out_Position : POSITION)
  79. {
  80. out_Position = float4(in_Position, 0.0, 1.0);
  81. }
  82. -- HLSL.Frag --
  83. void main(out float4 out_FragColor : COLOR)
  84. {
  85. out_FragColor = float4(0.7, 0.2, 0.5, 1.0);
  86. }