Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/kernel_globals.h')
-rw-r--r--intern/cycles/kernel/kernel_globals.h208
1 files changed, 208 insertions, 0 deletions
diff --git a/intern/cycles/kernel/kernel_globals.h b/intern/cycles/kernel/kernel_globals.h
new file mode 100644
index 00000000000..4c4f35bb508
--- /dev/null
+++ b/intern/cycles/kernel/kernel_globals.h
@@ -0,0 +1,208 @@
+/*
+ * Copyright 2011, Blender Foundation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/* Constant Globals */
+
+#ifdef __KERNEL_CPU__
+
+#ifdef WITH_OSL
+#include "osl_globals.h"
+#endif
+
+CCL_NAMESPACE_BEGIN
+
+/* On the CPU, we pass along the struct KernelGlobals to nearly everywhere in
+ the kernel, to access constant data. These are all stored as "textures", but
+ these are really just standard arrays. We can't use actually globals because
+ multiple renders may be running inside the same process. */
+typedef struct KernelGlobals {
+
+#else
+
+/* On the GPU, constant memory textures must be globals, so we can't put them
+ into a struct. As a result we don't actually use this struct and use actual
+ globals and simply pass along a NULL pointer everywhere, which we hope gets
+ optimized out. */
+#ifdef __KERNEL_CUDA__
+typedef struct KernelGlobals {} KernelGlobals;
+#endif
+
+#endif
+
+/* globals */
+__constant KernelData __data;
+
+#ifndef __KERNEL_OPENCL__
+
+/* bvh */
+texture_float4 __bvh_nodes;
+texture_float4 __tri_woop;
+texture_uint __prim_index;
+texture_uint __prim_object;
+texture_uint __object_node;
+
+/* objects */
+texture_float4 __objects;
+
+/* triangles */
+texture_float4 __tri_normal;
+texture_float4 __tri_vnormal;
+texture_float4 __tri_vindex;
+texture_float4 __tri_verts;
+
+/* attributes */
+texture_uint4 __attributes_map;
+texture_float __attributes_float;
+texture_float4 __attributes_float3;
+
+/* lights */
+texture_float4 __light_distribution;
+texture_float4 __light_point;
+
+/* shaders */
+texture_uint4 __svm_nodes;
+
+/* camera/film */
+texture_float __filter_table;
+texture_float __response_curve_R;
+texture_float __response_curve_G;
+texture_float __response_curve_B;
+
+/* sobol */
+texture_uint __sobol_directions;
+
+/* image */
+texture_image_uchar4 __tex_image_000;
+texture_image_uchar4 __tex_image_001;
+texture_image_uchar4 __tex_image_002;
+texture_image_uchar4 __tex_image_003;
+texture_image_uchar4 __tex_image_004;
+texture_image_uchar4 __tex_image_005;
+texture_image_uchar4 __tex_image_006;
+texture_image_uchar4 __tex_image_007;
+texture_image_uchar4 __tex_image_008;
+texture_image_uchar4 __tex_image_009;
+texture_image_uchar4 __tex_image_010;
+texture_image_uchar4 __tex_image_011;
+texture_image_uchar4 __tex_image_012;
+texture_image_uchar4 __tex_image_013;
+texture_image_uchar4 __tex_image_014;
+texture_image_uchar4 __tex_image_015;
+texture_image_uchar4 __tex_image_016;
+texture_image_uchar4 __tex_image_017;
+texture_image_uchar4 __tex_image_018;
+texture_image_uchar4 __tex_image_019;
+texture_image_uchar4 __tex_image_020;
+texture_image_uchar4 __tex_image_021;
+texture_image_uchar4 __tex_image_022;
+texture_image_uchar4 __tex_image_023;
+texture_image_uchar4 __tex_image_024;
+texture_image_uchar4 __tex_image_025;
+texture_image_uchar4 __tex_image_026;
+texture_image_uchar4 __tex_image_027;
+texture_image_uchar4 __tex_image_028;
+texture_image_uchar4 __tex_image_029;
+texture_image_uchar4 __tex_image_030;
+texture_image_uchar4 __tex_image_031;
+texture_image_uchar4 __tex_image_032;
+texture_image_uchar4 __tex_image_033;
+texture_image_uchar4 __tex_image_034;
+texture_image_uchar4 __tex_image_035;
+texture_image_uchar4 __tex_image_036;
+texture_image_uchar4 __tex_image_037;
+texture_image_uchar4 __tex_image_038;
+texture_image_uchar4 __tex_image_039;
+texture_image_uchar4 __tex_image_040;
+texture_image_uchar4 __tex_image_041;
+texture_image_uchar4 __tex_image_042;
+texture_image_uchar4 __tex_image_043;
+texture_image_uchar4 __tex_image_044;
+texture_image_uchar4 __tex_image_045;
+texture_image_uchar4 __tex_image_046;
+texture_image_uchar4 __tex_image_047;
+texture_image_uchar4 __tex_image_048;
+texture_image_uchar4 __tex_image_049;
+texture_image_uchar4 __tex_image_050;
+texture_image_uchar4 __tex_image_051;
+texture_image_uchar4 __tex_image_052;
+texture_image_uchar4 __tex_image_053;
+texture_image_uchar4 __tex_image_054;
+texture_image_uchar4 __tex_image_055;
+texture_image_uchar4 __tex_image_056;
+texture_image_uchar4 __tex_image_057;
+texture_image_uchar4 __tex_image_058;
+texture_image_uchar4 __tex_image_059;
+texture_image_uchar4 __tex_image_060;
+texture_image_uchar4 __tex_image_061;
+texture_image_uchar4 __tex_image_062;
+texture_image_uchar4 __tex_image_063;
+texture_image_uchar4 __tex_image_064;
+texture_image_uchar4 __tex_image_065;
+texture_image_uchar4 __tex_image_066;
+texture_image_uchar4 __tex_image_067;
+texture_image_uchar4 __tex_image_068;
+texture_image_uchar4 __tex_image_069;
+texture_image_uchar4 __tex_image_070;
+texture_image_uchar4 __tex_image_071;
+texture_image_uchar4 __tex_image_072;
+texture_image_uchar4 __tex_image_073;
+texture_image_uchar4 __tex_image_074;
+texture_image_uchar4 __tex_image_075;
+texture_image_uchar4 __tex_image_076;
+texture_image_uchar4 __tex_image_077;
+texture_image_uchar4 __tex_image_078;
+texture_image_uchar4 __tex_image_079;
+texture_image_uchar4 __tex_image_080;
+texture_image_uchar4 __tex_image_081;
+texture_image_uchar4 __tex_image_082;
+texture_image_uchar4 __tex_image_083;
+texture_image_uchar4 __tex_image_084;
+texture_image_uchar4 __tex_image_085;
+texture_image_uchar4 __tex_image_086;
+texture_image_uchar4 __tex_image_087;
+texture_image_uchar4 __tex_image_088;
+texture_image_uchar4 __tex_image_089;
+texture_image_uchar4 __tex_image_090;
+texture_image_uchar4 __tex_image_091;
+texture_image_uchar4 __tex_image_092;
+texture_image_uchar4 __tex_image_093;
+texture_image_uchar4 __tex_image_094;
+texture_image_uchar4 __tex_image_095;
+texture_image_uchar4 __tex_image_096;
+texture_image_uchar4 __tex_image_097;
+texture_image_uchar4 __tex_image_098;
+texture_image_uchar4 __tex_image_099;
+
+#endif
+
+#ifdef __KERNEL_CPU__
+
+#ifdef WITH_OSL
+
+/* On the CPU, we also have the OSL globals here. Most data structures are shared
+ with SVM, the difference is in the shaders and object/mesh attributes. */
+
+OSLGlobals osl;
+
+#endif
+
+} KernelGlobals;
+#endif
+
+CCL_NAMESPACE_END
+