[Bf-blender-cvs] [e0fc155] temp-cycles-microdisplacement: Merge branch 'master' into microdisp

Mai Lavelle noreply at git.blender.org
Tue Apr 12 18:46:05 CEST 2016


Commit: e0fc155cd6cd8729fe03b315806c3a0ce1e60fdc
Author: Mai Lavelle
Date:   Tue Apr 12 05:54:21 2016 -0400
Branches: temp-cycles-microdisplacement
https://developer.blender.org/rBe0fc155cd6cd8729fe03b315806c3a0ce1e60fdc

Merge branch 'master' into microdisp

===================================================================



===================================================================

diff --cc intern/cycles/blender/addon/ui.py
index cc18818,c02e249..c4d3244
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@@ -689,10 -684,9 +689,10 @@@ class Cycles_PT_mesh_displacement(Cycle
          split = layout.split()
  
          col = split.column()
-         sub = col.column()
+         sub = col.column(align=True)
          sub.label(text="Displacment:")
          sub.prop(cdata, "displacement_method", text="")
 +        sub.prop(cdata, "displacement_scale", text="Scale")
  
          col = split.column()
          sub = col.column(align=True)
diff --cc intern/cycles/kernel/geom/geom_bvh_volume.h
index 0353819,f3edf85..4fbaf36
--- a/intern/cycles/kernel/geom/geom_bvh_volume.h
+++ b/intern/cycles/kernel/geom/geom_bvh_volume.h
@@@ -232,40 -231,6 +231,20 @@@ ccl_device bool BVH_FUNCTION_FULL_NAME(
  							break;
  						}
  #endif
- #if BVH_FEATURE(BVH_HAIR)
- 						case PRIMITIVE_CURVE:
- 						case PRIMITIVE_MOTION_CURVE: {
- 							/* intersect ray against primitive */
- 							for(; primAddr < primAddr2; primAddr++) {
- 								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
- 								/* only primitives from volume object */
- 								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
- 								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
- 								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
- 									continue;
- 								}
- 								if(kernel_data.curve.curveflags & CURVE_KN_INTERPOLATE)
- 									bvh_cardinal_curve_intersect(kg, isect, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								else
- 									bvh_curve_intersect(kg, isect, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 							}
- 							break;
- 						}
- #endif
 +						case PRIMITIVE_SUBPATCH: {
 +							/* intersect ray against primitive */
 +							for(; primAddr < primAddr2; primAddr++) {
 +								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
 +								/* only primitives from volume object */
 +								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
 +								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
 +								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
 +									continue;
 +								}
 +								subpatch_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr);
 +							}
 +							break;
 +						}
  						default: {
  							break;
  						}
diff --cc intern/cycles/kernel/geom/geom_bvh_volume_all.h
index 53d8a205,ec83721..b8b01d0
--- a/intern/cycles/kernel/geom/geom_bvh_volume_all.h
+++ b/intern/cycles/kernel/geom/geom_bvh_volume_all.h
@@@ -283,81 -282,6 +282,38 @@@ ccl_device uint BVH_FUNCTION_FULL_NAME(
  							break;
  						}
  #endif  /* BVH_MOTION */
- #if BVH_FEATURE(BVH_HAIR)
- 						case PRIMITIVE_CURVE:
- 						case PRIMITIVE_MOTION_CURVE: {
- 							/* intersect ray against primitive */
- 							for(; primAddr < primAddr2; primAddr++) {
- 								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
- 								/* only primitives from volume object */
- 								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
- 								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
- 								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
- 									continue;
- 								}
- 								if(kernel_data.curve.curveflags & CURVE_KN_INTERPOLATE)
- 									hit = bvh_cardinal_curve_intersect(kg, isect_array, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								else
- 									hit = bvh_curve_intersect(kg, isect_array, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								if(hit) {
- 									/* Move on to next entry in intersections array. */
- 									isect_array++;
- 									num_hits++;
- #  if BVH_FEATURE(BVH_INSTANCING)
- 									num_hits_in_instance++;
- #  endif
- 									isect_array->t = isect_t;
- 									if(num_hits == max_hits) {
- #  if BVH_FEATURE(BVH_INSTANCING)
- #    if BVH_FEATURE(BVH_MOTION)
- 										float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
- #    else
- 										Transform itfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
- 										float t_fac = 1.0f / len(transform_direction(&itfm, dir));
- #    endif
- 										for(int i = 0; i < num_hits_in_instance; i++) {
- 											(isect_array-i-1)->t *= t_fac;
- 										}
- #  endif  /* BVH_FEATURE(BVH_INSTANCING) */
- 										return num_hits;
- 									}
- 								}
- 							}
- 							break;
- 						}
- #endif  /* BVH_HAIR */
 +						case PRIMITIVE_SUBPATCH: {
 +							/* intersect ray against primitive */
 +							for(; primAddr < primAddr2; primAddr++) {
 +								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
 +								/* only primitives from volume object */
 +								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
 +								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
 +								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
 +									continue;
 +								}
 +
 +#if BVH_FEATURE(BVH_INSTANCING)
 +#  if !BVH_FEATURE(BVH_MOTION)
 +								Transform ob_itfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
 +#  endif
 +								hit = subpatch_intersect_volume_all(kg, &isect_precalc, &isect_array,
 +								                                    max_hits, &num_hits, &num_hits_in_instance,
 +								                                    isect_t, P, dir, visibility, &ob_itfm,
 +								                                    object, primAddr);
 +#else
 +								hit = subpatch_intersect_volume_all(kg, &isect_precalc, &isect_array,
 +								                                    max_hits, &num_hits, NULL,
 +								                                    isect_t, P, dir, visibility, NULL,
 +								                                    object, primAddr);
 +#endif
 +
 +								if(hit) {
 +									return num_hits;
 +								}
 +							}
 +							break;
 +						}
  						default: {
  							break;
  						}
