[Bf-blender-cvs] [1af253a] cycles_kernel_split: Use kernel_shaderdata_vars.h for ShaderData decl

varunsundar08 noreply at git.blender.org
Tue May 5 09:17:22 CEST 2015


Commit: 1af253ada44dceb8a4042f2e27bced5dc8db4ece
Author: varunsundar08
Date:   Tue May 5 03:40:26 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rB1af253ada44dceb8a4042f2e27bced5dc8db4ece

Use kernel_shaderdata_vars.h for ShaderData decl

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

M	intern/cycles/kernel/CMakeLists.txt
M	intern/cycles/kernel/kernel_shaderdata_vars.h
M	intern/cycles/kernel/kernel_types.h

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

diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index a770ba5..b2cef47 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -54,6 +54,7 @@ set(SRC_HEADERS
 	kernel_queues.h
 	kernel_random.h
 	kernel_shader.h
+	kernel_shaderdata_vars.h
 	kernel_shadow.h
 	kernel_split.h
 	kernel_subsurface.h
diff --git a/intern/cycles/kernel/kernel_shaderdata_vars.h b/intern/cycles/kernel/kernel_shaderdata_vars.h
index 5eb1201..3e21871 100644
--- a/intern/cycles/kernel/kernel_shaderdata_vars.h
+++ b/intern/cycles/kernel/kernel_shaderdata_vars.h
@@ -20,81 +20,84 @@
 #ifndef SD_CLOSURE_VAR
 #define SD_CLOSURE_VAR(type, what, max_closure)
 #endif
+#ifndef MAX_CLOSURE
+#define MAX_CLOSURE 1
+#endif
 
 /* position */
-SD_VAR(float3, P);
+SD_VAR(float3, P)
 /* smooth normal for shading */
-SD_VAR(float3, N);
+SD_VAR(float3, N)
 /* true geometric normal */
-SD_VAR(float3, Ng);
+SD_VAR(float3, Ng)
 /* view/incoming direction */
-SD_VAR(float3, I);
+SD_VAR(float3, I)
 /* shader id */
-SD_VAR(int, shader);
+SD_VAR(int, shader)
 /* booleans describing shader, see ShaderDataFlag */
-SD_VAR(int, flag);
+SD_VAR(int, flag)
 
 /* primitive id if there is one, ~0 otherwise */
-SD_VAR(int, prim);
+SD_VAR(int, prim)
 
 /* combined type and curve segment for hair */
-SD_VAR(int, type);
+SD_VAR(int, type)
 
 /* parametric coordinates
 * - barycentric weights for triangles */
-SD_VAR(float, u);
-SD_VAR(float, v);
+SD_VAR(float, u)
+SD_VAR(float, v)
 /* object id if there is one, ~0 otherwise */
-SD_VAR(int, object);
+SD_VAR(int, object)
 
 /* motion blur sample time */
-SD_VAR(float, time);
+SD_VAR(float, time)
 
 /* length of the ray being shaded */
-SD_VAR(float, ray_length);
+SD_VAR(float, ray_length)
 
 /* ray bounce depth */
-SD_VAR(int, ray_depth);
+SD_VAR(int, ray_depth)
 
 /* ray transparent depth */
-SD_VAR(int, transparent_depth);
+SD_VAR(int, transparent_depth)
 
 #ifdef __RAY_DIFFERENTIALS__
 /* differential of P. these are orthogonal to Ng, not N */
-SD_VAR(differential3, dP);
+SD_VAR(differential3, dP)
 /* differential of I */
-SD_VAR(differential3, dI);
+SD_VAR(differential3, dI)
 /* differential of u, v */
-SD_VAR(differential, du);
-SD_VAR(differential, dv);
+SD_VAR(differential, du)
+SD_VAR(differential, dv)
 #endif
 #ifdef __DPDU__
 /* differential of P w.r.t. parametric coordinates. note that dPdu is
 * not readily suitable as a tangent for shading on triangles. */
-SD_VAR(float3, dPdu);
-SD_VAR(float3, dPdv);
+SD_VAR(float3, dPdu)
+SD_VAR(float3, dPdv)
 #endif
 
 #ifdef __OBJECT_MOTION__
 /* object <-> world space transformations, cached to avoid
 * re-interpolating them constantly for shading */
-SD_VAR(Transform, ob_tfm);
-SD_VAR(Transform, ob_itfm);
+SD_VAR(Transform, ob_tfm)
+SD_VAR(Transform, ob_itfm)
 #endif
 
 /* Closure data, we store a fixed array of closures */
-SD_CLOSURE_VAR(ShaderClosure, closure, max_closure);
+SD_CLOSURE_VAR(ShaderClosure, closure, MAX_CLOSURE)
 
-SD_VAR(int, num_closure);
-SD_VAR(float, randb_closure);
+SD_VAR(int, num_closure)
+SD_VAR(float, randb_closure)
 
 /* ray start position, only set for backgrounds */
-SD_VAR(float3, ray_P);
-SD_VAR(differential3, ray_dP);
+SD_VAR(float3, ray_P)
+SD_VAR(differential3, ray_dP)
 
 #ifdef __OSL__
-SD_VAR(struct KernelGlobals *, osl_globals);
+SD_VAR(struct KernelGlobals *, osl_globals)
 #endif
 
 #undef SD_VAR
-#undef SD_CLOSURE_VAR
\ No newline at end of file
+#undef SD_CLOSURE_VAR
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index 2f9833f..3e788ef 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -643,95 +643,22 @@ enum ShaderDataFlag {
 struct KernelGlobals;
 
 #ifdef __SPLIT_KERNEL__
-#define SD_DECLARE(type, what) ccl_global type *what
+#define SD_VAR(type, what) ccl_global type *what;
+#define SD_CLOSURE_VAR(type, what, max_closure) ccl_global type *what;
 #define TIDX (get_global_id(1) * get_global_size(0) + get_global_id(0))
 #define sd_fetch(t) (sd->t[TIDX])
 #define sc_fetch(index) (&sd->closure[TIDX * MAX_CLOSURE + index])
 #else
-#define SD_DECLARE(type, what) type what
+#define SD_VAR(type, what) type what;
+#define SD_CLOSURE_VAR(type, what, max_closure) type what[max_closure];
 #define sd_fetch(t) (sd->t)
 #define sc_fetch(index) (&sd->closure[index])
 #endif
 
 typedef struct ShaderData {
-	/* position */
-	SD_DECLARE(float3, P);
-	/* smooth normal for shading */
-	SD_DECLARE(float3, N);
-	/* true geometric normal */
-	SD_DECLARE(float3, Ng);
-	/* view/incoming direction */
-	SD_DECLARE(float3, I);
-	/* shader id */
-	SD_DECLARE(int, shader);
-	/* booleans describing shader, see ShaderDataFlag */
-	SD_DECLARE(int, flag);
-
-	/* primitive id if there is one, ~0 otherwise */
-	SD_DECLARE(int, prim);
-
-	/* combined type and curve segment for hair */
-	SD_DECLARE(int, type);
-
-	/* parametric coordinates
-	 * - barycentric weights for triangles */
-	SD_DECLARE(float, u);
-	SD_DECLARE(float, v);
-	/* object id if there is one, ~0 otherwise */
-	SD_DECLARE(int, object);
-
-	/* motion blur sample time */
-	SD_DECLARE(float, time);
-
-	/* length of the ray being shaded */
-	SD_DECLARE(float, ray_length);
-
-	/* ray bounce depth */
-	SD_DECLARE(int, ray_depth);
-
-	/* ray transparent depth */
-	SD_DECLARE(int, transparent_depth);
 
-#ifdef __RAY_DIFFERENTIALS__
-	/* differential of P. these are orthogonal to Ng, not N */
-	SD_DECLARE(differential3, dP);
-	/* differential of I */
-	SD_DECLARE(differential3, dI);
-	/* differential of u, v */
-	SD_DECLARE(differential, du);
-	SD_DECLARE(differential, dv);
-#endif
-#ifdef __DPDU__
-	/* differential of P w.r.t. parametric coordinates. note that dPdu is
-	 * not readily suitable as a tangent for shading on triangles. */
-	SD_DECLARE(float3, dPdu);
-	SD_DECLARE(float3, dPdv);
-#endif
+#include "kernel_shaderdata_vars.h"
 
-#ifdef __OBJECT_MOTION__
-	/* object <-> world space transformations, cached to avoid
-	 * re-interpolating them constantly for shading */
-	SD_DECLARE(Transform, ob_tfm);
-	SD_DECLARE(Transform, ob_itfm);
-#endif
-
-	/* Closure data, we store a fixed array of closures */
-#ifdef __SPLIT_KERNEL__
-	SD_DECLARE(ShaderClosure, closure);
-#else
-	ShaderClosure closure[MAX_CLOSURE];
-#endif
-
-	SD_DECLARE(int, num_closure);
-	SD_DECLARE(float, randb_closure);
-
-	/* ray start position, only set for backgrounds */
-	SD_DECLARE(float3, ray_P);
-	SD_DECLARE(differential3, ray_dP);
-
-#ifdef __OSL__
-	struct KernelGlobals *osl_globals;
-#endif
 } ShaderData;
 
 /* Path State */




More information about the Bf-blender-cvs mailing list