77 * Better rank ordering method by Stefan Gustavson in 2012.
88 *
99 *
10- * Copyright (C) 2012 Jonas Wagner
10+ * Copyright (C) 2016 Jonas Wagner
1111 *
1212 * Permission is hereby granted, free of charge, to any person obtaining
1313 * a copy of this software and associated documentation files (the
@@ -39,19 +39,6 @@ var G3 = 1.0 / 6.0;
3939var F4 = ( Math . sqrt ( 5.0 ) - 1.0 ) / 4.0 ;
4040var G4 = ( 5.0 - Math . sqrt ( 5.0 ) ) / 20.0 ;
4141
42- function buildPermutationTable ( random ) {
43- var i ;
44- var j = [ ] ;
45- for ( i = 0 ; i < 256 ; i ++ ) {
46- j . push ( i ) ;
47- }
48- var p = new Uint8Array ( 256 ) ;
49- for ( i = 0 ; i < 256 ; i ++ ) {
50- p [ i ] = j . splice ( ~ ~ ( random ( ) * ( 256 - i ) ) , 1 ) ;
51- }
52- return p ;
53- }
54-
5542function SimplexNoise ( random ) {
5643 if ( ! random ) random = Math . random ;
5744 this . p = new Uint8Array ( 256 ) ;
@@ -242,28 +229,28 @@ SimplexNoise.prototype = {
242229 var jj = j & 255 ;
243230 var kk = k & 255 ;
244231 // Calculate the contribution from the four corners
245- var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 ;
232+ var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0 ;
246233 if ( t0 < 0 ) n0 = 0.0 ;
247234 else {
248235 var gi0 = permMod12 [ ii + perm [ jj + perm [ kk ] ] ] * 3 ;
249236 t0 *= t0 ;
250237 n0 = t0 * t0 * ( grad3 [ gi0 ] * x0 + grad3 [ gi0 + 1 ] * y0 + grad3 [ gi0 + 2 ] * z0 ) ;
251238 }
252- var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 ;
239+ var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1 ;
253240 if ( t1 < 0 ) n1 = 0.0 ;
254241 else {
255242 var gi1 = permMod12 [ ii + i1 + perm [ jj + j1 + perm [ kk + k1 ] ] ] * 3 ;
256243 t1 *= t1 ;
257244 n1 = t1 * t1 * ( grad3 [ gi1 ] * x1 + grad3 [ gi1 + 1 ] * y1 + grad3 [ gi1 + 2 ] * z1 ) ;
258245 }
259- var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 ;
246+ var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2 ;
260247 if ( t2 < 0 ) n2 = 0.0 ;
261248 else {
262249 var gi2 = permMod12 [ ii + i2 + perm [ jj + j2 + perm [ kk + k2 ] ] ] * 3 ;
263250 t2 *= t2 ;
264251 n2 = t2 * t2 * ( grad3 [ gi2 ] * x2 + grad3 [ gi2 + 1 ] * y2 + grad3 [ gi2 + 2 ] * z2 ) ;
265252 }
266- var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 ;
253+ var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3 ;
267254 if ( t3 < 0 ) n3 = 0.0 ;
268255 else {
269256 var gi3 = permMod12 [ ii + 1 + perm [ jj + 1 + perm [ kk + 1 ] ] ] * 3 ;
@@ -362,35 +349,35 @@ SimplexNoise.prototype = {
362349 var kk = k & 255 ;
363350 var ll = l & 255 ;
364351 // Calculate the contribution from the five corners
365- var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0 ;
352+ var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0 ;
366353 if ( t0 < 0 ) n0 = 0.0 ;
367354 else {
368355 var gi0 = ( perm [ ii + perm [ jj + perm [ kk + perm [ ll ] ] ] ] % 32 ) * 4 ;
369356 t0 *= t0 ;
370357 n0 = t0 * t0 * ( grad4 [ gi0 ] * x0 + grad4 [ gi0 + 1 ] * y0 + grad4 [ gi0 + 2 ] * z0 + grad4 [ gi0 + 3 ] * w0 ) ;
371358 }
372- var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1 ;
359+ var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1 ;
373360 if ( t1 < 0 ) n1 = 0.0 ;
374361 else {
375362 var gi1 = ( perm [ ii + i1 + perm [ jj + j1 + perm [ kk + k1 + perm [ ll + l1 ] ] ] ] % 32 ) * 4 ;
376363 t1 *= t1 ;
377364 n1 = t1 * t1 * ( grad4 [ gi1 ] * x1 + grad4 [ gi1 + 1 ] * y1 + grad4 [ gi1 + 2 ] * z1 + grad4 [ gi1 + 3 ] * w1 ) ;
378365 }
379- var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2 ;
366+ var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2 ;
380367 if ( t2 < 0 ) n2 = 0.0 ;
381368 else {
382369 var gi2 = ( perm [ ii + i2 + perm [ jj + j2 + perm [ kk + k2 + perm [ ll + l2 ] ] ] ] % 32 ) * 4 ;
383370 t2 *= t2 ;
384371 n2 = t2 * t2 * ( grad4 [ gi2 ] * x2 + grad4 [ gi2 + 1 ] * y2 + grad4 [ gi2 + 2 ] * z2 + grad4 [ gi2 + 3 ] * w2 ) ;
385372 }
386- var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3 ;
373+ var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3 ;
387374 if ( t3 < 0 ) n3 = 0.0 ;
388375 else {
389376 var gi3 = ( perm [ ii + i3 + perm [ jj + j3 + perm [ kk + k3 + perm [ ll + l3 ] ] ] ] % 32 ) * 4 ;
390377 t3 *= t3 ;
391378 n3 = t3 * t3 * ( grad4 [ gi3 ] * x3 + grad4 [ gi3 + 1 ] * y3 + grad4 [ gi3 + 2 ] * z3 + grad4 [ gi3 + 3 ] * w3 ) ;
392379 }
393- var t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4 ;
380+ var t4 = 0.5 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4 ;
394381 if ( t4 < 0 ) n4 = 0.0 ;
395382 else {
396383 var gi4 = ( perm [ ii + 1 + perm [ jj + 1 + perm [ kk + 1 + perm [ ll + 1 ] ] ] ] % 32 ) * 4 ;
@@ -400,10 +387,22 @@ SimplexNoise.prototype = {
400387 // Sum up and scale the result to cover the range [-1,1]
401388 return 27.0 * ( n0 + n1 + n2 + n3 + n4 ) ;
402389 }
403-
404-
405390 } ;
406391
392+ function buildPermutationTable ( random ) {
393+ var i ;
394+ var j = [ ] ;
395+ for ( i = 0 ; i < 256 ; i ++ ) {
396+ j . push ( i ) ;
397+ }
398+ var p = new Uint8Array ( 256 ) ;
399+ for ( i = 0 ; i < 256 ; i ++ ) {
400+ p [ i ] = j . splice ( ~ ~ ( random ( ) * ( 256 - i ) ) , 1 ) ;
401+ }
402+ return p ;
403+ }
404+ SimplexNoise . _buildPermutationTable = buildPermutationTable ;
405+
407406// amd
408407if ( typeof define !== 'undefined' && define . amd ) define ( function ( ) { return SimplexNoise ; } ) ;
409408// common js
0 commit comments