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.
 
 
 

113 line
2.7 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 perlin3(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 perlin3(vec3 p)
  38. {
  39. vec3 a = floor(p);
  40. vec3 d = p - a;
  41. d = d * d * (3.0 - 2.0 * d);
  42. vec3 o1 = noise3(a);
  43. vec3 o2 = noise3(a + vec3(1.0, 0.0, 0.0));
  44. vec3 o3 = noise3(a + vec3(0.0, 1.0, 0.0));
  45. vec3 o4 = noise3(a + vec3(1.0, 1.0, 0.0));
  46. vec3 o5 = noise3(a + vec3(0.0, 0.0, 1.0));
  47. vec3 o6 = noise3(a + vec3(1.0, 0.0, 1.0));
  48. vec3 o7 = noise3(a + vec3(0.0, 1.0, 1.0));
  49. vec3 o8 = noise3(a + vec3(1.0, 1.0, 1.0));
  50. vec3 n1 = o2 * d.x + o1 * (1.0 - d.x);
  51. vec3 n2 = o4 * d.x + o3 * (1.0 - d.x);
  52. vec3 n3 = o6 * d.x + o5 * (1.0 - d.x);
  53. vec3 n4 = o8 * d.x + o7 * (1.0 - d.x);
  54. vec3 q1 = n2 * d.y + n1 * (1.0 - d.y);
  55. vec3 q2 = n4 * d.y + n3 * (1.0 - d.y);
  56. vec3 q3 = q2 * d.z + q1 * (1.0 - d.z);
  57. return q3;
  58. }
  59. void main(void)
  60. {
  61. //vec3 input = vec3(gl_FragCoord.xy, in_Time * 200.0);
  62. vec3 input = vec3(in_Time * 20.0, gl_FragCoord.xy);
  63. vec3 p = perlin3(input / 160.0) / 2.0
  64. + perlin3(input / 80.0) / 4.0
  65. + perlin3(input / 40.0) / 8.0
  66. + perlin3(input / 20.0) / 16.0
  67. + perlin3(input / 10.0) / 32.0
  68. + perlin3(input / 5.0) / 64.0
  69. + perlin3(input / 2.5) / 128.0;
  70. gl_FragColor = vec4(p.xxx, 1.0);
  71. //inputvec4(perlin3(input), 1.0);
  72. //inputvec4(noise3(floor(input / 10.0)).xxx, 1.0);
  73. //inputvec4(noise3(input), 1.0);
  74. }
  75. -- HLSL.Vert --
  76. void main(float2 in_Position : POSITION,
  77. out float4 out_Position : POSITION)
  78. {
  79. out_Position = float4(in_Position, 0.0, 1.0);
  80. }
  81. -- HLSL.Frag --
  82. void main(out float4 out_FragColor : COLOR)
  83. {
  84. out_FragColor = float4(0.7, 0.2, 0.5, 1.0);
  85. }