diff options
Diffstat (limited to 'intern/cycles/kernel/kernel_shader.h')
-rw-r--r-- | intern/cycles/kernel/kernel_shader.h | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 25e5822a21b..63e5ace8f94 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -49,7 +49,7 @@ ccl_device void shader_setup_object_transforms(KernelGlobals *kg, ShaderData *sd #endif ccl_device void shader_setup_from_ray(KernelGlobals *kg, ShaderData *sd, - const Intersection *isect, const Ray *ray, int bounce, int transparent_bounce) + const Intersection *isect, const Ray *ray) { #ifdef __INSTANCING__ ccl_fetch(sd, object) = (isect->object == PRIM_NONE)? kernel_tex_fetch(__prim_object, isect->prim): isect->object; @@ -66,8 +66,6 @@ ccl_device void shader_setup_from_ray(KernelGlobals *kg, ShaderData *sd, ccl_fetch(sd, prim) = kernel_tex_fetch(__prim_index, isect->prim); ccl_fetch(sd, ray_length) = isect->t; - ccl_fetch(sd, ray_depth) = bounce; - ccl_fetch(sd, transparent_depth) = transparent_bounce; #ifdef __UV__ ccl_fetch(sd, u) = isect->u; @@ -227,7 +225,7 @@ ccl_device_inline void shader_setup_from_subsurface(KernelGlobals *kg, ShaderDat ccl_device 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, int bounce, int transparent_bounce) + int shader, int object, int prim, float u, float v, float t, float time) { /* vectors */ ccl_fetch(sd, P) = P; @@ -248,8 +246,6 @@ ccl_device void shader_setup_from_sample(KernelGlobals *kg, ShaderData *sd, ccl_fetch(sd, v) = v; #endif ccl_fetch(sd, ray_length) = t; - ccl_fetch(sd, ray_depth) = bounce; - ccl_fetch(sd, transparent_depth) = transparent_bounce; /* detect instancing, for non-instanced the object index is -object-1 */ #ifdef __INSTANCING__ @@ -347,12 +343,12 @@ ccl_device void shader_setup_from_displace(KernelGlobals *kg, ShaderData *sd, /* watch out: no instance transform currently */ - shader_setup_from_sample(kg, sd, P, Ng, I, shader, object, prim, u, v, 0.0f, TIME_INVALID, 0, 0); + shader_setup_from_sample(kg, sd, P, Ng, I, shader, object, prim, u, v, 0.0f, TIME_INVALID); } /* ShaderData setup from ray into background */ -ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, ShaderData *sd, const Ray *ray, int bounce, int transparent_bounce) +ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, ShaderData *sd, const Ray *ray) { /* vectors */ ccl_fetch(sd, P) = ray->D; @@ -365,8 +361,6 @@ ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, ShaderDat ccl_fetch(sd, time) = ray->time; #endif ccl_fetch(sd, ray_length) = 0.0f; - ccl_fetch(sd, ray_depth) = bounce; - ccl_fetch(sd, transparent_depth) = transparent_bounce; #ifdef __INSTANCING__ ccl_fetch(sd, object) = PRIM_NONE; @@ -395,7 +389,7 @@ ccl_device_inline void shader_setup_from_background(KernelGlobals *kg, ShaderDat /* ShaderData setup from point inside volume */ #ifdef __VOLUME__ -ccl_device_inline void shader_setup_from_volume(KernelGlobals *kg, ShaderData *sd, const Ray *ray, int bounce, int transparent_bounce) +ccl_device_inline void shader_setup_from_volume(KernelGlobals *kg, ShaderData *sd, const Ray *ray) { /* vectors */ sd->P = ray->P; @@ -408,8 +402,6 @@ ccl_device_inline void shader_setup_from_volume(KernelGlobals *kg, ShaderData *s sd->time = ray->time; #endif sd->ray_length = 0.0f; /* todo: can we set this to some useful value? */ - sd->ray_depth = bounce; - sd->transparent_depth = transparent_bounce; #ifdef __INSTANCING__ sd->object = PRIM_NONE; /* todo: fill this for texture coordinates */ @@ -826,19 +818,19 @@ ccl_device float3 shader_holdout_eval(KernelGlobals *kg, ShaderData *sd) /* Surface Evaluation */ ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, - float randb, int path_flag, ShaderContext ctx) + ccl_addr_space PathState *state, float randb, int path_flag, ShaderContext ctx) { ccl_fetch(sd, num_closure) = 0; ccl_fetch(sd, randb_closure) = randb; #ifdef __OSL__ if(kg->osl) - OSLShader::eval_surface(kg, sd, path_flag, ctx); + OSLShader::eval_surface(kg, sd, state, path_flag, ctx); else #endif { #ifdef __SVM__ - svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, path_flag); + svm_eval_nodes(kg, sd, state, SHADER_TYPE_SURFACE, path_flag); #else ccl_fetch_array(sd, closure, 0)->weight = make_float3(0.8f, 0.8f, 0.8f); ccl_fetch_array(sd, closure, 0)->N = ccl_fetch(sd, N); @@ -851,21 +843,22 @@ ccl_device void shader_eval_surface(KernelGlobals *kg, ShaderData *sd, /* Background Evaluation */ -ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd, int path_flag, ShaderContext ctx) +ccl_device float3 shader_eval_background(KernelGlobals *kg, ShaderData *sd, + ccl_addr_space PathState *state, int path_flag, ShaderContext ctx) { ccl_fetch(sd, num_closure) = 0; ccl_fetch(sd, randb_closure) = 0.0f; #ifdef __OSL__ if(kg->osl) { - return OSLShader::eval_background(kg, sd, path_flag, ctx); + return OSLShader::eval_background(kg, sd, state, path_flag, ctx); } else #endif { #ifdef __SVM__ - svm_eval_nodes(kg, sd, SHADER_TYPE_SURFACE, path_flag); + svm_eval_nodes(kg, sd, state, SHADER_TYPE_SURFACE, path_flag); float3 eval = make_float3(0.0f, 0.0f, 0.0f); @@ -992,7 +985,7 @@ ccl_device int shader_phase_sample_closure(KernelGlobals *kg, const ShaderData * /* Volume Evaluation */ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, - VolumeStack *stack, int path_flag, ShaderContext ctx) + PathState *state, VolumeStack *stack, int path_flag, ShaderContext ctx) { /* reset closures once at the start, we will be accumulating the closures * for all volumes in the stack into a single array of closures */ @@ -1022,12 +1015,12 @@ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, #ifdef __SVM__ #ifdef __OSL__ if(kg->osl) { - OSLShader::eval_volume(kg, sd, path_flag, ctx); + OSLShader::eval_volume(kg, sd, state, path_flag, ctx); } else #endif { - svm_eval_nodes(kg, sd, SHADER_TYPE_VOLUME, path_flag); + svm_eval_nodes(kg, sd, state, SHADER_TYPE_VOLUME, path_flag); } #endif @@ -1041,7 +1034,7 @@ ccl_device void shader_eval_volume(KernelGlobals *kg, ShaderData *sd, /* Displacement Evaluation */ -ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, ShaderContext ctx) +ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, ccl_addr_space PathState *state, ShaderContext ctx) { ccl_fetch(sd, num_closure) = 0; ccl_fetch(sd, randb_closure) = 0.0f; @@ -1054,7 +1047,7 @@ ccl_device void shader_eval_displacement(KernelGlobals *kg, ShaderData *sd, Shad else #endif { - svm_eval_nodes(kg, sd, SHADER_TYPE_DISPLACEMENT, 0); + svm_eval_nodes(kg, sd, state, SHADER_TYPE_DISPLACEMENT, 0); } #endif } |