Blender V4.3
bvh.h File Reference
#include <embree3/rtcore_ray.h>
#include <embree3/rtcore_scene.h>
#include "kernel/device/cpu/compat.h"
#include "kernel/device/cpu/globals.h"
#include "kernel/bvh/types.h"
#include "kernel/bvh/util.h"
#include "kernel/geom/object.h"
#include "kernel/integrator/state.h"
#include "kernel/integrator/state_util.h"
#include "kernel/sample/lcg.h"
#include "util/vector.h"

Go to the source code of this file.

Classes

struct  CCLFirstHitContext
 
struct  CCLShadowContext
 
struct  CCLLocalContext
 
struct  CCLVolumeContext
 
struct  CCLIntersectContext
 

Macros

#define CYCLES_EMBREE_USED_FEATURES
 
#define EMBREE_IS_HAIR(x)   (x & 1)
 
#define rtcGetGeometryUserDataFromScene(scene, id)    (rtcGetGeometryUserData(rtcGetGeometry(scene, id)))
 
#define kernel_embree_filter_intersection_func   kernel_embree_filter_intersection_func_impl
 

Typedefs

using numhit_t = uint32_t
 

Functions

ccl_device_inline void kernel_embree_setup_ray (const Ray &ray, RTCRay &rtc_ray, const uint visibility)
 
ccl_device_inline void kernel_embree_setup_rayhit (const Ray &ray, RTCRayHit &rayhit, const uint visibility)
 
ccl_device_inline int kernel_embree_get_hit_object (const RTCHit *hit)
 
ccl_device_inline bool kernel_embree_is_self_intersection (const KernelGlobals kg, const RTCHit *hit, const Ray *ray, const intptr_t prim_offset)
 
ccl_device_inline void kernel_embree_convert_hit (KernelGlobals kg, const RTCRay *ray, const RTCHit *hit, Intersection *isect, const intptr_t prim_offset)
 
ccl_device_inline void kernel_embree_convert_hit (KernelGlobals kg, const RTCRay *ray, const RTCHit *hit, Intersection *isect)
 
ccl_device_inline void kernel_embree_convert_sss_hit (KernelGlobals kg, const RTCRay *ray, const RTCHit *hit, Intersection *isect, int object, const intptr_t prim_offset)
 
ccl_device_forceinline void kernel_embree_filter_intersection_func_impl (const RTCFilterFunctionNArguments *args)
 
ccl_device_forceinline void kernel_embree_filter_occluded_shadow_all_func_impl (const RTCFilterFunctionNArguments *args)
 
ccl_device_forceinline void kernel_embree_filter_occluded_local_func_impl (const RTCFilterFunctionNArguments *args)
 
ccl_device_forceinline void kernel_embree_filter_occluded_volume_all_func_impl (const RTCFilterFunctionNArguments *args)
 
ccl_device_forceinline void kernel_embree_filter_occluded_func (const RTCFilterFunctionNArguments *args)
 
ccl_device void kernel_embree_filter_func_backface_cull (const RTCFilterFunctionNArguments *args)
 
ccl_device void kernel_embree_filter_occluded_func_backface_cull (const RTCFilterFunctionNArguments *args)
 
ccl_device_intersect bool kernel_embree_intersect (KernelGlobals kg, ccl_private const Ray *ray, const uint visibility, ccl_private Intersection *isect)
 

Macro Definition Documentation

◆ CYCLES_EMBREE_USED_FEATURES

#define CYCLES_EMBREE_USED_FEATURES
Value:
(RTCFeatureFlags)(RTC_FEATURE_FLAG_TRIANGLE | RTC_FEATURE_FLAG_INSTANCE | \
RTC_FEATURE_FLAG_FILTER_FUNCTION_IN_ARGUMENTS | RTC_FEATURE_FLAG_POINT | \
RTC_FEATURE_FLAG_MOTION_BLUR | RTC_FEATURE_FLAG_ROUND_CATMULL_ROM_CURVE | \
RTC_FEATURE_FLAG_FLAT_CATMULL_ROM_CURVE)

Definition at line 46 of file kernel/device/cpu/bvh.h.

Referenced by kernel_embree_intersect().

◆ EMBREE_IS_HAIR

#define EMBREE_IS_HAIR ( x)    (x & 1)

◆ kernel_embree_filter_intersection_func

#define kernel_embree_filter_intersection_func   kernel_embree_filter_intersection_func_impl

Definition at line 702 of file kernel/device/cpu/bvh.h.

Referenced by kernel_embree_intersect().

◆ rtcGetGeometryUserDataFromScene

#define rtcGetGeometryUserDataFromScene ( scene,
id )    (rtcGetGeometryUserData(rtcGetGeometry(scene, id)))

Definition at line 56 of file kernel/device/cpu/bvh.h.

Referenced by kernel_embree_convert_hit().

Typedef Documentation

◆ numhit_t

using numhit_t = uint32_t

Definition at line 39 of file kernel/device/cpu/bvh.h.

Function Documentation

◆ kernel_embree_convert_hit() [1/2]

ccl_device_inline void kernel_embree_convert_hit ( KernelGlobals kg,
const RTCRay * ray,
const RTCHit * hit,
Intersection * isect )

◆ kernel_embree_convert_hit() [2/2]

◆ kernel_embree_convert_sss_hit()

ccl_device_inline void kernel_embree_convert_sss_hit ( KernelGlobals kg,
const RTCRay * ray,
const RTCHit * hit,
Intersection * isect,
int object,
const intptr_t prim_offset )

◆ kernel_embree_filter_func_backface_cull()

ccl_device void kernel_embree_filter_func_backface_cull ( const RTCFilterFunctionNArguments * args)

◆ kernel_embree_filter_intersection_func_impl()

ccl_device_forceinline void kernel_embree_filter_intersection_func_impl ( const RTCFilterFunctionNArguments * args)

◆ kernel_embree_filter_occluded_func()

◆ kernel_embree_filter_occluded_func_backface_cull()

ccl_device void kernel_embree_filter_occluded_func_backface_cull ( const RTCFilterFunctionNArguments * args)

◆ kernel_embree_filter_occluded_local_func_impl()

◆ kernel_embree_filter_occluded_shadow_all_func_impl()

◆ kernel_embree_filter_occluded_volume_all_func_impl()

ccl_device_forceinline void kernel_embree_filter_occluded_volume_all_func_impl ( const RTCFilterFunctionNArguments * args)

◆ kernel_embree_get_hit_object()

ccl_device_inline int kernel_embree_get_hit_object ( const RTCHit * hit)

◆ kernel_embree_intersect()

◆ kernel_embree_is_self_intersection()

ccl_device_inline bool kernel_embree_is_self_intersection ( const KernelGlobals kg,
const RTCHit * hit,
const Ray * ray,
const intptr_t prim_offset )

◆ kernel_embree_setup_ray()

ccl_device_inline void kernel_embree_setup_ray ( const Ray & ray,
RTCRay & rtc_ray,
const uint visibility )

Definition at line 158 of file kernel/device/cpu/bvh.h.

Referenced by kernel_embree_setup_rayhit().

◆ kernel_embree_setup_rayhit()

ccl_device_inline void kernel_embree_setup_rayhit ( const Ray & ray,
RTCRayHit & rayhit,
const uint visibility )

Definition at line 174 of file kernel/device/cpu/bvh.h.

References kernel_embree_setup_ray().

Referenced by kernel_embree_intersect().