diff options
author | Jeroen Bakker <jbakker> | 2020-11-23 18:38:06 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2020-11-23 18:42:48 +0300 |
commit | b0a9081883778d134d0e8e2b411cf2d3c1523770 (patch) | |
tree | e6e193c4600afb38ec026794ebc8df976b938ce5 /intern | |
parent | 8351760ed0816cf5e4ca9fb0f08be717f733d34a (diff) |
Fix T82884: Cycles Compilation Error OpenCL/NanoVDB
Recent changes introduced `acc` parameter into the texture read
functions. When nanovdb isn't enabled this leads to compilation errors
as the `acc` variable wasn't defined. OpenCL only compiles needed
features what made it more prominent.
Reviewed By: Patrick Mours
Differential Revision: https://developer.blender.org/D9629
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h index f39998299ef..79e3a16ef19 100644 --- a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h +++ b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h @@ -273,6 +273,9 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P y *= info->height; z *= info->depth; } +# define NANOVDB_ACCESS_POINTER &acc +#else +# define NANOVDB_ACCESS_POINTER NULL #endif if (interpolation == INTERPOLATION_CLOSEST) { @@ -282,7 +285,7 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P svm_image_texture_frac(y, &iy); svm_image_texture_frac(z, &iz); - return svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz); + return svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz); } else if (interpolation == INTERPOLATION_LINEAR) { /* Trilinear interpolation. */ @@ -293,15 +296,22 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P float4 r; r = (1.0f - tz) * (1.0f - ty) * (1.0f - tx) * - svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz); - r += (1.0f - tz) * (1.0f - ty) * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy, iz); - r += (1.0f - tz) * ty * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy + 1, iz); - r += (1.0f - tz) * ty * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy + 1, iz); - - r += tz * (1.0f - ty) * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy, iz + 1); - r += tz * (1.0f - ty) * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy, iz + 1); - r += tz * ty * (1.0f - tx) * svm_image_texture_read_3d(kg, id, &acc, ix, iy + 1, iz + 1); - r += tz * ty * tx * svm_image_texture_read_3d(kg, id, &acc, ix + 1, iy + 1, iz + 1); + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz); + r += (1.0f - tz) * (1.0f - ty) * tx * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy, iz); + r += (1.0f - tz) * ty * (1.0f - tx) * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy + 1, iz); + r += (1.0f - tz) * ty * tx * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy + 1, iz); + + r += tz * (1.0f - ty) * (1.0f - tx) * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy, iz + 1); + r += tz * (1.0f - ty) * tx * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy, iz + 1); + r += tz * ty * (1.0f - tx) * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix, iy + 1, iz + 1); + r += tz * ty * tx * + svm_image_texture_read_3d(kg, id, NANOVDB_ACCESS_POINTER, ix + 1, iy + 1, iz + 1); return r; } else { @@ -322,13 +332,14 @@ ccl_device float4 kernel_tex_image_interp_3d(KernelGlobals *kg, int id, float3 P for (int y = 0; y < 4; y++) { for (int x = 0; x < 4; x++) { float weight = u[x] * v[y] * w[z]; - r += weight * - svm_image_texture_read_3d(kg, id, &acc, ix + x - 1, iy + y - 1, iz + z - 1); + r += weight * svm_image_texture_read_3d( + kg, id, NANOVDB_ACCESS_POINTER, ix + x - 1, iy + y - 1, iz + z - 1); } } } return r; } +#undef NANOVDB_ACCESS_POINTER } #undef SET_CUBIC_SPLINE_WEIGHTS |