[Bf-blender-cvs] [1f394f2] temp-cycles-microdisplacement: Add a preprocessor flag for all the kernel changes

Lukas Stockner noreply at git.blender.org
Tue Apr 12 18:46:08 CEST 2016


Commit: 1f394f294f70c433f3b0aa78008df4f0dcab0fc8
Author: Lukas Stockner
Date:   Mon Apr 11 15:58:52 2016 +0200
Branches: temp-cycles-microdisplacement
https://developer.blender.org/rB1f394f294f70c433f3b0aa78008df4f0dcab0fc8

Add a preprocessor flag for all the kernel changes

This way, CUDA and OpenCL continue to work (still without micropolygon support, though).

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

M	intern/cycles/blender/blender_mesh.cpp
M	intern/cycles/kernel/geom/geom.h
M	intern/cycles/kernel/geom/geom_bvh_shadow.h
M	intern/cycles/kernel/geom/geom_bvh_subsurface.h
M	intern/cycles/kernel/geom/geom_bvh_traversal.h
M	intern/cycles/kernel/geom/geom_bvh_volume.h
M	intern/cycles/kernel/geom/geom_bvh_volume_all.h
M	intern/cycles/kernel/geom/geom_cache.cpp
M	intern/cycles/kernel/geom/geom_primitive.h
M	intern/cycles/kernel/geom/geom_qbvh_shadow.h
M	intern/cycles/kernel/geom/geom_qbvh_subsurface.h
M	intern/cycles/kernel/geom/geom_qbvh_traversal.h
M	intern/cycles/kernel/geom/geom_qbvh_volume.h
M	intern/cycles/kernel/geom/geom_qbvh_volume_all.h
M	intern/cycles/kernel/kernel_bake.h
M	intern/cycles/kernel/kernel_shader.h
M	intern/cycles/kernel/kernel_subsurface.h
M	intern/cycles/kernel/kernel_types.h
M	intern/cycles/kernel/svm/svm_wireframe.h

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

diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 4130ccc..e427463 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -843,7 +843,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object& b_ob,
 			if(render_layer.use_surfaces && !hide_tris) {
 				mesh->displacement_scale = RNA_float_get(&cmesh, "displacement_scale");
 
-				if(cmesh.data && experimental && RNA_enum_get(&cmesh, "subdivision_type") != 0 &&
+				if(cmesh.data && is_cpu && experimental && RNA_enum_get(&cmesh, "subdivision_type") != 0 &&
 						(!preview || RNA_boolean_get(&cmesh, "preview_displacement")))
 				{
 					create_subd_mesh(scene, mesh, b_ob, b_mesh, &cmesh, used_shaders, preview);
diff --git a/intern/cycles/kernel/geom/geom.h b/intern/cycles/kernel/geom/geom.h
index 3abcbfd..878d415 100644
--- a/intern/cycles/kernel/geom/geom.h
+++ b/intern/cycles/kernel/geom/geom.h
@@ -44,9 +44,13 @@
 #include "geom_motion_curve.h"
 #include "geom_curve.h"
 #include "geom_volume.h"
-#include "geom_cache.h"
-#include "geom_cache_triangle.h"
-#include "geom_subpatch.h"
+
+#ifdef __MICRODISPLACEMENT__
+#  include "geom_cache.h"
+#  include "geom_cache_triangle.h"
+#  include "geom_subpatch.h"
+#endif /* __MICRODISPLACEMENT__ */
+
 #include "geom_primitive.h"
 #include "geom_bvh.h"
 
diff --git a/intern/cycles/kernel/geom/geom_bvh_shadow.h b/intern/cycles/kernel/geom/geom_bvh_shadow.h
index c2623a8..7239bb2 100644
--- a/intern/cycles/kernel/geom/geom_bvh_shadow.h
+++ b/intern/cycles/kernel/geom/geom_bvh_shadow.h
@@ -245,6 +245,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 								break;
 							}
 #endif
+#ifdef __MICRODISPLACEMENT__
 							case PRIMITIVE_SUBPATCH: {
 								hit = subpatch_intersect_shadow(kg, &isect_precalc, &isect_array, max_hits, num_hits, isect_t, P, dir, object, primAddr);
 								/* shadow ray early termination */
@@ -253,6 +254,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 								}
 								break;
 							}
+#endif /* __MICRODISPLACEMENT__ */
 							default: {
 								hit = false;
 								break;
diff --git a/intern/cycles/kernel/geom/geom_bvh_subsurface.h b/intern/cycles/kernel/geom/geom_bvh_subsurface.h
index cac45c5..a1027dc 100644
--- a/intern/cycles/kernel/geom/geom_bvh_subsurface.h
+++ b/intern/cycles/kernel/geom/geom_bvh_subsurface.h
@@ -246,6 +246,7 @@ ccl_device void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 						break;
 					}
 #endif
+#ifdef __MICRODISPLACEMENT__
 					case PRIMITIVE_SUBPATCH: {
 						/* intersect ray against primitive */
 						for(; primAddr < primAddr2; primAddr++) {
@@ -263,6 +264,7 @@ ccl_device void BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 						}
 						break;
 					}
+#endif /* __MICRODISPLACEMENT__ */
 					default: {
 						break;
 					}
diff --git a/intern/cycles/kernel/geom/geom_bvh_traversal.h b/intern/cycles/kernel/geom/geom_bvh_traversal.h
index fee17e1..3781558 100644
--- a/intern/cycles/kernel/geom/geom_bvh_traversal.h
+++ b/intern/cycles/kernel/geom/geom_bvh_traversal.h
@@ -334,6 +334,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							break;
 						}
 #endif  /* BVH_FEATURE(BVH_HAIR) */
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							for(; primAddr < primAddr2; primAddr++) {
 #if defined(__KERNEL_DEBUG__)
@@ -354,6 +355,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							}
 							break;
 						}
