[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58772] branches/soc-2013-dingto/intern/ cycles/kernel: Cycles / Ray Depth:
Thomas Dinges
blender at dingto.org
Wed Jul 31 20:40:12 CEST 2013
Revision: 58772
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58772
Author: dingto
Date: 2013-07-31 18:40:11 +0000 (Wed, 31 Jul 2013)
Log Message:
-----------
Cycles / Ray Depth:
* Fix some things which came up in code review. Includes some fixes for background lights and changes to variables, to avoid some castings.
Thanks to Brecht for code review! :)
Modified Paths:
--------------
branches/soc-2013-dingto/intern/cycles/kernel/kernel_emission.h
branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
branches/soc-2013-dingto/intern/cycles/kernel/kernel_shader.h
branches/soc-2013-dingto/intern/cycles/kernel/kernel_types.h
branches/soc-2013-dingto/intern/cycles/kernel/osl/osl_services.cpp
branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_light_path.osl
branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_light_path.h
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_emission.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_emission.h 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_emission.h 2013-07-31 18:40:11 UTC (rev 58772)
@@ -41,7 +41,7 @@
#ifdef __CAMERA_MOTION__
ray.time = time;
#endif
- shader_setup_from_background(kg, &sd, &ray, bounce);
+ shader_setup_from_background(kg, &sd, &ray, bounce+1);
eval = shader_eval_background(kg, &sd, 0, SHADER_CONTEXT_EMISSION);
}
else
@@ -49,10 +49,10 @@
{
#ifdef __HAIR__
if(ls->type == LIGHT_STRAND)
- shader_setup_from_sample(kg, &sd, ls->P, ls->Ng, I, ls->shader, ls->object, ls->prim, u, v, t, time, bounce, ls->prim);
+ shader_setup_from_sample(kg, &sd, ls->P, ls->Ng, I, ls->shader, ls->object, ls->prim, u, v, t, time, bounce+1, ls->prim);
else
#endif
- shader_setup_from_sample(kg, &sd, ls->P, ls->Ng, I, ls->shader, ls->object, ls->prim, u, v, t, time, bounce, ~0);
+ shader_setup_from_sample(kg, &sd, ls->P, ls->Ng, I, ls->shader, ls->object, ls->prim, u, v, t, time, bounce+1, ~0);
ls->Ng = sd.Ng;
@@ -240,7 +240,7 @@
/* evaluate background closure */
ShaderData sd;
- shader_setup_from_background(kg, &sd, ray, bounce);
+ shader_setup_from_background(kg, &sd, ray, bounce+1);
float3 L = shader_eval_background(kg, &sd, path_flag, SHADER_CONTEXT_EMISSION);
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h 2013-07-31 18:40:11 UTC (rev 58772)
@@ -215,7 +215,7 @@
return true;
ShaderData sd;
- shader_setup_from_ray(kg, &sd, &isect, ray, state->bounce);
+ shader_setup_from_ray(kg, &sd, &isect, ray, state->bounce+1);
shader_eval_surface(kg, &sd, 0.0f, PATH_RAY_SHADOW, SHADER_CONTEXT_SHADOW);
throughput *= shader_bsdf_transparency(kg, &sd);
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_shader.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_shader.h 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_shader.h 2013-07-31 18:40:11 UTC (rev 58772)
@@ -80,7 +80,7 @@
sd->prim = kernel_tex_fetch(__prim_index, isect->prim);
sd->ray_length = isect->t;
- sd->ray_depth = (float)bounce;
+ sd->ray_depth = bounce;
#ifdef __HAIR__
if(kernel_tex_fetch(__prim_segment, isect->prim) != ~0) {
@@ -301,7 +301,7 @@
sd->v = v;
#endif
sd->ray_length = t;
- sd->ray_depth = (float)bounce;
+ sd->ray_depth = bounce;
/* detect instancing, for non-instanced the object index is -object-1 */
#ifdef __INSTANCING__
@@ -428,7 +428,7 @@
sd->time = ray->time;
#endif
sd->ray_length = 0.0f;
- sd->ray_depth = (float)bounce;
+ sd->ray_depth = bounce;
#ifdef __INSTANCING__
sd->object = ~0;
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_types.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_types.h 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_types.h 2013-07-31 18:40:11 UTC (rev 58772)
@@ -555,7 +555,7 @@
float ray_length;
/* ray bounce depth */
- float ray_depth;
+ int ray_depth;
#ifdef __RAY_DIFFERENTIALS__
/* differential of P. these are orthogonal to Ng, not N */
Modified: branches/soc-2013-dingto/intern/cycles/kernel/osl/osl_services.cpp
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/osl/osl_services.cpp 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/osl/osl_services.cpp 2013-07-31 18:40:11 UTC (rev 58772)
@@ -662,9 +662,9 @@
return set_attribute_float(f, type, derivatives, val);
}
else if (name == u_path_ray_depth) {
- /* Ray Length */
- float f = sd->ray_depth;
- return set_attribute_float(f, type, derivatives, val);
+ /* Ray Depth */
+ int f = sd->ray_depth;
+ return set_attribute_int(f, type, derivatives, val);
}
else if (name == u_ndc) {
/* NDC coordinates with special exception for otho */
@@ -925,7 +925,10 @@
if(!tracedata->setup) {
/* lazy shader data setup */
- shader_setup_from_ray(kg, sd, &tracedata->isect, &tracedata->ray, -1);
+ ShaderData *original_sd = (ShaderData *)(sg->renderstate);
+ int bounce = original_sd->ray_depth + 1;
+
+ shader_setup_from_ray(kg, sd, &tracedata->isect, &tracedata->ray, bounce);
tracedata->setup = true;
}
Modified: branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_light_path.osl
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_light_path.osl 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/shaders/node_light_path.osl 2013-07-31 18:40:11 UTC (rev 58772)
@@ -38,6 +38,9 @@
IsTransmissionRay = raytype("refraction");
getattribute("path:ray_length", RayLength);
- getattribute("path:ray_depth", RayDepth);
+
+ int ray_depth;
+ getattribute("path:ray_depth", ray_depth);
+ RayDepth = (float)ray_depth;
}
Modified: branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_light_path.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_light_path.h 2013-07-31 18:14:18 UTC (rev 58771)
+++ branches/soc-2013-dingto/intern/cycles/kernel/svm/svm_light_path.h 2013-07-31 18:40:11 UTC (rev 58772)
@@ -34,7 +34,7 @@
case NODE_LP_transmission: info = (path_flag & PATH_RAY_TRANSMIT)? 1.0f: 0.0f; break;
case NODE_LP_backfacing: info = (sd->flag & SD_BACKFACING)? 1.0f: 0.0f; break;
case NODE_LP_ray_length: info = sd->ray_length; break;
- case NODE_LP_ray_depth: info = sd->ray_depth; break;
+ case NODE_LP_ray_depth: info = (float)sd->ray_depth; break;
}
stack_store_float(stack, out_offset, info);
More information about the Bf-blender-cvs
mailing list