Cycles: Remove few function arguments needed only for the split kernel
[blender.git] / intern / cycles / kernel / kernel_shaderdata_vars.h
1 /*
2 * Copyright 2011-2015 Blender Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #ifndef SD_VAR
18 #define SD_VAR(type, what)
19 #endif
20 #ifndef SD_CLOSURE_VAR
21 #define SD_CLOSURE_VAR(type, what, max_closure)
22 #endif
23
24 /* position */
25 SD_VAR(float3, P)
26 /* smooth normal for shading */
27 SD_VAR(float3, N)
28 /* true geometric normal */
29 SD_VAR(float3, Ng)
30 /* view/incoming direction */
31 SD_VAR(float3, I)
32 /* shader id */
33 SD_VAR(int, shader)
34 /* booleans describing shader, see ShaderDataFlag */
35 SD_VAR(int, flag)
36
37 /* primitive id if there is one, ~0 otherwise */
38 SD_VAR(int, prim)
39
40 /* combined type and curve segment for hair */
41 SD_VAR(int, type)
42
43 /* parametric coordinates
44 * - barycentric weights for triangles */
45 SD_VAR(float, u)
46 SD_VAR(float, v)
47 /* object id if there is one, ~0 otherwise */
48 SD_VAR(int, object)
49
50 /* motion blur sample time */
51 SD_VAR(float, time)
52
53 /* length of the ray being shaded */
54 SD_VAR(float, ray_length)
55
56 #ifdef __RAY_DIFFERENTIALS__
57 /* differential of P. these are orthogonal to Ng, not N */
58 SD_VAR(differential3, dP)
59 /* differential of I */
60 SD_VAR(differential3, dI)
61 /* differential of u, v */
62 SD_VAR(differential, du)
63 SD_VAR(differential, dv)
64 #endif
65 #ifdef __DPDU__
66 /* differential of P w.r.t. parametric coordinates. note that dPdu is
67 * not readily suitable as a tangent for shading on triangles. */
68 SD_VAR(float3, dPdu)
69 SD_VAR(float3, dPdv)
70 #endif
71
72 #ifdef __OBJECT_MOTION__
73 /* object <-> world space transformations, cached to avoid
74 * re-interpolating them constantly for shading */
75 SD_VAR(Transform, ob_tfm)
76 SD_VAR(Transform, ob_itfm)
77 #endif
78
79 /* Closure data, we store a fixed array of closures */
80 SD_CLOSURE_VAR(ShaderClosure, closure, MAX_CLOSURE)
81 SD_VAR(int, num_closure)
82 SD_VAR(float, randb_closure)
83
84 /* ray start position, only set for backgrounds */
85 SD_VAR(float3, ray_P)
86 SD_VAR(differential3, ray_dP)
87
88 #ifdef __OSL__
89 SD_VAR(struct KernelGlobals *, osl_globals)
90 SD_VAR(struct PathState *, osl_path_state)
91 #endif
92
93 #undef SD_VAR
94 #undef SD_CLOSURE_VAR