19 #ifdef __SHADER_RAYTRACE__
34 if (max_dist <= 0.0f || num_samples < 1 || sd->
object ==
OBJECT_NONE) {
62 ray.
D =
D.x *
T +
D.y *
B +
D.z *
N;
69 if (!scene_intersect_local(
kg, &ray,
NULL, sd->object,
NULL, 0)) {
81 return ((
float)unoccluded) / num_samples;
87 uint flags, dist_offset, normal_offset, out_ao_offset;
90 uint color_offset, out_color_offset, samples;
95 float ao = svm_ao(
kg, sd,
normal,
state, dist, samples, flags);
MINLINE float safe_sqrtf(float a)
IconTextureDrawCall normal
ccl_device_inline float3 ray_offset(float3 P, float3 Ng)
ccl_device_intersect bool scene_intersect(KernelGlobals *kg, const Ray *ray, const uint visibility, Intersection *isect)
CCL_NAMESPACE_BEGIN ccl_device_inline float3 stack_load_float3(float *stack, uint a)
ccl_device_inline float stack_load_float_default(float *stack, uint a, uint value)
ccl_device_forceinline void svm_unpack_node_uchar3(uint i, uint *x, uint *y, uint *z)
ccl_device_inline void stack_store_float3(float *stack, uint a, float3 f)
ccl_device_forceinline void svm_unpack_node_uchar4(uint i, uint *x, uint *y, uint *z, uint *w)
ccl_device_inline void stack_store_float(float *stack, uint a, float f)
ccl_device_inline bool stack_valid(uint a)
#define ccl_device_noinline
#define CCL_NAMESPACE_END
#define make_float3(x, y, z)
ccl_device differential3 differential3_zero()
ccl_device float2 concentric_sample_disk(float u1, float u2)
ccl_device_inline void path_branched_rng_2D(KernelGlobals *kg, uint rng_hash, const ccl_addr_space PathState *state, int branch, int num_branches, int dimension, float *fx, float *fy)
static void sample(SocketReader *reader, int x, int y, float color[4])
ccl_device_inline void make_orthonormals(const float3 N, float3 *a, float3 *b)
ccl_device_inline float dot(const float2 &a, const float2 &b)
BLI_INLINE float D(const float *data, const int res[3], int x, int y, int z)