@@ -569,7 +569,7 @@ static SIMDf SIMDf_NUM(0_6);
569
569
static SIMDf SIMDf_NUM (15_5);
570
570
static SIMDf SIMDf_NUM (511_5);
571
571
572
- static SIMDf SIMDf_NUM (cellLength );
572
+ // static SIMDf SIMDf_NUM(cellJitter );
573
573
static SIMDf SIMDf_NUM (F3);
574
574
static SIMDf SIMDf_NUM (G3);
575
575
static SIMDf SIMDf_NUM (G33);
@@ -635,7 +635,7 @@ void FUNC(InitSIMDValues)()
635
635
SIMDf_NUM (15_5) = SIMDf_SET (15 .5f );
636
636
SIMDf_NUM (511_5) = SIMDf_SET (511 .5f );
637
637
638
- SIMDf_NUM (cellLength ) = SIMDf_SET (0 .39614f );
638
+ // SIMDf_NUM(cellJitter ) = SIMDf_SET(0.39614f);
639
639
SIMDf_NUM (F3) = SIMDf_SET (1 .f / 3 .f );
640
640
SIMDf_NUM (G3) = SIMDf_SET (1 .f / 6 .f );
641
641
SIMDf_NUM (G33) = SIMDf_SET ((3 .f / 6 .f ) - 1 .f );
@@ -977,7 +977,7 @@ SIMDf x##_x##_y##_z = SIMDf_SUB(SIMDf_CONVERT_TO_FLOAT(SIMDi_AND(hash##_x##_y##_
977
977
SIMDf y##_x##_y##_z = SIMDf_SUB(SIMDf_CONVERT_TO_FLOAT(SIMDi_AND(SIMDi_SHIFT_R(hash##_x##_y##_z, 10 ), SIMDi_NUM(bit10Mask))), SIMDf_NUM(511_5)); \
978
978
SIMDf z##_x##_y##_z = SIMDf_SUB(SIMDf_CONVERT_TO_FLOAT(SIMDi_AND(SIMDi_SHIFT_R(hash##_x##_y##_z, 20 ), SIMDi_NUM(bit10Mask))), SIMDf_NUM(511_5));
979
979
980
- // SIMDf invMag##_x##_y##_z = SIMDf_MUL(SIMDf_NUM(cellLength ), SIMDf_INV_SQRT(SIMDf_MUL_ADD(x##_x##_y##_z, x##_x##_y##_z, SIMDf_MUL_ADD(y##_x##_y##_z, y##_x##_y##_z, SIMDf_MUL(z##_x##_y##_z, z##_x##_y##_z)))));
980
+ // SIMDf invMag##_x##_y##_z = SIMDf_MUL(SIMDf_NUM(cellJitter ), SIMDf_INV_SQRT(SIMDf_MUL_ADD(x##_x##_y##_z, x##_x##_y##_z, SIMDf_MUL_ADD(y##_x##_y##_z, y##_x##_y##_z, SIMDf_MUL(z##_x##_y##_z, z##_x##_y##_z)))));
981
981
// x##_x##_y##_z = SIMDf_MUL(x##_x##_y##_z, invMag##_x##_y##_z);
982
982
// y##_x##_y##_z = SIMDf_MUL(y##_x##_y##_z, invMag##_x##_y##_z);
983
983
// z##_x##_y##_z = SIMDf_MUL(z##_x##_y##_z, invMag##_x##_y##_z);
@@ -1493,15 +1493,15 @@ void SIMD_LEVEL_CLASS::Fill##func##FractalSet(float* noiseSet, FastNoiseVectorSe
1493
1493
FILL_VECTOR_SET(Cubic)
1494
1494
FILL_FRACTAL_VECTOR_SET(Cubic)
1495
1495
1496
- void SIMD_LEVEL_CLASS::FillWhiteNoiseSet(float * noiseSet, int xStart, int yStart, int zStart, int xSize, int ySize, int zSize, float scaleModifier)
1496
+ void SIMD_LEVEL_CLASS::FillWhiteNoiseSet(float * noiseSet, int xStart, int yStart, int zStart, int xSize, int ySize, int zSize, float scaleModifier)
1497
1497
{
1498
1498
assert (noiseSet);
1499
1499
SIMD_ZERO_ALL ();
1500
1500
SIMDi seedV = SIMDi_SET (m_seed);
1501
1501
1502
1502
if ((zSize & (VECTOR_SIZE - 1 )) == 0 )
1503
1503
{
1504
- SIMDi x = SIMDi_MUL (SIMDi_SET (xStart), SIMDi_NUM (xPrime));
1504
+ SIMDi x = SIMDi_MUL (SIMDi_SET (xStart), SIMDi_NUM (xPrime));
1505
1505
SIMDi yBase = SIMDi_MUL (SIMDi_SET (yStart), SIMDi_NUM (yPrime));
1506
1506
SIMDi zBase = SIMDi_MUL (SIMDi_ADD (SIMDi_NUM (incremental), SIMDi_SET (zStart)), SIMDi_NUM (zPrime));
1507
1507
@@ -1575,7 +1575,7 @@ void SIMD_LEVEL_CLASS::FillWhiteNoiseSet(float* noiseSet, int xStart, int yStart
1575
1575
#define Distance2Div_RETURN (_distance, _distance2 ) SIMDf_DIV(_distance, _distance2)
1576
1576
1577
1577
#define CELLULAR_VALUE_SINGLE (distanceFunc )\
1578
- static SIMDf VECTORCALL FUNC (CellularValue##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z)\
1578
+ static SIMDf VECTORCALL FUNC (CellularValue##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, SIMDf cellJitter )\
1579
1579
{\
1580
1580
SIMDf distance = SIMDf_NUM (999999 );\
1581
1581
SIMDf cellValue = SIMDf_UNDEFINED ();\
@@ -1607,7 +1607,7 @@ static SIMDf VECTORCALL FUNC(CellularValue##distanceFunc##Single)(SIMDi seed, SI
1607
1607
SIMDf yd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,10 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1608
1608
SIMDf zd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,20 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1609
1609
\
1610
- SIMDf invMag = SIMDf_MUL (SIMDf_NUM (cellLength) , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1610
+ SIMDf invMag = SIMDf_MUL (cellJitter , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1611
1611
\
1612
1612
xd = SIMDf_MUL_ADD (xd, invMag, xcf);\
1613
1613
yd = SIMDf_MUL_ADD (yd, invMag, ycf);\
@@ -1664,7 +1664,7 @@ switch(noiseLookupSettings.fractalType)\
1664
1664
}}\
1665
1665
1666
1666
#define CELLULAR_LOOKUP_SINGLE (distanceFunc )\
1667
- static SIMDf VECTORCALL FUNC (CellularLookup##distanceFunc##Single)(SIMDi seedV, SIMDf x, SIMDf y, SIMDf z, const NoiseLookupSettings& noiseLookupSettings)\
1667
+ static SIMDf VECTORCALL FUNC (CellularLookup##distanceFunc##Single)(SIMDi seedV, SIMDf x, SIMDf y, SIMDf z, SIMDf cellJitter, const NoiseLookupSettings& noiseLookupSettings)\
1668
1668
{\
1669
1669
SIMDf distance = SIMDf_NUM (999999 );\
1670
1670
SIMDf xCell = SIMDf_UNDEFINED ();\
@@ -1702,7 +1702,7 @@ static SIMDf VECTORCALL FUNC(CellularLookup##distanceFunc##Single)(SIMDi seedV,
1702
1702
SIMDf yd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,10 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1703
1703
SIMDf zd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,20 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1704
1704
\
1705
- SIMDf invMag = SIMDf_MUL (SIMDf_NUM (cellLength) , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1705
+ SIMDf invMag = SIMDf_MUL (cellJitter , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1706
1706
\
1707
1707
SIMDf xCellNew = SIMDf_MUL (xd, invMag);\
1708
1708
SIMDf yCellNew = SIMDf_MUL (yd, invMag);\
@@ -1774,7 +1774,7 @@ static SIMDf VECTORCALL FUNC(CellularLookup##distanceFunc##Single)(SIMDi seedV,
1774
1774
}
1775
1775
1776
1776
#define CELLULAR_DISTANCE_SINGLE (distanceFunc )\
1777
- static SIMDf VECTORCALL FUNC (CellularDistance##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z)\
1777
+ static SIMDf VECTORCALL FUNC (CellularDistance##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, SIMDf cellJitter )\
1778
1778
{\
1779
1779
SIMDf distance = SIMDf_NUM (999999 );\
1780
1780
\
@@ -1805,7 +1805,7 @@ static SIMDf VECTORCALL FUNC(CellularDistance##distanceFunc##Single)(SIMDi seed,
1805
1805
SIMDf yd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,10 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1806
1806
SIMDf zd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,20 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1807
1807
\
1808
- SIMDf invMag = SIMDf_MUL (SIMDf_NUM (cellLength) , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1808
+ SIMDf invMag = SIMDf_MUL (cellJitter , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1809
1809
\
1810
1810
xd = SIMDf_MUL_ADD (xd, invMag, xcf);\
1811
1811
yd = SIMDf_MUL_ADD (yd, invMag, ycf);\
@@ -1825,11 +1825,11 @@ static SIMDf VECTORCALL FUNC(CellularDistance##distanceFunc##Single)(SIMDi seed,
1825
1825
xc = SIMDi_ADD (xc, SIMDi_NUM (xPrime));\
1826
1826
}\
1827
1827
\
1828
- return SIMDf_SUB ( distance, SIMDf_NUM ( 1 )) ;\
1828
+ return distance;\
1829
1829
}
1830
1830
1831
1831
#define CELLULAR_DISTANCE2_SINGLE (distanceFunc, returnFunc )\
1832
- static SIMDf VECTORCALL FUNC (Cellular##returnFunc##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, int index0, int index1)\
1832
+ static SIMDf VECTORCALL FUNC (Cellular##returnFunc##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, SIMDf cellJitter, int index0, int index1)\
1833
1833
{\
1834
1834
SIMDf distance[4 ] = {SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 )};\
1835
1835
\
@@ -1860,7 +1860,7 @@ static SIMDf VECTORCALL FUNC(Cellular##returnFunc##distanceFunc##Single)(SIMDi s
1860
1860
SIMDf yd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,10 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1861
1861
SIMDf zd = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,20 ), SIMDi_NUM (bit10Mask))), SIMDf_NUM (511_5));\
1862
1862
\
1863
- SIMDf invMag = SIMDf_MUL (SIMDf_NUM (cellLength) , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1863
+ SIMDf invMag = SIMDf_MUL (cellJitter , SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd, xd, SIMDf_MUL_ADD (yd, yd, SIMDf_MUL (zd, zd)))));\
1864
1864
\
1865
1865
xd = SIMDf_MUL_ADD (xd, invMag, xcf);\
1866
1866
yd = SIMDf_MUL_ADD (yd, invMag, ycf);\
@@ -1882,77 +1882,22 @@ static SIMDf VECTORCALL FUNC(Cellular##returnFunc##distanceFunc##Single)(SIMDi s
1882
1882
xc = SIMDi_ADD (xc, SIMDi_NUM (xPrime));\
1883
1883
}\
1884
1884
\
1885
- return SIMDf_SUB ( returnFunc##_RETURN (distance[index0], distance[index1]), SIMDf_NUM ( 1 ) );\
1885
+ return returnFunc##_RETURN (distance[index0], distance[index1]);\
1886
1886
}
1887
1887
1888
1888
#define CELLULAR_DISTANCE2CAVE_SINGLE (distanceFunc )\
1889
- static SIMDf VECTORCALL FUNC (CellularDistance2Cave##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, int index0, int index1)\
1889
+ static SIMDf VECTORCALL FUNC (CellularDistance2Cave##distanceFunc##Single)(SIMDi seed, SIMDf x, SIMDf y, SIMDf z, SIMDf cellJitter, int index0, int index1)\
1890
1890
{\
1891
- SIMDf distance0[FN_CELLULAR_INDEX_MAX+1 ] = {SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 )};\
1892
- SIMDf distance1[FN_CELLULAR_INDEX_MAX+1 ] = {SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 ),SIMDf_NUM (999999 )};\
1891
+ SIMDf c0 = FUNC (CellularDistance2Div##distanceFunc##Single)(seed, x, y, z, cellJitter, index0, index1);\
1893
1892
\
1894
- SIMDi xc = SIMDi_SUB (SIMDi_CONVERT_TO_INT (x), SIMDi_NUM (1 ));\
1895
- SIMDi ycBase = SIMDi_SUB (SIMDi_CONVERT_TO_INT (y), SIMDi_NUM (1 ));\
1896
- SIMDi zcBase = SIMDi_SUB (SIMDi_CONVERT_TO_INT (z), SIMDi_NUM (1 ));\
1897
- \
1898
- SIMDf xcf = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (xc), x);\
1899
- SIMDf ycfBase = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (ycBase), y);\
1900
- SIMDf zcfBase = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (zcBase), z);\
1893
+ x = SIMDf_ADD (x, SIMDf_NUM (0_5));\
1894
+ y = SIMDf_ADD (y, SIMDf_NUM (0_5));\
1895
+ z = SIMDf_ADD (z, SIMDf_NUM (0_5));\
1896
+ seed = SIMDi_ADD (seed, SIMDi_NUM (1 ));\
1901
1897
\
1902
- xc = SIMDi_MUL (xc, SIMDi_NUM (xPrime));\
1903
- ycBase = SIMDi_MUL (ycBase, SIMDi_NUM (yPrime));\
1904
- zcBase = SIMDi_MUL (zcBase, SIMDi_NUM (zPrime));\
1905
- \
1906
- for (int xi = 0 ; xi < 3 ; xi++)\
1907
- {\
1908
- SIMDf ycf = ycfBase;\
1909
- SIMDi yc = ycBase;\
1910
- for (int yi = 0 ; yi < 3 ; yi++)\
1911
- {\
1912
- SIMDf zcf = zcfBase;\
1913
- SIMDi zc = zcBase;\
1914
- for (int zi = 0 ; zi < 3 ; zi++)\
1915
- {\
1916
- SIMDi hash = FUNC (HashHB)(seed, xc, yc, zc);\
1917
- SIMDf xd0 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (hash, SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1918
- SIMDf yd0 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,5 ), SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1919
- SIMDf zd0 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,10 ), SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1920
- SIMDf xd1 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,15 ), SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1921
- SIMDf yd1 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,20 ), SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1922
- SIMDf zd1 = SIMDf_SUB (SIMDf_CONVERT_TO_FLOAT (SIMDi_AND (SIMDi_SHIFT_R (hash,25 ), SIMDi_NUM (bit5Mask))), SIMDf_NUM (15_5));\
1923
- \
1924
- SIMDf invMag0 = SIMDf_MUL (SIMDf_NUM (cellLength), SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd0, xd0, SIMDf_MUL_ADD (yd0, yd0, SIMDf_MUL (zd0, zd0)))));\
1925
- SIMDf invMag1 = SIMDf_MUL (SIMDf_NUM (cellLength), SIMDf_INV_SQRT (SIMDf_MUL_ADD (xd1, xd1, SIMDf_MUL_ADD (yd1, yd1, SIMDf_MUL (zd1, zd1)))));\
1926
- \
1927
- xd0 = SIMDf_MUL_ADD (xd0, invMag0, xcf);\
1928
- yd0 = SIMDf_MUL_ADD (yd0, invMag0, ycf);\
1929
- zd0 = SIMDf_MUL_ADD (zd0, invMag0, zcf);\
1930
- xd1 = SIMDf_MUL_ADD (xd1, invMag1, xcf);\
1931
- yd1 = SIMDf_MUL_ADD (yd1, invMag1, ycf);\
1932
- zd1 = SIMDf_MUL_ADD (zd1, invMag1, zcf);\
1933
- \
1934
- SIMDf newDistance0 = distanceFunc##_DISTANCE (xd0, yd0, zd0);\
1935
- SIMDf newDistance1 = distanceFunc##_DISTANCE (xd1, yd1, zd1);\
1936
- \
1937
- for (int i = index1; i > 0 ; i--)\
1938
- {\
1939
- distance0[i] = SIMDf_MAX (SIMDf_MIN (distance0[i], newDistance0), distance0[i - 1 ]); \
1940
- distance1[i] = SIMDf_MAX (SIMDf_MIN (distance1[i], newDistance1), distance1[i - 1 ]); \
1941
- }\
1942
- distance0[0 ] = SIMDf_MIN (distance0[0 ], newDistance0);\
1943
- distance1[0 ] = SIMDf_MIN (distance1[0 ], newDistance1);\
1944
- \
1945
- zcf = SIMDf_ADD (zcf, SIMDf_NUM (1 ));\
1946
- zc = SIMDi_ADD (zc, SIMDi_NUM (zPrime));\
1947
- }\
1948
- ycf = SIMDf_ADD (ycf, SIMDf_NUM (1 ));\
1949
- yc = SIMDi_ADD (yc, SIMDi_NUM (yPrime));\
1950
- }\
1951
- xcf = SIMDf_ADD (xcf, SIMDf_NUM (1 ));\
1952
- xc = SIMDi_ADD (xc, SIMDi_NUM (xPrime));\
1953
- }\
1898
+ SIMDf c1 = FUNC (CellularDistance2Div##distanceFunc##Single)(seed, x, y, z, cellJitter, index0, index1);\
1954
1899
\
1955
- return SIMDf_MIN (Distance2Div_RETURN (distance0[index0], distance0[index1]), Distance2Div_RETURN (distance1[index0], distance1[index1]) );\
1900
+ return SIMDf_MIN (c0,c1 );\
1956
1901
}
1957
1902
1958
1903
CELLULAR_VALUE_SINGLE (Euclidean)
@@ -1989,27 +1934,27 @@ CELLULAR_DISTANCE2CAVE_SINGLE(Natural)
1989
1934
switch (m_cellularDistanceFunction)\
1990
1935
{\
1991
1936
case Euclidean:\
1992
- SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF))\
1937
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, cellJitterV ))\
1993
1938
break ;\
1994
1939
case Manhattan:\
1995
- SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF))\
1940
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, cellJitterV ))\
1996
1941
break ;\
1997
1942
case Natural:\
1998
- SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF))\
1943
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, cellJitterV ))\
1999
1944
break ;\
2000
1945
}
2001
1946
2002
1947
#define CELLULAR_INDEX_MULTI (returnFunc )\
2003
1948
switch (m_cellularDistanceFunction)\
2004
1949
{\
2005
1950
case Euclidean:\
2006
- SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
1951
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2007
1952
break ;\
2008
1953
case Manhattan:\
2009
- SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
1954
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2010
1955
break ;\
2011
1956
case Natural:\
2012
- SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
1957
+ SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2013
1958
break ;\
2014
1959
}
2015
1960
@@ -2025,6 +1970,7 @@ void SIMD_LEVEL_CLASS::FillCellularSet(float* noiseSet, int xStart, int yStart,
2025
1970
SIMDf xFreqV = SIMDf_SET (scaleModifier * m_xScale);
2026
1971
SIMDf yFreqV = SIMDf_SET (scaleModifier * m_yScale);
2027
1972
SIMDf zFreqV = SIMDf_SET (scaleModifier * m_zScale);
1973
+ SIMDf cellJitterV = SIMDf_SET (m_cellularJitter);
2028
1974
2029
1975
NoiseLookupSettings nls;
2030
1976
@@ -2066,13 +2012,13 @@ void SIMD_LEVEL_CLASS::FillCellularSet(float* noiseSet, int xStart, int yStart,
2066
2012
switch (m_cellularDistanceFunction)
2067
2013
{
2068
2014
case Euclidean:
2069
- SET_BUILDER (result = FUNC (CellularLookupEuclideanSingle)(seedV, xF, yF, zF, nls))
2015
+ SET_BUILDER (result = FUNC (CellularLookupEuclideanSingle)(seedV, xF, yF, zF, cellJitterV, nls))
2070
2016
break ; \
2071
2017
case Manhattan:
2072
- SET_BUILDER (result = FUNC (CellularLookupManhattanSingle)(seedV, xF, yF, zF, nls))
2018
+ SET_BUILDER (result = FUNC (CellularLookupManhattanSingle)(seedV, xF, yF, zF, cellJitterV, nls))
2073
2019
break ; \
2074
2020
case Natural:
2075
- SET_BUILDER (result = FUNC (CellularLookupNaturalSingle)(seedV, xF, yF, zF, nls))
2021
+ SET_BUILDER (result = FUNC (CellularLookupNaturalSingle)(seedV, xF, yF, zF, cellJitterV, nls))
2076
2022
break ;
2077
2023
}
2078
2024
break ;
@@ -2084,27 +2030,27 @@ void SIMD_LEVEL_CLASS::FillCellularSet(float* noiseSet, int xStart, int yStart,
2084
2030
switch (m_cellularDistanceFunction)\
2085
2031
{\
2086
2032
case Euclidean:\
2087
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF))\
2033
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, cellJitterV ))\
2088
2034
break ;\
2089
2035
case Manhattan:\
2090
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF))\
2036
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, cellJitterV ))\
2091
2037
break ;\
2092
2038
case Natural:\
2093
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF))\
2039
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, cellJitterV ))\
2094
2040
break ;\
2095
2041
}
2096
2042
2097
2043
#define CELLULAR_INDEX_MULTI_VECTOR (returnFunc )\
2098
2044
switch (m_cellularDistanceFunction)\
2099
2045
{\
2100
2046
case Euclidean:\
2101
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2047
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##EuclideanSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2102
2048
break ;\
2103
2049
case Manhattan:\
2104
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2050
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##ManhattanSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2105
2051
break ;\
2106
2052
case Natural:\
2107
- VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2053
+ VECTOR_SET_BUILDER (result = FUNC (Cellular##returnFunc##NaturalSingle)(seedV, xF, yF, zF, cellJitterV, m_cellularDistanceIndex0, m_cellularDistanceIndex1))\
2108
2054
break ;\
2109
2055
}
2110
2056
@@ -2122,6 +2068,7 @@ void SIMD_LEVEL_CLASS::FillCellularSet(float* noiseSet, FastNoiseVectorSet* vect
2122
2068
SIMDf xOffsetV = SIMDf_MUL (SIMDf_SET (xOffset), xFreqV);
2123
2069
SIMDf yOffsetV = SIMDf_MUL (SIMDf_SET (yOffset), yFreqV);
2124
2070
SIMDf zOffsetV = SIMDf_MUL (SIMDf_SET (zOffset), zFreqV);
2071
+ SIMDf cellJitterV = SIMDf_SET (m_cellularJitter);
2125
2072
INIT_PERTURB_VALUES ();
2126
2073
2127
2074
int index = 0 ;
@@ -2166,13 +2113,13 @@ void SIMD_LEVEL_CLASS::FillCellularSet(float* noiseSet, FastNoiseVectorSet* vect
2166
2113
switch (m_cellularDistanceFunction)
2167
2114
{
2168
2115
case Euclidean:
2169
- VECTOR_SET_BUILDER (result = FUNC (CellularLookupEuclideanSingle)(seedV, xF, yF, zF, nls));
2116
+ VECTOR_SET_BUILDER (result = FUNC (CellularLookupEuclideanSingle)(seedV, xF, yF, zF, cellJitterV, nls));
2170
2117
break ;
2171
2118
case Manhattan:
2172
- VECTOR_SET_BUILDER (result = FUNC (CellularLookupManhattanSingle)(seedV, xF, yF, zF, nls));
2119
+ VECTOR_SET_BUILDER (result = FUNC (CellularLookupManhattanSingle)(seedV, xF, yF, zF, cellJitterV, nls));
2173
2120
break ;
2174
2121
case Natural:
2175
- VECTOR_SET_BUILDER (result = FUNC (CellularLookupNaturalSingle)(seedV, xF, yF, zF, nls));
2122
+ VECTOR_SET_BUILDER (result = FUNC (CellularLookupNaturalSingle)(seedV, xF, yF, zF, cellJitterV, nls));
2176
2123
break ;
2177
2124
}
2178
2125
break ;
0 commit comments