[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