+#endif /* __MICRODISPLACEMENT__ */
 					}
 				}
 #if BVH_FEATURE(BVH_INSTANCING)
diff --git a/intern/cycles/kernel/geom/geom_bvh_volume.h b/intern/cycles/kernel/geom/geom_bvh_volume.h
index 4fbaf36..e80f37c 100644
--- a/intern/cycles/kernel/geom/geom_bvh_volume.h
+++ b/intern/cycles/kernel/geom/geom_bvh_volume.h
@@ -231,6 +231,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							break;
 						}
 #endif
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							/* intersect ray against primitive */
 							for(; primAddr < primAddr2; primAddr++) {
@@ -245,6 +246,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							}
 							break;
 						}
+#endif /* __MICRODISPLACEMENT__ */
 						default: {
 							break;
 						}
diff --git a/intern/cycles/kernel/geom/geom_bvh_volume_all.h b/intern/cycles/kernel/geom/geom_bvh_volume_all.h
index b8b01d0..799a45a 100644
--- a/intern/cycles/kernel/geom/geom_bvh_volume_all.h
+++ b/intern/cycles/kernel/geom/geom_bvh_volume_all.h
@@ -282,6 +282,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							break;
 						}
 #endif  /* BVH_MOTION */
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							/* intersect ray against primitive */
 							for(; primAddr < primAddr2; primAddr++) {
@@ -314,6 +315,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(BVH)(KernelGlobals *kg,
 							}
 							break;
 						}
+#endif /* __MICRODISPLACEMENT__ */
 						default: {
 							break;
 						}
diff --git a/intern/cycles/kernel/geom/geom_cache.cpp b/intern/cycles/kernel/geom/geom_cache.cpp
index af5b529..4433b12 100644
--- a/intern/cycles/kernel/geom/geom_cache.cpp
+++ b/intern/cycles/kernel/geom/geom_cache.cpp
@@ -32,6 +32,12 @@
 
 #include "geom/geom.h"
 
+#ifndef __MICRODISPLACEMENT__
+#include "geom_cache.h"
+#include "geom_cache_triangle.h"
+#include "geom_subpatch.h"
+#endif
+
 #include "kernel_accumulate.h"
 #include "kernel_shader.h"
 
@@ -315,5 +321,3 @@ void geom_cache_sample_subpatch_vert_displacement(KernelGlobals *kg, int object,
 }
 
 CCL_NAMESPACE_END
-
-
diff --git a/intern/cycles/kernel/geom/geom_primitive.h b/intern/cycles/kernel/geom/geom_primitive.h
index 5033535..73c9b4a 100644
--- a/intern/cycles/kernel/geom/geom_primitive.h
+++ b/intern/cycles/kernel/geom/geom_primitive.h
@@ -38,9 +38,11 @@ ccl_device float primitive_attribute_float(KernelGlobals *kg, const ShaderData *
 		return volume_attribute_float(kg, sd, elem, offset, dx, dy);
 	}
 #endif
