Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/svm/svm_noise.h
| Show First 20 Lines • Show All 324 Lines • ▼ Show 20 Lines | |||||
| * v1 (0, 1) | * v1 (0, 1) | ||||
| * v2 (1, 0) (0, 1, 0, 1) = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(V, V + 1)) | * v2 (1, 0) (0, 1, 0, 1) = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(V, V + 1)) | ||||
| * v3 (1, 1) ^ | * v3 (1, 1) ^ | ||||
| * | |__________| (0, 0, 1, 1) = shuffle<0, 0, 0, 0>(V, V + 1) | * | |__________| (0, 0, 1, 1) = shuffle<0, 0, 0, 0>(V, V + 1) | ||||
| * | ^ | * | ^ | ||||
| * |__________________________| | * |__________________________| | ||||
| * | * | ||||
| */ | */ | ||||
| ccl_device_noinline float perlin_2d(float x, float y) | ccl_device_noinline_cpu float perlin_2d(float x, float y) | ||||
| { | { | ||||
| ssei XY; | ssei XY; | ||||
| ssef fxy = floorfrac(ssef(x, y, 0.0f, 0.0f), &XY); | ssef fxy = floorfrac(ssef(x, y, 0.0f, 0.0f), &XY); | ||||
| ssef uv = fade(fxy); | ssef uv = fade(fxy); | ||||
| ssei XY1 = XY + 1; | ssei XY1 = XY + 1; | ||||
| ssei X = shuffle<0, 0, 0, 0>(XY, XY1); | ssei X = shuffle<0, 0, 0, 0>(XY, XY1); | ||||
| ssei Y = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(XY, XY1)); | ssei Y = shuffle<0, 2, 0, 2>(shuffle<1, 1, 1, 1>(XY, XY1)); | ||||
| ▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | |||||
| * | * | ||||
| * Point Offset from v0 | * Point Offset from v0 | ||||
| * v4 (1, 0, 0) | * v4 (1, 0, 0) | ||||
| * v5 (1, 0, 1) | * v5 (1, 0, 1) | ||||
| * v6 (1, 1, 0) | * v6 (1, 1, 0) | ||||
| * v7 (1, 1, 1) | * v7 (1, 1, 1) | ||||
| * | * | ||||
| */ | */ | ||||
| ccl_device_noinline float perlin_3d(float x, float y, float z) | ccl_device_noinline_cpu float perlin_3d(float x, float y, float z) | ||||
| { | { | ||||
| ssei XYZ; | ssei XYZ; | ||||
| ssef fxyz = floorfrac(ssef(x, y, z, 0.0f), &XYZ); | ssef fxyz = floorfrac(ssef(x, y, z, 0.0f), &XYZ); | ||||
| ssef uvw = fade(fxyz); | ssef uvw = fade(fxyz); | ||||
| ssei XYZ1 = XYZ + 1; | ssei XYZ1 = XYZ + 1; | ||||
| ssei Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1); | ssei Y = shuffle<1, 1, 1, 1>(XYZ, XYZ1); | ||||
| ssei Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1)); | ssei Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZ, XYZ1)); | ||||
| Show All 37 Lines | |||||
| * | * | ||||
| * Point Offset from v0 | * Point Offset from v0 | ||||
| * v12 (1, 0, 0, 1) | * v12 (1, 0, 0, 1) | ||||
| * v13 (1, 0, 1, 1) | * v13 (1, 0, 1, 1) | ||||
| * v14 (1, 1, 0, 1) | * v14 (1, 1, 0, 1) | ||||
| * v15 (1, 1, 1, 1) | * v15 (1, 1, 1, 1) | ||||
| * | * | ||||
| */ | */ | ||||
| ccl_device_noinline float perlin_4d(float x, float y, float z, float w) | ccl_device_noinline_cpu float perlin_4d(float x, float y, float z, float w) | ||||
| { | { | ||||
| ssei XYZW; | ssei XYZW; | ||||
| ssef fxyzw = floorfrac(ssef(x, y, z, w), &XYZW); | ssef fxyzw = floorfrac(ssef(x, y, z, w), &XYZW); | ||||
| ssef uvws = fade(fxyzw); | ssef uvws = fade(fxyzw); | ||||
| ssei XYZW1 = XYZW + 1; | ssei XYZW1 = XYZW + 1; | ||||
| ssei Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1); | ssei Y = shuffle<1, 1, 1, 1>(XYZW, XYZW1); | ||||
| ssei Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1)); | ssei Z = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(XYZW, XYZW1)); | ||||
| ▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | |||||
| * v5 (1, 0, 1) (0, 1, 0, 1) = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(V, V + 1)) | * v5 (1, 0, 1) (0, 1, 0, 1) = shuffle<0, 2, 0, 2>(shuffle<2, 2, 2, 2>(V, V + 1)) | ||||
| * v6 (1, 1, 0) ^ | * v6 (1, 1, 0) ^ | ||||
| * v7 (1, 1, 1) | | * v7 (1, 1, 1) | | ||||
| * | |__________| (0, 0, 1, 1) = shuffle<1, 1, 1, 1>(V, V + 1) | * | |__________| (0, 0, 1, 1) = shuffle<1, 1, 1, 1>(V, V + 1) | ||||
| * | ^ | * | ^ | ||||
| * |__________________________| | * |__________________________| | ||||
| * | * | ||||
| */ | */ | ||||
| ccl_device_noinline float perlin_3d(float x, float y, float z) | ccl_device_noinline_cpu float perlin_3d(float x, float y, float z) | ||||
| { | { | ||||
| ssei XYZ; | ssei XYZ; | ||||
| ssef fxyz = floorfrac(ssef(x, y, z, 0.0f), &XYZ); | ssef fxyz = floorfrac(ssef(x, y, z, 0.0f), &XYZ); | ||||
| ssef uvw = fade(fxyz); | ssef uvw = fade(fxyz); | ||||
| ssei XYZ1 = XYZ + 1; | ssei XYZ1 = XYZ + 1; | ||||
| ssei X = shuffle<0>(XYZ); | ssei X = shuffle<0>(XYZ); | ||||
| ssei X1 = shuffle<0>(XYZ1); | ssei X1 = shuffle<0>(XYZ1); | ||||
| Show All 35 Lines | |||||
| * v10 (0, 1, 0, 1) | * v10 (0, 1, 0, 1) | ||||
| * v11 (0, 1, 1, 1) | * v11 (0, 1, 1, 1) | ||||
| * v12 (1, 0, 0, 1) | * v12 (1, 0, 0, 1) | ||||
| * v13 (1, 0, 1, 1) | * v13 (1, 0, 1, 1) | ||||
| * v14 (1, 1, 0, 1) | * v14 (1, 1, 0, 1) | ||||
| * v15 (1, 1, 1, 1) | * v15 (1, 1, 1, 1) | ||||
| * | * | ||||
| */ | */ | ||||
| ccl_device_noinline float perlin_4d(float x, float y, float z, float w) | ccl_device_noinline_cpu float perlin_4d(float x, float y, float z, float w) | ||||
| { | { | ||||
| ssei XYZW; | ssei XYZW; | ||||
| ssef fxyzw = floorfrac(ssef(x, y, z, w), &XYZW); | ssef fxyzw = floorfrac(ssef(x, y, z, w), &XYZW); | ||||
| ssef uvws = fade(fxyzw); | ssef uvws = fade(fxyzw); | ||||
| ssei XYZW1 = XYZW + 1; | ssei XYZW1 = XYZW + 1; | ||||
| ssei X = shuffle<0>(XYZW); | ssei X = shuffle<0>(XYZW); | ||||
| ssei X1 = shuffle<0>(XYZW1); | ssei X1 = shuffle<0>(XYZW1); | ||||
| ▲ Show 20 Lines • Show All 94 Lines • Show Last 20 Lines | |||||