diff --cc intern/cycles/kernel/geom/geom_qbvh_volume.h
index 6931ea8,ab2e530..f6d1f8d8
--- a/intern/cycles/kernel/geom/geom_qbvh_volume.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_volume.h
@@@ -249,40 -248,6 +248,20 @@@ ccl_device bool BVH_FUNCTION_FULL_NAME(
  							break;
  						}
  #endif
- #if BVH_FEATURE(BVH_HAIR)
- 						case PRIMITIVE_CURVE:
- 						case PRIMITIVE_MOTION_CURVE: {
- 							for(; primAddr < primAddr2; primAddr++) {
- 								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
- 								/* Only primitives from volume object. */
- 								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
- 								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
- 								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
- 									continue;
- 								}
- 								/* Intersect ray against primitive. */
- 								if(kernel_data.curve.curveflags & CURVE_KN_INTERPOLATE)
- 									bvh_cardinal_curve_intersect(kg, isect, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								else
- 									bvh_curve_intersect(kg, isect, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 							}
- 							break;
- 						}
- #endif
 +						case PRIMITIVE_SUBPATCH: {
 +							for(; primAddr < primAddr2; primAddr++) {
 +								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
 +								/* Only primitives from volume object. */
 +								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
 +								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
 +								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
 +									continue;
 +								}
 +								/* Intersect ray against primitive. */
 +								subpatch_intersect(kg, &isect_precalc, isect, P, dir, visibility, object, primAddr);
 +							}
 +							break;
 +						}
  					}
  				}
  #if BVH_FEATURE(BVH_INSTANCING)
diff --cc intern/cycles/kernel/geom/geom_qbvh_volume_all.h
index 0b8467c,5546471..52ecb03
--- a/intern/cycles/kernel/geom/geom_qbvh_volume_all.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_volume_all.h
@@@ -300,81 -299,6 +299,38 @@@ ccl_device uint BVH_FUNCTION_FULL_NAME(
  							break;
  						}
  #endif
- #if BVH_FEATURE(BVH_HAIR)
- 						case PRIMITIVE_CURVE:
- 						case PRIMITIVE_MOTION_CURVE: {
- 							for(; primAddr < primAddr2; primAddr++) {
- 								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
- 								/* Only primitives from volume object. */
- 								uint tri_object = (object == OBJECT_NONE)? kernel_tex_fetch(__prim_object, primAddr): object;
- 								int object_flag = kernel_tex_fetch(__object_flag, tri_object);
- 								if((object_flag & SD_OBJECT_HAS_VOLUME) == 0) {
- 									continue;
- 								}
- 								/* Intersect ray against primitive. */
- 								if(kernel_data.curve.curveflags & CURVE_KN_INTERPOLATE)
- 									hit = bvh_cardinal_curve_intersect(kg, isect_array, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								else
- 									hit = bvh_curve_intersect(kg, isect_array, P, dir, visibility, object, primAddr, ray->time, type, NULL, 0, 0);
- 								if(hit) {
- 									/* Move on to next entry in intersections array. */
- 									isect_array++;
- 									num_hits++;
- #  if BVH_FEATURE(BVH_INSTANCING)
- 									num_hits_in_instance++;
- #  endif
- 									isect_array->t = isect_t;
- 									if(num_hits == max_hits) {
- #  if BVH_FEATURE(BVH_INSTANCING)
- #    if BVH_FEATURE(BVH_MOTION)
- 										float t_fac = 1.0f / len(transform_direction(&ob_itfm, dir));
- #    else
- 										Transform itfm = object_fetch_transform(kg, object, OBJECT_INVERSE_TRANSFORM);
- 										float t_fac = 1.0f / len(transform_direction(&itfm, dir));
- #    endif
- 										for(int i = 0; i < num_hits_in_instance; i++) {
- 											(isect_array-i-1)->t *= t_fac;
- 										}
- #  endif  /* BVH_FEATURE(BVH_INSTANCING) */
- 										return num_hits;
- 									}
- 								}
- 							}
- 							break;
- 						}
- #endif  /* BVH_HAIR *

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list