+#ifdef __MICRODISPLACEMENT__
 	else if(ccl_fetch(sd, type) & PRIMITIVE_CACHE_TRIANGLE) {
 		return cache_triangle_attribute_float(kg, sd, elem, offset, dx, dy);
 	}
+#endif /* __MICRODISPLACEMENT__ */
 	else {
 		if(dx) *dx = 0.0f;
 		if(dy) *dy = 0.0f;
@@ -63,9 +65,11 @@ ccl_device float3 primitive_attribute_float3(KernelGlobals *kg, const ShaderData
 		return volume_attribute_float3(kg, sd, elem, offset, dx, dy);
 	}
 #endif
+#ifdef __MICRODISPLACEMENT__
 	else if(ccl_fetch(sd, type) & PRIMITIVE_CACHE_TRIANGLE) {
 		return cache_triangle_attribute_float3(kg, sd, elem, offset, dx, dy);
 	}
+#endif /* __MICRODISPLACEMENT__ */
 	else {
 		if(dx) *dx = make_float3(0.0f, 0.0f, 0.0f);
 		if(dy) *dy = make_float3(0.0f, 0.0f, 0.0f);
diff --git a/intern/cycles/kernel/geom/geom_qbvh_shadow.h b/intern/cycles/kernel/geom/geom_qbvh_shadow.h
index 1ddfa8b..e22137f 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_shadow.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_shadow.h
@@ -260,6 +260,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 								break;
 							}
 #endif
+#ifdef __MICRODISPLACEMENT__
 							case PRIMITIVE_SUBPATCH: {
 								hit = subpatch_intersect_shadow(kg, &isect_precalc, &isect_array, max_hits, num_hits, isect_t, P, dir, object, primAddr);
 								/* shadow ray early termination */
@@ -268,6 +269,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 								}
 								break;
 							}
+#endif /* __MICRODISPLACEMENT__ */
 							default: {
 								hit = false;
 								break;
diff --git a/intern/cycles/kernel/geom/geom_qbvh_subsurface.h b/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
index 40d2536..fc96682 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_subsurface.h
@@ -263,6 +263,7 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 						break;
 					}
 #endif
+#ifdef __MICRODISPLACEMENT__
 					case PRIMITIVE_SUBPATCH: {
 						/* Intersect ray against primitive, */
 						for(; primAddr < primAddr2; primAddr++) {
@@ -280,6 +281,7 @@ ccl_device void BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 						}
 						break;
 					}
+#endif /* __MICRODISPLACEMENT__ */
 					default:
 						break;
 				}
diff --git a/intern/cycles/kernel/geom/geom_qbvh_traversal.h b/intern/cycles/kernel/geom/geom_qbvh_traversal.h
index 441ad4b..33f9efe 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_traversal.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_traversal.h
@@ -348,6 +348,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 							break;
 						}
 #endif  /* BVH_FEATURE(BVH_HAIR) */
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							for(; primAddr < primAddr2; primAddr++) {
 #if defined(__KERNEL_DEBUG__)
@@ -363,6 +364,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 							}
 							break;
 						}
+#endif /* __MICRODISPLACEMENT__ */
 					}
 				}
 #if BVH_FEATURE(BVH_INSTANCING)
diff --git a/intern/cycles/kernel/geom/geom_qbvh_volume.h b/intern/cycles/kernel/geom/geom_qbvh_volume.h
index f6d1f8d8..9418ac6 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_volume.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_volume.h
@@ -248,6 +248,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 							break;
 						}
 #endif
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							for(; primAddr < primAddr2; primAddr++) {
 								kernel_assert(kernel_tex_fetch(__prim_type, primAddr) == type);
@@ -262,6 +263,7 @@ ccl_device bool BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 							}
 							break;
 						}
+#endif /* __MICRODISPLACEMENT__ */
 					}
 				}
 #if BVH_FEATURE(BVH_INSTANCING)
diff --git a/intern/cycles/kernel/geom/geom_qbvh_volume_all.h b/intern/cycles/kernel/geom/geom_qbvh_volume_all.h
index 52ecb03..c6f6300 100644
--- a/intern/cycles/kernel/geom/geom_qbvh_volume_all.h
+++ b/intern/cycles/kernel/geom/geom_qbvh_volume_all.h
@@ -299,6 +299,7 @@ ccl_device uint BVH_FUNCTION_FULL_NAME(QBVH)(KernelGlobals *kg,
 							break;
 						}
 #endif
+#ifdef __MICRODISPLACEMENT__
 						case PRIMITIVE_SUBPATCH: {
 							/* intersect ray against primit

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list