[Bf-blender-cvs] [9c6ef48315c] soc-2020-production-ready-light-tree-2: Cycles: Removed some unused light tree code
Sam Kottler
noreply at git.blender.org
Mon Aug 17 20:39:02 CEST 2020
Commit: 9c6ef48315c47a39caf53bd2a8ed6bd6542287da
Author: Sam Kottler
Date: Mon Aug 17 13:38:50 2020 -0500
Branches: soc-2020-production-ready-light-tree-2
https://developer.blender.org/rB9c6ef48315c47a39caf53bd2a8ed6bd6542287da
Cycles: Removed some unused light tree code
===================================================================
M intern/cycles/kernel/kernel_bake.h
M intern/cycles/kernel/kernel_emission.h
M intern/cycles/kernel/kernel_path.h
M intern/cycles/kernel/kernel_path_surface.h
M intern/cycles/kernel/kernel_path_volume.h
M intern/cycles/kernel/kernel_types.h
===================================================================
diff --git a/intern/cycles/kernel/kernel_bake.h b/intern/cycles/kernel/kernel_bake.h
index 4bd6fa84c3a..3a4c705a886 100644
--- a/intern/cycles/kernel/kernel_bake.h
+++ b/intern/cycles/kernel/kernel_bake.h
@@ -64,8 +64,7 @@ ccl_device_noinline void compute_light_pass(
/* sample emission */
if ((pass_filter & BAKE_FILTER_EMISSION) && (sd->flag & SD_EMISSION)) {
- float3 emission = indirect_primitive_emission(
- kg, sd, 0.0f, sd->P_pick, sd->N_pick, state.flag, state.ray_pdf);
+ float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);
path_radiance_accum_emission(kg, L, &state, throughput, emission);
}
@@ -123,8 +122,7 @@ ccl_device_noinline void compute_light_pass(
/* sample emission */
if ((pass_filter & BAKE_FILTER_EMISSION) && (sd->flag & SD_EMISSION)) {
- float3 emission = indirect_primitive_emission(
- kg, sd, 0.0f, sd->P_pick, sd->N_pick, state.flag, state.ray_pdf);
+ float3 emission = indirect_primitive_emission(kg, sd, 0.0f, state.flag, state.ray_pdf);
path_radiance_accum_emission(kg, L, &state, throughput, emission);
}
diff --git a/intern/cycles/kernel/kernel_emission.h b/intern/cycles/kernel/kernel_emission.h
index 2a864ab24d0..6c6d8808753 100644
--- a/intern/cycles/kernel/kernel_emission.h
+++ b/intern/cycles/kernel/kernel_emission.h
@@ -207,7 +207,7 @@ ccl_device_noinline_cpu bool direct_emission(KernelGlobals *kg,
/* Indirect Primitive Emission */
ccl_device_noinline_cpu float3 indirect_primitive_emission(
- KernelGlobals *kg, ShaderData *sd, float t, float3 P, float3 N, int path_flag, float bsdf_pdf)
+ KernelGlobals *kg, ShaderData *sd, float t, int path_flag, float bsdf_pdf)
{
/* evaluate emissive closure */
float3 L = shader_emissive_eval(sd);
@@ -222,12 +222,7 @@ ccl_device_noinline_cpu float3 indirect_primitive_emission(
/* multiple importance sampling, get triangle light pdf,
* and compute weight with respect to BSDF pdf */
float pdf = triangle_light_pdf(kg, sd, t);
- if ((path_flag & PATH_RAY_VOLUME_SCATTER) && sd->t_pick > 0.0f) {
- pdf *= light_distribution_pdf(kg, sd->P_pick, sd->N_pick, sd->t_pick, sd->prim, sd->object);
- }
- else {
- pdf *= light_distribution_pdf(kg, P, N, -1.0f, sd->prim, sd->object);
- }
+ pdf *= light_distribution_pdf(kg, sd->P_pick, sd->N_pick, sd->t_pick, sd->prim, sd->object);
float mis_weight = power_heuristic(bsdf_pdf, pdf);
return L * mis_weight;
@@ -241,7 +236,6 @@ ccl_device_noinline_cpu float3 indirect_primitive_emission(
ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
ShaderData *emission_sd,
ccl_addr_space PathState *state,
- float3 N,
PathRadiance *L,
Ray *ray,
float3 throughput)
@@ -285,13 +279,8 @@ ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
* and compute weight with respect to BSDF pdf */
/* multiply with light picking probablity to pdf */
- if ((state->flag & PATH_RAY_VOLUME_SCATTER) && emission_sd->t_pick > 0.0f) {
- ls.pdf *= light_distribution_pdf(
- kg, emission_sd->P_pick, emission_sd->N_pick, emission_sd->t_pick, ~ls.lamp, -1);
- }
- else {
- ls.pdf *= light_distribution_pdf(kg, ray->P, N, -1.0f, ~ls.lamp, -1);
- }
+ ls.pdf *= light_distribution_pdf(
+ kg, emission_sd->P_pick, emission_sd->N_pick, emission_sd->t_pick, ~ls.lamp, -1);
float mis_weight = power_heuristic(state->ray_pdf, ls.pdf);
lamp_L *= mis_weight;
}
@@ -304,7 +293,6 @@ ccl_device_noinline_cpu void indirect_lamp_emission(KernelGlobals *kg,
ccl_device_noinline_cpu float3 indirect_background(KernelGlobals *kg,
ShaderData *emission_sd,
- float3 N,
ccl_addr_space PathState *state,
ccl_global float *buffer,
ccl_addr_space Ray *ray)
@@ -343,22 +331,15 @@ ccl_device_noinline_cpu float3 indirect_background(KernelGlobals *kg,
/* Background MIS weights. */
# ifdef __BACKGROUND_MIS__
+ /* Check if background light exists or if we should skip pdf. */
/* consider shading point at previous non-transparent bounce */
- float3 P_pick;
- float3 N_pick;
-
- P_pick = ray->P - state->ray_t * ray->D;
- N_pick = state->ray_N;
-
- /* check if background light exists or if we should skip pdf */
+ float3 P_pick = ray->P - state->ray_t * ray->D;
if (!(state->flag & PATH_RAY_MIS_SKIP) && kernel_data.background.use_mis) {
/* multiple importance sampling, get background light pdf for ray
* direction, and compute weight with respect to BSDF pdf */
float pdf = background_light_pdf(kg, P_pick, ray->D);
- int background_index = kernel_data.integrator.background_light_index;
- pdf *= light_distribution_pdf(kg, P_pick, N_pick, 1.0f, ~background_index, -1);
float mis_weight = power_heuristic(state->ray_pdf, pdf);
return L * mis_weight;
diff --git a/intern/cycles/kernel/kernel_path.h b/intern/cycles/kernel/kernel_path.h
index b2f207bc41f..871004db769 100644
--- a/intern/cycles/kernel/kernel_path.h
+++ b/intern/cycles/kernel/kernel_path.h
@@ -97,9 +97,8 @@ ccl_device_forceinline void kernel_path_lamp_emission(KernelGlobals *kg,
if (kernel_data.integrator.use_lamp_mis && !(state->flag & PATH_RAY_CAMERA)) {
/* ray starting from previous non-transparent bounce */
Ray light_ray ccl_optional_struct_init;
- float3 N_pick;
+
light_ray.P = ray->P - state->ray_t * ray->D;
- N_pick = state->ray_N;
state->ray_t += isect->t;
light_ray.D = ray->D;
@@ -109,7 +108,7 @@ ccl_device_forceinline void kernel_path_lamp_emission(KernelGlobals *kg,
light_ray.dP = ray->dP;
/* intersect with lamp */
- indirect_lamp_emission(kg, emission_sd, state, N_pick, L, &light_ray, throughput);
+ indirect_lamp_emission(kg, emission_sd, state, L, &light_ray, throughput);
}
#endif /* __LAMP_MIS__ */
}
@@ -140,7 +139,7 @@ ccl_device_forceinline void kernel_path_background(KernelGlobals *kg,
#ifdef __BACKGROUND__
/* sample background shader */
- float3 L_background = indirect_background(kg, sd, sd->N_pick, state, buffer, ray);
+ float3 L_background = indirect_background(kg, sd, state, buffer, ray);
path_radiance_accum_background(kg, L, state, throughput, L_background);
#endif /* __BACKGROUND__ */
}
@@ -275,7 +274,7 @@ ccl_device_forceinline bool kernel_path_shader_apply(KernelGlobals *kg,
float3 bg = make_float3(0.0f, 0.0f, 0.0f);
if (!kernel_data.background.transparent) {
- bg = indirect_background(kg, emission_sd, sd->N_pick, state, NULL, ray);
+ bg = indirect_background(kg, emission_sd, state, NULL, ray);
}
path_radiance_accum_shadowcatcher(L, throughput, bg);
}
@@ -317,25 +316,12 @@ ccl_device_forceinline bool kernel_path_shader_apply(KernelGlobals *kg,
#ifdef __EMISSION__
/* emission */
if (sd->flag & SD_EMISSION) {
-
- /* ray starting from previous non-transparent bounce */
- float3 P_pick;
- float3 N_pick;
- P_pick = ray->P - state->ray_t * ray->D;
- N_pick = state->ray_N;
-
- float ray_length = state->ray_t + sd->ray_length;
-
float3 emission = indirect_primitive_emission(
- kg, sd, ray_length, P_pick, N_pick, state->flag, state->ray_pdf);
+ kg, sd, sd->ray_length, state->flag, state->ray_pdf);
path_radiance_accum_emission(kg, L, state, throughput, emission);
}
#endif /* __EMISSION__ */
-#if defined(__LAMP_MIS__) || defined(__EMISSION__) || defined(__BACKGROUND_MIS__)
- state->ray_t += sd->ray_length;
-#endif
-
return true;
}
diff --git a/intern/cycles/kernel/kernel_path_surface.h b/intern/cycles/kernel/kernel_path_surface.h
index 71275bda499..576b307bec2 100644
--- a/intern/cycles/kernel/kernel_path_surface.h
+++ b/intern/cycles/kernel/kernel_path_surface.h
@@ -327,7 +327,7 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
else {
int num_lights = 0;
if (kernel_data.integrator.use_direct_light) {
- if (sample_all_lights && !use_light_tree) {
+ if (sample_all_lights) {
num_lights = kernel_data.integrator.num_all_lights;
if (kernel_data.integrator.pdf_triangles != 0.0f) {
num_lights += 1;
@@ -346,7 +346,7 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
bool is_mesh_light = false;
bool is_lamp = false;
- if (sample_all_lights && !use_light_tree) {
+ if (sample_all_lights) {
/* lamp sampling */
is_lamp = i < kernel_data.integrator.num_all_lights;
if (is_lamp) {
@@ -374,13 +374,12 @@ ccl_device_noinline_cpu void kernel_branched_path_surface_connect_light(
# ifdef __OBJECT_MOTION__
light_ray.time = sd->time;
# endif
- float light_u, light_v;
- float terminate;
if (kernel_data.integrator.use_direct_light && (sd->flag & SD_BSDF_HAS_EVAL)) {
+ float light_u, light_v;
path_branched_rng_2D(
kg, lamp_rng_hash, state, j, num_samples, PRNG_LIGHT_U, &light_u, &light_v);
- terminate = path_branched_rng_light_termination(
+ float terminate = path_branched_rng_light_termination(
kg, lamp_rng_hash, state, j, num_samples);
/* only sample triangle lights */
@@ -591,7 +590,7 @@ ccl_device bool kernel_path_surface_bounce(KernelGlobals *kg,
/* set labels */
if (!(label & LABEL_TRANSPARENT)) {
state->ray_pdf = bsdf_pdf;
-#if defined(__LAMP_MIS__) || defined(__EMISSION__) || defined(__BACKGROUND_MIS__)
+#ifdef __LAMP_MIS__
state->ray_t = 0.0f;
#endif
state->min_ray_pdf =
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list