[Bf-blender-cvs] [5477dee] cycles_kernel_split: Refactor(cosmetics) : Modify ShaderData declaration
varunsundar08
noreply at git.blender.org
Thu Apr 30 23:25:15 CEST 2015
Commit: 5477deec84374707df3decdb7214e079bada3ef9
Author: varunsundar08
Date: Tue Apr 28 19:13:00 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rB5477deec84374707df3decdb7214e079bada3ef9
Refactor(cosmetics) : Modify ShaderData declaration
===================================================================
M intern/cycles/kernel/kernel_types.h
===================================================================
diff --git a/intern/cycles/kernel/kernel_types.h b/intern/cycles/kernel/kernel_types.h
index fbc85df..f6dc047 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -648,163 +648,95 @@ enum ShaderDataFlag {
struct KernelGlobals;
#ifdef __SPLIT_KERNEL__
+#define SD_DECLARE(type, what) 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_fetch(t) (sd->t)
#define sc_fetch(index) (&sd->closure[index])
#endif
typedef struct ShaderData {
-#ifdef __SPLIT_KERNEL__
- /* ShaderData Strutcure of arrays */
/* position */
- ccl_global float3 *P;
+ SD_DECLARE(float3, P);
/* smooth normal for shading */
- ccl_global float3 *N;
+ SD_DECLARE(float3, N);
/* true geometric normal */
- ccl_global float3 *Ng;
+ SD_DECLARE(float3, Ng);
/* view/incoming direction */
- ccl_global float3 *I;
+ SD_DECLARE(float3, I);
/* shader id */
- ccl_global int *shader;
+ SD_DECLARE(int, shader);
/* booleans describing shader, see ShaderDataFlag */
- ccl_global int *flag;
+ SD_DECLARE(int, flag);
/* primitive id if there is one, ~0 otherwise */
- ccl_global int *prim;
+ SD_DECLARE(int, prim);
/* combined type and curve segment for hair */
- ccl_global int *type;
+ SD_DECLARE(int, type);
/* parametric coordinates
- * - barycentric weights for triangles */
- ccl_global float *u, *v;
+ * - barycentric weights for triangles */
+ SD_DECLARE(float, u);
+ SD_DECLARE(float, v);
/* object id if there is one, ~0 otherwise */
- ccl_global int *object;
+ SD_DECLARE(int, object);
/* motion blur sample time */
- ccl_global float *time;
+ SD_DECLARE(float, time);
/* length of the ray being shaded */
- ccl_global float *ray_length;
+ SD_DECLARE(float, ray_length);
/* ray bounce depth */
- ccl_global int *ray_depth;
+ SD_DECLARE(int, ray_depth);
/* ray transparent depth */
- ccl_global int *transparent_depth;
+ SD_DECLARE(int, transparent_depth);
#ifdef __RAY_DIFFERENTIALS__
/* differential of P. these are orthogonal to Ng, not N */
- ccl_global differential3 *dP;
+ SD_DECLARE(differential3, dP);
/* differential of I */
- ccl_global differential3 *dI;
+ SD_DECLARE(differential3, dI);
/* differential of u, v */
- ccl_global differential *du;
- ccl_global 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. */
- ccl_global float3 *dPdu, *dPdv;
-#endif
-
-#ifdef __OBJECT_MOTION__
- /* object <-> world space transformations, cached to avoid
- * re-interpolating them constantly for shading */
- Transform ob_tfm;
- Transform ob_itfm;
-#endif
-
- /* Closure data, we store a fixed array of closures */
- ccl_global ShaderClosure *closure;
- ccl_global int *num_closure;
- ccl_global float *randb_closure;
-
- /* ray start position, only set for backgrounds */
- ccl_global float3 *ray_P;
- ccl_global differential3 *ray_dP;
-
-#ifdef __OSL__
- struct KernelGlobals *osl_globals;
-#endif
-
-#else // __SPLIT_KERNEL__
-
- /* position */
- float3 P;
- /* smooth normal for shading */
- float3 N;
- /* true geometric normal */
- float3 Ng;
- /* view/incoming direction */
- float3 I;
- /* shader id */
- int shader;
- /* booleans describing shader, see ShaderDataFlag */
- int flag;
-
- /* primitive id if there is one, ~0 otherwise */
- int prim;
-
- /* combined type and curve segment for hair */
- int type;
-
- /* parametric coordinates
- * - barycentric weights for triangles */
- float u, v;
- /* object id if there is one, ~0 otherwise */
- int object;
-
- /* motion blur sample time */
- float time;
-
- /* length of the ray being shaded */
- float ray_length;
-
- /* ray bounce depth */
- int ray_depth;
-
- /* ray transparent depth */
- int transparent_depth;
-
-#ifdef __RAY_DIFFERENTIALS__
- /* differential of P. these are orthogonal to Ng, not N */
- differential3 dP;
- /* differential of I */
- differential3 dI;
- /* differential of u, v */
- differential du;
- differential dv;
+ 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. */
- float3 dPdu, dPdv;
+ SD_DECLARE(float3, dPdu);
+ SD_DECLARE(float3, dPdv);
#endif
#ifdef __OBJECT_MOTION__
/* object <-> world space transformations, cached to avoid
* re-interpolating them constantly for shading */
- Transform ob_tfm;
- Transform ob_itfm;
+ 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];
- int num_closure;
- float randb_closure;
+#endif
+
+ SD_DECLARE(int, num_closure);
+ SD_DECLARE(float, randb_closure);
/* ray start position, only set for backgrounds */
- float3 ray_P;
- differential3 ray_dP;
+ SD_DECLARE(float3, ray_P);
+ SD_DECLARE(differential3, ray_dP);
#ifdef __OSL__
struct KernelGlobals *osl_globals;
#endif
-#endif // __SPLIT_KERNEL__
} ShaderData;
/* Path State */
More information about the Bf-blender-cvs
mailing list