[Bf-blender-cvs] [5e0eed8958f] cycles_texture_cache: Merge remote-tracking branch 'origin/master' into cycles_texture_cache
Stefan Werner
noreply at git.blender.org
Wed Dec 5 15:25:50 CET 2018
Commit: 5e0eed8958f149df3c92cfdbc91861ff8bd418bd
Author: Stefan Werner
Date: Wed Dec 5 15:15:49 2018 +0100
Branches: cycles_texture_cache
https://developer.blender.org/rB5e0eed8958f149df3c92cfdbc91861ff8bd418bd
Merge remote-tracking branch 'origin/master' into cycles_texture_cache
===================================================================
===================================================================
diff --cc intern/cycles/kernel/kernel_shader.h
index 7d60ba28665,4b2e675bb21..131c74df474
--- a/intern/cycles/kernel/kernel_shader.h
+++ b/intern/cycles/kernel/kernel_shader.h
@@@ -146,36 -148,10 +148,39 @@@ ccl_device_noinline void shader_setup_f
differential_transfer(&sd->dP, ray->dP, ray->D, ray->dD, sd->Ng, isect->t);
differential_incoming(&sd->dI, ray->dD);
differential_dudv(&sd->du, &sd->dv, sd->dPdu, sd->dPdv, sd->dP, sd->Ng);
+# ifdef __DNDU__
+ if(sd->shader & SHADER_SMOOTH_NORMAL && sd->type & PRIMITIVE_TRIANGLE) {
+ // TODO stefan curves
+ /* dNdu/dNdv */
+ float3 dNdu, dNdv;
+ triangle_dNdudv(kg, sd->prim, &dNdu, &dNdv);
+ sd->dNdx = dNdu * sd->du.dx + dNdv * sd->dv.dx;
+ sd->dNdy = dNdu * sd->du.dy + dNdv * sd->dv.dy;
+
+
+ /* backfacing test */
+ bool backfacing = (dot(sd->Ng, sd->I) < 0.0f);
+ if(backfacing) {
+ sd->dNdx = -sd->dNdx;
+ sd->dNdy = -sd->dNdy;
+ }
+# ifdef __INSTANCING__
+ if(isect->object != OBJECT_NONE) {
+ /* instance transform */
+ object_dir_transform_auto(kg, sd, &sd->dNdx);
+ object_dir_transform_auto(kg, sd, &sd->dNdy);
+ }
+# endif /* __INSTANCING__ */
+ }
+ else {
+ sd->dNdx = make_float3(0.0f, 0.0f, 0.0f);
+ sd->dNdy = make_float3(0.0f, 0.0f, 0.0f);
+ }
+# endif /* __DNDU__ */
#endif
+
+ PROFILING_SHADER(sd->shader);
+ PROFILING_OBJECT(sd->object);
}
/* ShaderData setup from BSSRDF scatter */
@@@ -430,19 -358,15 +441,22 @@@ ccl_device_inline void shader_setup_fro
}
#ifdef __RAY_DIFFERENTIALS__
- /* no ray differentials here yet */
- sd->dP = differential3_zero();
- sd->dI = differential3_zero();
- sd->du = differential_zero();
- sd->dv = differential_zero();
+ if(dI) {
+ sd->dI = *dI;
+ differential_transfer(&sd->dP, sd->dP, I, *dI, Ng, t);
+ differential_dudv(&sd->du, &sd->dv, sd->dPdu, sd->dPdv, sd->dP, sd->Ng);
+ }
+ else {
+ sd->dP = differential3_zero();
+ sd->dI = differential3_zero();
+ sd->du = differential_zero();
+ sd->dv = differential_zero();
+ }
+
#endif
+
+ PROFILING_SHADER(sd->shader);
+ PROFILING_OBJECT(sd->object);
}
/* ShaderData setup for displacement */
More information about the Bf-blender-cvs
mailing list