ClangFormat: apply to source, most of intern
[blender.git] / intern / cycles / kernel / bvh / bvh_types.h
1 /*
2  * Copyright 2011-2013 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 __BVH_TYPES__
18 #define __BVH_TYPES__
19
20 CCL_NAMESPACE_BEGIN
21
22 /* Don't inline intersect functions on GPU, this is faster */
23 #ifdef __KERNEL_GPU__
24 #  define ccl_device_intersect ccl_device_forceinline
25 #else
26 #  define ccl_device_intersect ccl_device_inline
27 #endif
28
29 /* bottom-most stack entry, indicating the end of traversal */
30 #define ENTRYPOINT_SENTINEL 0x76543210
31
32 /* 64 object BVH + 64 mesh BVH + 64 object node splitting */
33 #define BVH_STACK_SIZE 192
34 #define BVH_QSTACK_SIZE 384
35 #define BVH_OSTACK_SIZE 768
36 /* BVH intersection function variations */
37
38 #define BVH_INSTANCING 1
39 #define BVH_MOTION 2
40 #define BVH_HAIR 4
41 #define BVH_HAIR_MINIMUM_WIDTH 8
42
43 #define BVH_NAME_JOIN(x, y) x##_##y
44 #define BVH_NAME_EVAL(x, y) BVH_NAME_JOIN(x, y)
45 #define BVH_FUNCTION_FULL_NAME(prefix) BVH_NAME_EVAL(prefix, BVH_FUNCTION_NAME)
46
47 #define BVH_FEATURE(f) (((BVH_FUNCTION_FEATURES) & (f)) != 0)
48
49 /* Debugging heleprs */
50 #ifdef __KERNEL_DEBUG__
51 #  define BVH_DEBUG_INIT() \
52     do { \
53       isect->num_traversed_nodes = 0; \
54       isect->num_traversed_instances = 0; \
55       isect->num_intersections = 0; \
56     } while (0)
57 #  define BVH_DEBUG_NEXT_NODE() \
58     do { \
59       ++isect->num_traversed_nodes; \
60     } while (0)
61 #  define BVH_DEBUG_NEXT_INTERSECTION() \
62     do { \
63       ++isect->num_intersections; \
64     } while (0)
65 #  define BVH_DEBUG_NEXT_INSTANCE() \
66     do { \
67       ++isect->num_traversed_instances; \
68     } while (0)
69 #else /* __KERNEL_DEBUG__ */
70 #  define BVH_DEBUG_INIT()
71 #  define BVH_DEBUG_NEXT_NODE()
72 #  define BVH_DEBUG_NEXT_INTERSECTION()
73 #  define BVH_DEBUG_NEXT_INSTANCE()
74 #endif /* __KERNEL_DEBUG__ */
75
76 CCL_NAMESPACE_END
77
78 #endif /* __BVH_TYPES__ */