diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-02-23 12:15:35 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-06-22 14:28:01 +0300 |
commit | 1de0e13af619e405f351bf42924f819dc3a9bc44 (patch) | |
tree | d1174cd7d3b362d21a9dddfb178ae15b5d9cc048 /intern/cycles/kernel/kernel_shader.h | |
parent | fed101a7be119f2e0c4ed64d13fd65f7a1c16118 (diff) |
Cycles: remove __UV__ and __INSTANCING__ as kernel options
The kernel did not work correctly when these were disabled anyway. The
optimized BVH traversal for the no instances case was also only used on
the CPU, so no longer makes sense to keep.
Ref T73778
Depends on D8010
Maniphest Tasks: T73778
Differential Revision: https://developer.blender.org/D8011
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 36 |
1 files changed, 5 insertions, 31 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 9700aaba80f..535253bc762 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -63,10 +63,8 @@ ccl_device_noinline { PROFILING_INIT(kg, PROFILING_SHADER_SETUP); -#ifdef __INSTANCING__ sd->object = (isect->object == OBJECT_NONE) ? kernel_tex_fetch(__prim_object, isect->prim) : isect->object; -#endif sd->lamp = LAMP_NONE; sd->type = isect->type; @@ -82,10 +80,8 @@ ccl_device_noinline sd->prim = kernel_tex_fetch(__prim_index, isect->prim); sd->ray_length = isect->t; -#ifdef __UV__ sd->u = isect->u; sd->v = isect->v; -#endif #ifdef __HAIR__ if (sd->type & PRIMITIVE_ALL_CURVE) { @@ -125,17 +121,15 @@ ccl_device_noinline sd->flag |= kernel_tex_fetch(__shaders, (sd->shader & SHADER_MASK)).flags; -#ifdef __INSTANCING__ if (isect->object != OBJECT_NONE) { /* instance transform */ object_normal_transform_auto(kg, sd, &sd->N); object_normal_transform_auto(kg, sd, &sd->Ng); -# ifdef __DPDU__ +#ifdef __DPDU__ object_dir_transform_auto(kg, sd, &sd->dPdu); object_dir_transform_auto(kg, sd, &sd->dPdv); -# endif - } #endif + } /* backfacing test */ bool backfacing = (dot(sd->Ng, sd->I) < 0.0f); @@ -185,10 +179,8 @@ ccl_device_inline sd->prim = kernel_tex_fetch(__prim_index, isect->prim); sd->type = isect->type; -# ifdef __UV__ sd->u = isect->u; sd->v = isect->v; -# endif /* fetch triangle data */ if (sd->type == PRIMITIVE_TRIANGLE) { @@ -215,17 +207,15 @@ ccl_device_inline sd->flag |= kernel_tex_fetch(__shaders, (sd->shader & SHADER_MASK)).flags; -# ifdef __INSTANCING__ if (isect->object != OBJECT_NONE) { /* instance transform */ object_normal_transform_auto(kg, sd, &sd->N); object_normal_transform_auto(kg, sd, &sd->Ng); -# ifdef __DPDU__ +# ifdef __DPDU__ object_dir_transform_auto(kg, sd, &sd->dPdu); object_dir_transform_auto(kg, sd, &sd->dPdv); -# endif - } # endif + } /* backfacing test */ if (backfacing) { @@ -284,17 +274,13 @@ ccl_device_inline void shader_setup_from_sample(KernelGlobals *kg, else sd->type = PRIMITIVE_NONE; - /* primitive */ -#ifdef __INSTANCING__ + /* primitive */ sd->object = object; -#endif sd->lamp = LAMP_NONE; /* currently no access to bvh prim index for strand sd->prim*/ sd->prim = prim; -#ifdef __UV__ sd->u = u; sd->v = v; -#endif sd->time = time; sd->ray_length = t; @@ -330,23 +316,19 @@ ccl_device_inline void shader_setup_from_sample(KernelGlobals *kg, if (sd->shader & SHADER_SMOOTH_NORMAL) { sd->N = triangle_smooth_normal(kg, Ng, sd->prim, sd->u, sd->v); -#ifdef __INSTANCING__ if (!(sd->object_flag & SD_OBJECT_TRANSFORM_APPLIED)) { object_normal_transform_auto(kg, sd, &sd->N); } -#endif } /* dPdu/dPdv */ #ifdef __DPDU__ triangle_dPdudv(kg, sd->prim, &sd->dPdu, &sd->dPdv); -# ifdef __INSTANCING__ if (!(sd->object_flag & SD_OBJECT_TRANSFORM_APPLIED)) { object_dir_transform_auto(kg, sd, &sd->dPdu); object_dir_transform_auto(kg, sd, &sd->dPdv); } -# endif #endif } else { @@ -432,15 +414,11 @@ ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, sd->time = ray->time; sd->ray_length = 0.0f; -#ifdef __INSTANCING__ sd->object = OBJECT_NONE; -#endif sd->lamp = LAMP_NONE; sd->prim = PRIM_NONE; -#ifdef __UV__ sd->u = 0.0f; sd->v = 0.0f; -#endif #ifdef __DPDU__ /* dPdu/dPdv */ @@ -481,17 +459,13 @@ ccl_device_inline void shader_setup_from_volume(KernelGlobals *kg, ShaderData *s sd->time = ray->time; sd->ray_length = 0.0f; /* todo: can we set this to some useful value? */ -# ifdef __INSTANCING__ sd->object = OBJECT_NONE; /* todo: fill this for texture coordinates */ -# endif sd->lamp = LAMP_NONE; sd->prim = PRIM_NONE; sd->type = PRIMITIVE_NONE; -# ifdef __UV__ sd->u = 0.0f; sd->v = 0.0f; -# endif # ifdef __DPDU__ /* dPdu/dPdv */ |