1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
   | float perlin_noise(float2 pos) {          int2 p00 = floor(pos);     int2 p01 = p00 + int2(0, 1);     int2 p10 = p00 + int2(1, 0);     int2 p11 = p00 + int2(1, 1);
      float2 lerp_factor = pos - p00;
      float2 gradient00 = compute_gradient(p00);     float2 gradient01 = compute_gradient(p01);     float2 gradient10 = compute_gradient(p10);     float2 gradient11 = compute_gradient(p11);
      float v00 = dot(pos - (float2)p00, gradient00);     float v01 = dot(pos - (float2)p01, gradient01);     float v10 = dot(pos - (float2)p10, gradient10);     float v11 = dot(pos - (float2)p11, gradient11);
      float v0 = lerp(v00, v01, lerp_factor.y);     float v1 = lerp(v10, v11, lerp_factor.y);     float v  = lerp(v0, v1, lerp_factor.x);
      return v; }  | 
评论