48 ray.
P = sd->P + sd->Ng;
51 # ifdef __CAMERA_MOTION__
55 # ifdef __BRANCHED_PATH__
71 bool is_sss_sample =
false;
73 # ifdef __SUBSURFACE__
79 kernel_path_subsurface_init_indirect(&ss_indirect);
80 if (kernel_path_subsurface_scatter(
81 kg, sd, emission_sd,
L, &
state, &ray, &throughput, &ss_indirect)) {
83 kernel_path_subsurface_setup_indirect(
kg, &ss_indirect, &
state, &ray,
L, &throughput);
84 kernel_path_indirect(
kg, &indirect_sd, emission_sd, &ray, throughput, &
state,
L);
100 kernel_path_indirect(
kg, &indirect_sd, emission_sd, &ray, throughput, &
state,
L);
107 # ifdef __BRANCHED_PATH__
114 kernel_branched_path_ao(
kg, sd, emission_sd,
L, &
state, throughput);
123 # ifdef __SUBSURFACE__
128 kernel_branched_path_subsurface_scatter(
129 kg, sd, &indirect_sd, emission_sd,
L, &
state, &ray, throughput);
135 # if defined(__EMISSION__)
139 kernel_branched_path_surface_connect_light(
140 kg, sd, emission_sd, &
state, throughput, 1.0f,
L,
all);
145 kernel_branched_path_surface_indirect_light(
146 kg, sd, &indirect_sd, emission_sd, throughput, 1.0f, &
state,
L);
163 return ((((
int)fu) & 1) ? 1.0f - u : u) *
max;
189 const int pass_filter)
198 if (is_direct || is_indirect) {
205 return kernel_bake_shader_bsdf(
kg, sd,
type);
210 color = kernel_bake_shader_bsdf(
kg, sd,
type);
228 const int index = offset +
x +
y *
stride;
229 const int pass_stride =
kernel_data.film.pass_stride;
230 buffer += index * pass_stride;
245 int num_samples =
kernel_data.integrator.aa_samples;
247 float filter_x, filter_y;
249 filter_x = filter_y = 0.5f;
256 float u = primitive[2];
257 float v = primitive[3];
265 u = bake_clamp_mirror_repeat(u + dudx * (filter_x - 0.5f) + dudy * (filter_y - 0.5f), 1.0f);
266 v = bake_clamp_mirror_repeat(
v + dvdx * (filter_x - 0.5f) + dvdy * (filter_y - 0.5f),
296 sd.dP.dx = sd.dPdu * dudx + sd.dPdv * dvdx;
297 sd.dP.dy = sd.dPdu * dudy + sd.dPdv * dvdy;
305 state.rng_hash = rng_hash;
306 state.rng_offset = 0;
308 state.num_samples = num_samples;
309 state.min_ray_pdf = FLT_MAX;
316 compute_light_pass(
kg, &sd, &
L, rng_hash, pass_filter,
sample);
367 out +=
L.direct_diffuse;
369 out +=
L.indirect_diffuse;
372 out +=
L.direct_glossy;
374 out +=
L.indirect_glossy;
377 out +=
L.direct_transmission;
379 out +=
L.indirect_transmission;
391 out = kernel_bake_evaluate_direct_indirect(
392 kg, &sd, &
state,
L.direct_diffuse,
L.indirect_diffuse,
type, pass_filter);
396 out = kernel_bake_evaluate_direct_indirect(
397 kg, &sd, &
state,
L.direct_glossy,
L.indirect_glossy,
type, pass_filter);
401 out = kernel_bake_evaluate_direct_indirect(
402 kg, &sd, &
state,
L.direct_transmission,
L.indirect_transmission,
type, pass_filter);
415 # ifdef __CAMERA_MOTION__
419 # ifdef __RAY_DIFFERENTIALS__
492 #ifdef __CAMERA_MOTION__
496 #ifdef __RAY_DIFFERENTIALS__
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei stride
ATTR_WARN_UNUSED_RESULT const BMVert * v
static unsigned long seed
static CCL_NAMESPACE_BEGIN const double alpha
ccl_device_inline void object_inverse_dir_transform(KernelGlobals *kg, const ShaderData *sd, float3 *D)
ccl_device_inline float3 primitive_uv(KernelGlobals *kg, ShaderData *sd)
ccl_device_inline void triangle_point_normal(KernelGlobals *kg, int object, int prim, float u, float v, float3 *P, float3 *Ng, int *shader)
ccl_device_inline void path_radiance_sum_indirect(PathRadiance *L)
ccl_device_inline void path_radiance_init(KernelGlobals *kg, PathRadiance *L)
ccl_device_inline void path_radiance_reset_indirect(PathRadiance *L)
ccl_device_inline void path_radiance_accum_emission(KernelGlobals *kg, PathRadiance *L, ccl_addr_space PathState *state, float3 throughput, float3 value)
ccl_device_inline float3 path_radiance_clamp_and_sum(KernelGlobals *kg, PathRadiance *L, float *alpha)
ccl_device void kernel_background_evaluate(KernelGlobals *kg, ccl_global uint4 *input, ccl_global float4 *output, int i)
CCL_NAMESPACE_BEGIN ccl_device void kernel_displace_evaluate(KernelGlobals *kg, ccl_global uint4 *input, ccl_global float4 *output, int i)
#define kernel_assert(cond)
#define kernel_tex_fetch(tex, index)
#define ccl_device_inline
#define ccl_device_noinline
#define CCL_NAMESPACE_END
#define make_float4(x, y, z, w)
#define make_float3(x, y, z)
void KERNEL_FUNCTION_FULL_NAME() shader(KernelGlobals *kg, uint4 *input, float4 *output, int type, int filter, int i, int offset, int sample)
ccl_device differential3 differential3_zero()
ccl_device_noinline_cpu float3 indirect_primitive_emission(KernelGlobals *kg, ShaderData *sd, float t, int path_flag, float bsdf_pdf)
ccl_device_noinline void kernel_path_ao(KernelGlobals *kg, ShaderData *sd, ShaderData *emission_sd, PathRadiance *L, ccl_addr_space PathState *state, float3 throughput, float3 ao_alpha)
CCL_NAMESPACE_BEGIN ccl_device_inline void path_state_init(KernelGlobals *kg, ShaderData *stack_sd, ccl_addr_space PathState *state, uint rng_hash, int sample, ccl_addr_space Ray *ray)
ccl_device bool kernel_path_surface_bounce(KernelGlobals *kg, ShaderData *sd, ccl_addr_space float3 *throughput, ccl_addr_space PathState *state, PathRadianceState *L_state, ccl_addr_space Ray *ray)
CCL_NAMESPACE_BEGIN ccl_device_inline void kernel_path_surface_connect_light(KernelGlobals *kg, ShaderData *sd, ShaderData *emission_sd, float3 throughput, ccl_addr_space PathState *state, PathRadiance *L)
ccl_device float3 equirectangular_to_direction(float u, float v)
ccl_device_forceinline void path_rng_2D(KernelGlobals *kg, uint rng_hash, int sample, int num_samples, int dimension, float *fx, float *fy)
ccl_device float3 shader_bsdf_alpha(KernelGlobals *kg, ShaderData *sd)
ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, ccl_addr_space PathState *state, ccl_global float *buffer, int path_flag)
ccl_device void shader_setup_from_displace(KernelGlobals *kg, ShaderData *sd, int object, int prim, float u, float v)
ccl_device float3 shader_bsdf_diffuse(KernelGlobals *kg, ShaderData *sd)
ccl_device_inline void shader_setup_from_sample(KernelGlobals *kg, ShaderData *sd, const float3 P, const float3 Ng, const float3 I, int shader, int object, int prim, float u, float v, float t, float time, bool object_space, int lamp)
ccl_device float shader_bsdf_average_roughness(ShaderData *sd)
ccl_device float3 shader_background_eval(ShaderData *sd)
ccl_device void shader_bsdf_disable_transparency(KernelGlobals *kg, ShaderData *sd)
ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, ShaderData *sd, const Ray *ray)
ccl_device float3 shader_bsdf_transmission(KernelGlobals *kg, ShaderData *sd)
ccl_device float3 shader_emissive_eval(ShaderData *sd)
ccl_device float3 shader_bsdf_glossy(KernelGlobals *kg, ShaderData *sd)
ccl_device float3 shader_bsdf_average_normal(KernelGlobals *kg, ShaderData *sd)
ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, ccl_addr_space PathState *state)
__kernel void ccl_constant KernelData ccl_global void ccl_global char ccl_global int ccl_global char ccl_global unsigned int ccl_global float * buffer
#define AS_SHADER_DATA(shader_data_tiny_storage)
@ SD_OBJECT_TRANSFORM_APPLIED
@ BAKE_FILTER_TRANSMISSION_DIRECT
@ BAKE_FILTER_DIFFUSE_INDIRECT
@ BAKE_FILTER_GLOSSY_INDIRECT
@ BAKE_FILTER_DIFFUSE_DIRECT
@ BAKE_FILTER_TRANSMISSION_INDIRECT
@ BAKE_FILTER_GLOSSY_DIRECT
@ SHADER_EVAL_TRANSMISSION
@ SHADER_EVAL_ENVIRONMENT
ccl_device_inline void kernel_write_pass_float4(ccl_global float *buffer, float4 value)
static void sample(SocketReader *reader, int x, int y, float color[4])
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
__forceinline bool all(const avxb &b)
ccl_device_inline uint hash_uint(uint kx)
ccl_device_inline float __uint_as_float(uint i)
ccl_device_inline uint __float_as_uint(float f)
ccl_device_inline float3 safe_divide_even_color(float3 a, float3 b)
ccl_device_inline float2 normalize(const float2 &a)
ccl_device_inline float3 one_float3()
ccl_device_inline float3 zero_float3()
BLI_INLINE float D(const float *data, const int res[3], int x, int y, int z)