Skip to content

Commit 91fac8c

Browse files
committed
Reduce amount of function calls and optimize simplex noise evaluation
1 parent 41de2c5 commit 91fac8c

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

include/cuda_noise.cuh

+6-11
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,9 @@ namespace cudaNoise {
155155

156156
// Device constants for noise
157157

158-
__device__ __constant__ float gradMap[12][3] = { { 1.0f, 1.0f, 0.0f },{ -1.0f, 1.0f, 0.0f },{ 1.0f, -1.0f, 0.0f },{ -1.0f, -1.0f, 0.0f },
158+
__device__ __constant__ float gradMap[16][3] = { { 1.0f, 1.0f, 0.0f },{ -1.0f, 1.0f, 0.0f },{ 1.0f, -1.0f, 0.0f },{ -1.0f, -1.0f, 0.0f },
159159
{ 1.0f, 0.0f, 1.0f },{ -1.0f, 0.0f, 1.0f },{ 1.0f, 0.0f, -1.0f },{ -1.0f, 0.0f, -1.0f },
160-
{ 0.0f, 1.0f, 1.0f },{ 0.0f, -1.0f, 1.0f },{ 0.0f, 1.0f, -1.0f },{ 0.0f, -1.0f, -1.0f } };
160+
{ 0.0f, 1.0f, 1.0f },{ 0.0f, -1.0f, 1.0f },{ 0.0f, 1.0f, -1.0f },{ 0.0f, -1.0f, -1.0f }};
161161

162162
// Helper functions for noise
163163

@@ -282,15 +282,10 @@ namespace cudaNoise {
282282
float y3 = y0 - 1.0f + 3.0f*G3;
283283
float z3 = z0 - 1.0f + 3.0f*G3;
284284

285-
// Work out the hashed gradient indices of the four simplex corners
286-
int ii = i & 255;
287-
int jj = j & 255;
288-
int kk = k & 255;
289-
290-
int gi0 = calcPerm12(seed + ii + calcPerm(seed + jj + calcPerm(seed + kk)));
291-
int gi1 = calcPerm12(seed + ii + i1 + calcPerm(seed + jj + j1 + calcPerm(seed + kk + k1)));
292-
int gi2 = calcPerm12(seed + ii + i2 + calcPerm(seed + jj + j2 + calcPerm(seed + kk + k2)));
293-
int gi3 = calcPerm12(seed + ii + 1 + calcPerm(seed + jj + 1 + calcPerm(seed + kk + 1)));
285+
int gi0 = calcPerm12(seed + (i * 607495) + (j * 359609) + (k * 654846));
286+
int gi1 = calcPerm12(seed + (i + i1) * 607495 + (j + j1) * 359609 + (k + k1) * 654846);
287+
int gi2 = calcPerm12(seed + (i + i2) * 607495 + (j + j2) * 359609 + (k + k2) * 654846);
288+
int gi3 = calcPerm12(seed + (i + 1) * 607495 + (j + 1) * 359609 + (k + 1) * 654846);
294289

295290
// Calculate the contribution from the four corners
296291
float t0 = 0.6f - x0 * x0 - y0 * y0 - z0 * z0;

0 commit comments

Comments
 (0)