[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