Advertisement
Guest User

GLSL Fractal Noise

a guest
Apr 12th, 2015
856
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. /// Seed of Andromeda fractal noise examples.
  2. /// Made by Benjamin Arnold.
  3. /// Use it for whatever you want.
  4.  
  5. // Regular fractal noise. Range is -1 to 1
  6. float noise(vec3 position, int octaves, float frequency, float persistence) {
  7. float total = 0.0;
  8. float maxAmplitude = 0.0;
  9. float amplitude = 1.0;
  10. for (int i = 0; i < octaves; i++) {
  11. total += snoise(position * frequency) * amplitude;
  12. frequency *= 2.0;
  13. maxAmplitude += amplitude;
  14. amplitude *= persistence;
  15. }
  16. return total / maxAmplitude;
  17. }
  18.  
  19. // Makes bubbly hills. range is 0 to 1
  20. float absNoise(vec3 position, int octaves, float frequency, float persistence) {
  21. float total = 0.0;
  22. float maxAmplitude = 0.0;
  23. float amplitude = 1.0;
  24. for (int i = 0; i < octaves; i++) {
  25. total += abs(snoise(position * frequency)) * amplitude;
  26. frequency *= 2.0;
  27. maxAmplitude += amplitude;
  28. amplitude *= persistence;
  29. }
  30. return total / maxAmplitude;
  31. }
  32.  
  33. // Makes ridged mountains. Range is -1 to 1
  34. float ridgedNoise(vec3 position, int octaves, float frequency, float persistence) {
  35. float total = 0.0;
  36. float maxAmplitude = 0.0;
  37. float amplitude = 1.0;
  38. for (int i = 0; i < octaves; i++) {
  39. total += ((1.0 - abs(snoise(position * frequency))) * 2.0 - 1.0) * amplitude;
  40. frequency *= 2.0;
  41. maxAmplitude += amplitude;
  42. amplitude *= persistence;
  43. }
  44. return total / maxAmplitude;
  45. }
  46.  
  47. // x^2 function. Range is 0 to 1
  48. float squaredNoise(vec3 position, int octaves, float frequency, float persistence) {
  49. float total = 0.0;
  50. float maxAmplitude = 0.0;
  51. float amplitude = 1.0;
  52. for (int i = 0; i < octaves; i++) {
  53. float tmp = snoise(position * frequency);
  54. total += tmp * tmp * amplitude;
  55. frequency *= 2.0;
  56. maxAmplitude += amplitude;
  57. amplitude *= persistence;
  58. }
  59. return total / maxAmplitude;
  60. }
  61.  
  62. // x^3 function. Range is -1 to 1
  63. float cubedNoise(vec3 position, int octaves, float frequency, float persistence) {
  64. float total = 0.0;
  65. float maxAmplitude = 0.0;
  66. float amplitude = 1.0;
  67. for (int i = 0; i < octaves; i++) {
  68. float tmp = snoise(position * frequency);
  69. total += tmp * tmp * tmp * amplitude;
  70. frequency *= 2.0;
  71. maxAmplitude += amplitude;
  72. amplitude *= persistence;
  73. }
  74. return total / maxAmplitude;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement