[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55728] trunk/blender/intern/cycles/kernel : Cycles: small code cleanup + fix SSS closure mixed with other closures doing
Brecht Van Lommel
brechtvanlommel at pandora.be
Tue Apr 2 18:37:29 CEST 2013
Revision: 55728
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55728
Author: blendix
Date: 2013-04-02 16:37:28 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Cycles: small code cleanup + fix SSS closure mixed with other closures doing
a bit too much work.
Modified Paths:
--------------
trunk/blender/intern/cycles/kernel/kernel_displace.h
trunk/blender/intern/cycles/kernel/kernel_emission.h
trunk/blender/intern/cycles/kernel/kernel_path.h
trunk/blender/intern/cycles/kernel/kernel_shader.h
trunk/blender/intern/cycles/kernel/kernel_subsurface.h
trunk/blender/intern/cycles/kernel/kernel_types.h
Modified: trunk/blender/intern/cycles/kernel/kernel_displace.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_displace.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_displace.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -66,8 +66,6 @@
out = shader_eval_background(kg, &sd, flag, SHADER_CONTEXT_MAIN);
}
- shader_release(kg, &sd);
-
/* write output */
output[i] = make_float4(out.x, out.y, out.z, 0.0f);
}
Modified: trunk/blender/intern/cycles/kernel/kernel_emission.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_emission.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_emission.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -69,8 +69,6 @@
eval *= ls->eval_fac;
- shader_release(kg, &sd);
-
return eval;
}
@@ -207,7 +205,6 @@
ShaderData sd;
shader_setup_from_background(kg, &sd, ray);
float3 L = shader_eval_background(kg, &sd, path_flag, SHADER_CONTEXT_EMISSION);
- shader_release(kg, &sd);
#ifdef __BACKGROUND_MIS__
/* check if background light exists or if we should skip pdf */
Modified: trunk/blender/intern/cycles/kernel/kernel_path.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_path.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_path.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -216,8 +216,6 @@
if(ray->t != FLT_MAX)
ray->D = normalize_len(Pend - ray->P, &ray->t);
- shader_release(kg, &sd);
-
bounce++;
}
}
@@ -327,10 +325,8 @@
L_transparent += average(holdout_weight*throughput);
}
- if(sd.flag & SD_HOLDOUT_MASK) {
- shader_release(kg, &sd);
+ if(sd.flag & SD_HOLDOUT_MASK)
break;
- }
}
#endif
@@ -349,10 +345,8 @@
float probability = path_state_terminate_probability(kg, &state, throughput);
float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
- if(terminate >= probability) {
- shader_release(kg, &sd);
+ if(terminate >= probability)
break;
- }
throughput /= probability;
@@ -437,10 +431,8 @@
#endif
/* no BSDF? we can stop here */
- if(!(sd.flag & SD_BSDF)) {
- shader_release(kg, &sd);
+ if(!(sd.flag & SD_BSDF))
break;
- }
/* sample BSDF */
float bsdf_pdf;
@@ -454,8 +446,6 @@
label = shader_bsdf_sample(kg, &sd, bsdf_u, bsdf_v, &bsdf_eval,
&bsdf_omega_in, &bsdf_domega_in, &bsdf_pdf);
- shader_release(kg, &sd);
-
if(bsdf_pdf == 0.0f || bsdf_eval_is_zero(&bsdf_eval))
break;
@@ -579,10 +569,8 @@
float probability = path_state_terminate_probability(kg, &state, throughput*num_samples_adjust);
float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
- if(terminate >= probability) {
- shader_release(kg, &sd);
+ if(terminate >= probability)
break;
- }
throughput /= probability;
@@ -668,10 +656,8 @@
#endif
/* no BSDF? we can stop here */
- if(!(sd.flag & SD_BSDF)) {
- shader_release(kg, &sd);
+ if(!(sd.flag & SD_BSDF))
break;
- }
/* sample BSDF */
float bsdf_pdf;
@@ -685,8 +671,6 @@
label = shader_bsdf_sample(kg, &sd, bsdf_u, bsdf_v, &bsdf_eval,
&bsdf_omega_in, &bsdf_domega_in, &bsdf_pdf);
- shader_release(kg, &sd);
-
if(bsdf_pdf == 0.0f || bsdf_eval_is_zero(&bsdf_eval))
break;
@@ -967,10 +951,8 @@
L_transparent += average(holdout_weight*throughput);
}
- if(sd.flag & SD_HOLDOUT_MASK) {
- shader_release(kg, &sd);
+ if(sd.flag & SD_HOLDOUT_MASK)
break;
- }
}
#endif
@@ -990,10 +972,8 @@
float probability = path_state_terminate_probability(kg, &state, throughput);
float terminate = path_rng(kg, rng, sample, rng_offset + PRNG_TERMINATE);
- if(terminate >= probability) {
- shader_release(kg, &sd);
+ if(terminate >= probability)
break;
- }
throughput /= probability;
}
@@ -1033,7 +1013,6 @@
/* continue in case of transparency */
throughput *= shader_bsdf_transparency(kg, &sd);
- shader_release(kg, &sd);
if(is_zero(throughput))
break;
Modified: trunk/blender/intern/cycles/kernel/kernel_shader.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_shader.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_shader.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -925,12 +925,5 @@
}
#endif
-/* Free ShaderData */
-
-__device void shader_release(KernelGlobals *kg, ShaderData *sd)
-{
- /* nothing to do currently */
-}
-
CCL_NAMESPACE_END
Modified: trunk/blender/intern/cycles/kernel/kernel_subsurface.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_subsurface.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_subsurface.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -143,6 +143,7 @@
sc->data0 = 0.0f;
sc->data1 = 0.0f;
sc->N = sd->N;
+ sd->flag &= ~SD_CLOSURE_FLAGS;
sd->flag |= bsdf_diffuse_setup(sc);
sd->randb_closure = 0.0f;
Modified: trunk/blender/intern/cycles/kernel/kernel_types.h
===================================================================
--- trunk/blender/intern/cycles/kernel/kernel_types.h 2013-04-02 15:53:24 UTC (rev 55727)
+++ trunk/blender/intern/cycles/kernel/kernel_types.h 2013-04-02 16:37:28 UTC (rev 55728)
@@ -452,6 +452,8 @@
SD_VOLUME = 128, /* have volume closure? */
SD_AO = 256, /* have ao closure? */
+ SD_CLOSURE_FLAGS = (SD_EMISSION|SD_BSDF|SD_BSDF_HAS_EVAL|SD_BSDF_GLOSSY|SD_BSSRDF|SD_HOLDOUT|SD_VOLUME|SD_AO),
+
/* shader flags */
SD_SAMPLE_AS_LIGHT = 512, /* direct light sample */
SD_HAS_SURFACE_TRANSPARENT = 1024, /* has surface transparency */
More information about the Bf-blender-cvs
mailing list