diff options
author | Geraldine Chua <chua.gsk@gmail.com> | 2018-07-10 10:42:52 +0300 |
---|---|---|
committer | Geraldine Chua <chua.gsk@gmail.com> | 2018-07-10 10:42:52 +0300 |
commit | 028f648753c893639f5c1732360e4cf6eb551e71 (patch) | |
tree | 7ee0c3c41ea9f3f5e97c14de1313f7aee1cac338 /intern/cycles/kernel | |
parent | a93a9fb09bcfd6211f063255ccb11cfc15e013d1 (diff) |
Revert "Morton ordering for sparse grids."
This reverts commit a93a9fb09bcfd6211f063255ccb11cfc15e013d1.
Diffstat (limited to 'intern/cycles/kernel')
-rw-r--r-- | intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h b/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h index 64367b7fb84..a0d6b54245b 100644 --- a/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h +++ b/intern/cycles/kernel/kernels/cpu/kernel_cpu_image.h @@ -82,12 +82,12 @@ template<typename T> struct TextureInterpolator { static ccl_always_inline float4 read(const T *data, const int *grid_info, int x, int y, int z, - int bit_count, int ltw, int lth) + int tiw, int tih, int ltw, int lth) { int tix = x / TILE_SIZE, itix = x % TILE_SIZE, tiy = y / TILE_SIZE, itiy = y % TILE_SIZE, tiz = z / TILE_SIZE, itiz = z % TILE_SIZE; - int dense_index = compute_morton(tix, tiy, tiz, bit_count) * 2; + int dense_index = flatten(tix, tiy, tiz, tiw, tih) * 2; int sparse_index = grid_info[dense_index]; int dims = grid_info[dense_index + 1]; if(sparse_index < 0) { @@ -101,12 +101,12 @@ template<typename T> struct TextureInterpolator { static ccl_always_inline float4 read(const T *data, const int *grid_info, int index, int width, int height, int /*depth*/, - int bit_count, int ltw, int lth) + int tiw, int tih, int ltw, int lth) { int x = index % width; int y = (index / width) % height; int z = index / (width * height); - return read(data, grid_info, x, y, z, bit_count, ltw, lth); + return read(data, grid_info, x, y, z, tiw, tih, ltw, lth); } static ccl_always_inline int wrap_periodic(int x, int width) @@ -319,7 +319,8 @@ template<typename T> struct TextureInterpolator { const int *grid_info = (const int*)info.grid_info; if(grid_info) { - return read(data, grid_info, ix, iy, iz, info.bit_count, + return read(data, grid_info, ix, iy, iz, + info.tiled_width, info.tiled_height, info.last_tile_width, info.last_tile_height); } return read(data[flatten(ix, iy, iz, width, height)]); @@ -374,17 +375,18 @@ template<typename T> struct TextureInterpolator { const int *gi = (const int*)info.grid_info; if(gi) { - int bc = info.bit_count; + int tiw = info.tiled_width; + int tih = info.tiled_height; int ltw = info.last_tile_width; int lth = info.last_tile_height; - r = (1.0f - tz)*(1.0f - ty)*(1.0f - tx) * read(data, gi, ix, iy, iz, bc, ltw, lth); - r += (1.0f - tz)*(1.0f - ty)*tx * read(data, gi, nix, iy, iz, bc, ltw, lth); - r += (1.0f - tz)*ty*(1.0f - tx) * read(data, gi, ix, niy, iz, bc, ltw, lth); - r += (1.0f - tz)*ty*tx * read(data, gi, nix, niy, iz, bc, ltw, lth); - r += tz*(1.0f - ty)*(1.0f - tx) * read(data, gi, ix, iy, niz, bc, ltw, lth); - r += tz*(1.0f - ty)*tx * read(data, gi, nix, iy, niz, bc, ltw, lth); - r += tz*ty*(1.0f - tx) * read(data, gi, ix, niy, niz, bc, ltw, lth); - r += tz*ty*tx * read(data, gi, nix, niy, niz, bc, ltw, lth); + r = (1.0f - tz)*(1.0f - ty)*(1.0f - tx) * read(data, gi, ix, iy, iz, tiw, tih, ltw, lth); + r += (1.0f - tz)*(1.0f - ty)*tx * read(data, gi, nix, iy, iz, tiw, tih, ltw, lth); + r += (1.0f - tz)*ty*(1.0f - tx) * read(data, gi, ix, niy, iz, tiw, tih, ltw, lth); + r += (1.0f - tz)*ty*tx * read(data, gi, nix, niy, iz, tiw, tih, ltw, lth); + r += tz*(1.0f - ty)*(1.0f - tx) * read(data, gi, ix, iy, niz, tiw, tih, ltw, lth); + r += tz*(1.0f - ty)*tx * read(data, gi, nix, iy, niz, tiw, tih, ltw, lth); + r += tz*ty*(1.0f - tx) * read(data, gi, ix, niy, niz, tiw, tih, ltw, lth); + r += tz*ty*tx * read(data, gi, nix, niy, niz, tiw, tih, ltw, lth); } else { r = (1.0f - tz)*(1.0f - ty)*(1.0f - tx) * read(data[flatten(ix, iy, iz, width, height)]); @@ -416,7 +418,8 @@ template<typename T> struct TextureInterpolator { int width = info.width; int height = info.height; int depth = info.depth; - int bc = info.bit_count; + int tiw = info.tiled_width; + int tih = info.tiled_height; int ltw = info.last_tile_width; int lth = info.last_tile_height; int ix, iy, iz; @@ -489,7 +492,7 @@ template<typename T> struct TextureInterpolator { * let compiler to inline all the matrix multiplications. */ #define DATA(x, y, z) (gi ? \ - read(data, gi, xc[x] + yc[y] + zc[z], width, height, depth, bc, ltw, lth) : \ + read(data, gi, xc[x] + yc[y] + zc[z], width, height, depth, tiw, tih, ltw, lth) : \ read(data[xc[x] + yc[y] + zc[z]])) #define COL_TERM(col, row) \ (v[col] * (u[0] * DATA(0, col, row) + \ |