[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60536] branches/soc-2013-dingto/intern/ cycles/kernel: Volume:
Thomas Dinges
blender at dingto.org
Thu Oct 3 23:04:11 CEST 2013
Revision: 60536
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60536
Author: dingto
Date: 2013-10-03 21:04:11 +0000 (Thu, 03 Oct 2013)
Log Message:
-----------
Volume:
* Some code cleanup for shadow_blocked_new, renamed to shadow_blocked_volume() now.
* Also re-order the parameters, so the first 4 match the shadow_blocked() function.
Modified Paths:
--------------
branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h 2013-10-03 16:39:30 UTC (rev 60535)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_path.h 2013-10-03 21:04:11 UTC (rev 60536)
@@ -681,7 +681,7 @@
#ifdef __VOLUME__
float tmp_volume_pdf;
- if(!shadow_blocked_new(kg, rng, rng_offset, &rng_congruential, sample, &state, &light_ray, &ao_shadow, media_volume_shader, &tmp_volume_pdf))
+ if(!shadow_blocked_volume(kg, &state, &light_ray, &ao_shadow, rng, &rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf))
#else
if(!shadow_blocked(kg, &state, &light_ray, &ao_shadow))
#endif
@@ -771,7 +771,7 @@
float3 shadow;
#ifdef __VOLUME__
float tmp_volume_pdf;
- if(!shadow_blocked_new(kg, rng, rng_offset, &rng_congruential, sample, &state, &light_ray, &shadow, media_volume_shader, &tmp_volume_pdf)) {
+ if(!shadow_blocked_volume(kg, &state, &light_ray, &shadow, rng, &rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf)) {
#else
if(!shadow_blocked(kg, &state, &light_ray, &shadow)) {
#endif
Modified: branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h
===================================================================
--- branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h 2013-10-03 16:39:30 UTC (rev 60535)
+++ branches/soc-2013-dingto/intern/cycles/kernel/kernel_volume.h 2013-10-03 21:04:11 UTC (rev 60536)
@@ -715,23 +715,22 @@
return attenuation;
}
-
-
-__device bool shadow_blocked_new(KernelGlobals *kg, RNG *rng, int rng_offset, RNG *rng_congruential, int sample, PathState *state,
- Ray *ray, float3 *shadow, int media_volume_shader, float *volume_pdf)
+__device_inline bool shadow_blocked_volume(KernelGlobals *kg, PathState *state, Ray *ray, float3 *shadow,
+ RNG *rng, RNG *rng_congruential, int rng_offset, int sample, int media_volume_shader, float *volume_pdf)
{
*shadow = make_float3(1.0f, 1.0f, 1.0f);
*volume_pdf = 1.0f;
- float tmp_volume_pdf;
if(ray->t == 0.0f)
return false;
+
+ float tmp_volume_pdf;
uint visibility = path_state_ray_visibility(kg, state);
visibility |= PATH_RAY_SHADOW_OPAQUE;
Intersection isect;
#ifdef __HAIR__
-// bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect);
+// bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect, NULL, 0.0f, 0.0f);
bool result = scene_intersect(kg, ray, visibility, &isect, NULL, 0.0f, 0.0f);
#else
// bool result = scene_intersect(kg, ray, PATH_RAY_SHADOW_OPAQUE, &isect);
@@ -772,6 +771,7 @@
#endif
}
#ifdef __HAIR__
+// if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect, NULL, 0.0f, 0.0f)) {
if(!scene_intersect(kg, ray, visibility, &isect, NULL, 0.0f, 0.0f)) {
#else
// if(!scene_intersect(kg, ray, PATH_RAY_SHADOW_TRANSPARENT, &isect)) {
@@ -809,18 +809,16 @@
bounce++;
-// swap_media();
- if (media_volume_shader == kernel_data.background.shader)
+ if(media_volume_shader == kernel_data.background.shader)
media_volume_shader = sd.shader;
else
media_volume_shader = kernel_data.background.shader;
-
}
}
}
#endif
- if(! result) {
+ if(!result) {
float3 attenuation = kernel_volume_get_shadow_attenuation(kg, rng, rng_offset, rng_congruential, sample, ray, media_volume_shader, &tmp_volume_pdf);
*shadow *= attenuation;
*volume_pdf *= tmp_volume_pdf;
@@ -829,7 +827,6 @@
return result;
}
-
/* volumetric tracing */
__device int kernel_path_trace_volume(KernelGlobals *kg, RNG *rng, int rng_offset, RNG *rng_congruential, int sample,
Ray *ray, Intersection *isect, float isect_t, PathState *state, int media_volume_shader, float3 *throughput,
@@ -916,7 +913,7 @@
float3 shadow;
float tmp_volume_pdf;
- if(!shadow_blocked_new(kg, rng, rng_offset, rng_congruential, sample, state, &light_ray, &shadow, media_volume_shader, &tmp_volume_pdf)) {
+ if(!shadow_blocked_volume(kg, state, &light_ray, &shadow, rng, rng_congruential, rng_offset, sample, media_volume_shader, &tmp_volume_pdf)) {
/* accumulate */
// bool is_lamp = (lamp != ~0);
path_radiance_accum_light(L, *throughput, &L_light, shadow, 1.0f, state->bounce, is_lamp);
More information about the Bf-blender-cvs
mailing list