[Bf-blender-cvs] [6406a4ea2ba] soc-2022-many-lights-sampling: Merge branch 'master' into soc-2022-many-lights-sampling

Jeffrey Liu noreply at git.blender.org
Wed Jul 20 02:36:15 CEST 2022


Commit: 6406a4ea2baf05e22e6d19187f699bfb43cd9d99
Author: Jeffrey Liu
Date:   Tue Jul 19 23:20:36 2022 -0400
Branches: soc-2022-many-lights-sampling
https://developer.blender.org/rB6406a4ea2baf05e22e6d19187f699bfb43cd9d99

Merge branch 'master' into soc-2022-many-lights-sampling

===================================================================



===================================================================

diff --cc intern/cycles/kernel/data_template.h
index 00000000000,b06ac62a5d8..cccb00c1adc
mode 000000,100644..100644
--- a/intern/cycles/kernel/data_template.h
+++ b/intern/cycles/kernel/data_template.h
@@@ -1,0 -1,206 +1,211 @@@
+ /* SPDX-License-Identifier: Apache-2.0
+  * Copyright 2011-2022 Blender Foundation */
+ 
+ #ifndef KERNEL_STRUCT_BEGIN
+ #  define KERNEL_STRUCT_BEGIN(name, parent)
+ #endif
+ #ifndef KERNEL_STRUCT_END
+ #  define KERNEL_STRUCT_END(name)
+ #endif
+ #ifndef KERNEL_STRUCT_MEMBER
+ #  define KERNEL_STRUCT_MEMBER(parent, type, name)
+ #endif
+ 
+ /* Background. */
+ 
+ KERNEL_STRUCT_BEGIN(KernelBackground, background)
+ /* xyz store direction, w the angle. float4 instead of float3 is used
+  * to ensure consistent padding/alignment across devices. */
+ KERNEL_STRUCT_MEMBER(background, float4, sun)
+ /* Only shader index. */
+ KERNEL_STRUCT_MEMBER(background, int, surface_shader)
+ KERNEL_STRUCT_MEMBER(background, int, volume_shader)
+ KERNEL_STRUCT_MEMBER(background, float, volume_step_size)
+ KERNEL_STRUCT_MEMBER(background, int, transparent)
+ KERNEL_STRUCT_MEMBER(background, float, transparent_roughness_squared_threshold)
+ /* Portal sampling. */
+ KERNEL_STRUCT_MEMBER(background, float, portal_weight)
+ KERNEL_STRUCT_MEMBER(background, int, num_portals)
+ KERNEL_STRUCT_MEMBER(background, int, portal_offset)
+ /* Sun sampling. */
+ KERNEL_STRUCT_MEMBER(background, float, sun_weight)
+ /* Importance map sampling. */
+ KERNEL_STRUCT_MEMBER(background, float, map_weight)
+ KERNEL_STRUCT_MEMBER(background, int, map_res_x)
+ KERNEL_STRUCT_MEMBER(background, int, map_res_y)
+ /* Multiple importance sampling. */
+ KERNEL_STRUCT_MEMBER(background, int, use_mis)
+ /* Lightgroup. */
+ KERNEL_STRUCT_MEMBER(background, int, lightgroup)
++/* Light Index. */
++KERNEL_STRUCT_MEMBER(background, int, light_index)
+ /* Padding. */
+ KERNEL_STRUCT_MEMBER(background, int, pad1)
+ KERNEL_STRUCT_MEMBER(background, int, pad2)
 -KERNEL_STRUCT_MEMBER(background, int, pad3)
+ KERNEL_STRUCT_END(KernelBackground)
+ 
+ /* BVH: own BVH2 if no native device acceleration struct used. */
+ 
+ KERNEL_STRUCT_BEGIN(KernelBVH, bvh)
+ KERNEL_STRUCT_MEMBER(bvh, int, root)
+ KERNEL_STRUCT_MEMBER(bvh, int, have_motion)
+ KERNEL_STRUCT_MEMBER(bvh, int, have_curves)
+ KERNEL_STRUCT_MEMBER(bvh, int, bvh_layout)
+ KERNEL_STRUCT_MEMBER(bvh, int, use_bvh_steps)
+ KERNEL_STRUCT_MEMBER(bvh, int, curve_subdivisions)
+ KERNEL_STRUCT_MEMBER(bvh, int, pad1)
+ KERNEL_STRUCT_MEMBER(bvh, int, pad2)
+ KERNEL_STRUCT_END(KernelBVH)
+ 
+ /* Film. */
+ 
+ KERNEL_STRUCT_BEGIN(KernelFilm, film)
+ /* XYZ to rendering color space transform. float4 instead of float3 to
+  * ensure consistent padding/alignment across devices. */
+ KERNEL_STRUCT_MEMBER(film, float4, xyz_to_r)
+ KERNEL_STRUCT_MEMBER(film, float4, xyz_to_g)
+ KERNEL_STRUCT_MEMBER(film, float4, xyz_to_b)
+ KERNEL_STRUCT_MEMBER(film, float4, rgb_to_y)
+ /* Rec709 to rendering color space. */
+ KERNEL_STRUCT_MEMBER(film, float4, rec709_to_r)
+ KERNEL_STRUCT_MEMBER(film, float4, rec709_to_g)
+ KERNEL_STRUCT_MEMBER(film, float4, rec709_to_b)
+ KERNEL_STRUCT_MEMBER(film, int, is_rec709)
+ /* Exposuse. */
+ KERNEL_STRUCT_MEMBER(film, float, exposure)
+ /* Passed used. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_flag)
+ KERNEL_STRUCT_MEMBER(film, int, light_pass_flag)
+ /* Pass offsets. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_stride)
+ KERNEL_STRUCT_MEMBER(film, int, pass_combined)
+ KERNEL_STRUCT_MEMBER(film, int, pass_depth)
+ KERNEL_STRUCT_MEMBER(film, int, pass_position)
+ KERNEL_STRUCT_MEMBER(film, int, pass_normal)
+ KERNEL_STRUCT_MEMBER(film, int, pass_roughness)
+ KERNEL_STRUCT_MEMBER(film, int, pass_motion)
+ KERNEL_STRUCT_MEMBER(film, int, pass_motion_weight)
+ KERNEL_STRUCT_MEMBER(film, int, pass_uv)
+ KERNEL_STRUCT_MEMBER(film, int, pass_object_id)
+ KERNEL_STRUCT_MEMBER(film, int, pass_material_id)
+ KERNEL_STRUCT_MEMBER(film, int, pass_diffuse_color)
+ KERNEL_STRUCT_MEMBER(film, int, pass_glossy_color)
+ KERNEL_STRUCT_MEMBER(film, int, pass_transmission_color)
+ KERNEL_STRUCT_MEMBER(film, int, pass_diffuse_indirect)
+ KERNEL_STRUCT_MEMBER(film, int, pass_glossy_indirect)
+ KERNEL_STRUCT_MEMBER(film, int, pass_transmission_indirect)
+ KERNEL_STRUCT_MEMBER(film, int, pass_volume_indirect)
+ KERNEL_STRUCT_MEMBER(film, int, pass_diffuse_direct)
+ KERNEL_STRUCT_MEMBER(film, int, pass_glossy_direct)
+ KERNEL_STRUCT_MEMBER(film, int, pass_transmission_direct)
+ KERNEL_STRUCT_MEMBER(film, int, pass_volume_direct)
+ KERNEL_STRUCT_MEMBER(film, int, pass_emission)
+ KERNEL_STRUCT_MEMBER(film, int, pass_background)
+ KERNEL_STRUCT_MEMBER(film, int, pass_ao)
+ KERNEL_STRUCT_MEMBER(film, float, pass_alpha_threshold)
+ KERNEL_STRUCT_MEMBER(film, int, pass_shadow)
+ KERNEL_STRUCT_MEMBER(film, float, pass_shadow_scale)
+ KERNEL_STRUCT_MEMBER(film, int, pass_shadow_catcher)
+ KERNEL_STRUCT_MEMBER(film, int, pass_shadow_catcher_sample_count)
+ KERNEL_STRUCT_MEMBER(film, int, pass_shadow_catcher_matte)
+ /* Cryptomatte. */
+ KERNEL_STRUCT_MEMBER(film, int, cryptomatte_passes)
+ KERNEL_STRUCT_MEMBER(film, int, cryptomatte_depth)
+ KERNEL_STRUCT_MEMBER(film, int, pass_cryptomatte)
+ /* Adaptive sampling. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_adaptive_aux_buffer)
+ KERNEL_STRUCT_MEMBER(film, int, pass_sample_count)
+ /* Mist. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_mist)
+ KERNEL_STRUCT_MEMBER(film, float, mist_start)
+ KERNEL_STRUCT_MEMBER(film, float, mist_inv_depth)
+ KERNEL_STRUCT_MEMBER(film, float, mist_falloff)
+ /* Denoising. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_denoising_normal)
+ KERNEL_STRUCT_MEMBER(film, int, pass_denoising_albedo)
+ KERNEL_STRUCT_MEMBER(film, int, pass_denoising_depth)
+ /* AOVs. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_aov_color)
+ KERNEL_STRUCT_MEMBER(film, int, pass_aov_value)
+ /* Light groups. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_lightgroup)
+ /* Baking. */
+ KERNEL_STRUCT_MEMBER(film, int, pass_bake_primitive)
+ KERNEL_STRUCT_MEMBER(film, int, pass_bake_differential)
+ /* Shadow catcher. */
+ KERNEL_STRUCT_MEMBER(film, int, use_approximate_shadow_catcher)
+ /* Padding. */
+ KERNEL_STRUCT_MEMBER(film, int, pad1)
+ KERNEL_STRUCT_MEMBER(film, int, pad2)
+ KERNEL_STRUCT_END(KernelFilm)
+ 
+ /* Integrator. */
+ 
+ KERNEL_STRUCT_BEGIN(KernelIntegrator, integrator)
+ /* Emission. */
+ KERNEL_STRUCT_MEMBER(integrator, int, use_direct_light)
+ KERNEL_STRUCT_MEMBER(integrator, int, num_distribution)
++KERNEL_STRUCT_MEMBER(integrator, int, num_distant_lights)
+ KERNEL_STRUCT_MEMBER(integrator, int, num_all_lights)
+ KERNEL_STRUCT_MEMBER(integrator, float, pdf_triangles)
+ KERNEL_STRUCT_MEMBER(integrator, float, pdf_lights)
+ KERNEL_STRUCT_MEMBER(integrator, float, light_inv_rr_threshold)
+ /* Bounces. */
+ KERNEL_STRUCT_MEMBER(integrator, int, min_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, max_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, max_diffuse_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, max_glossy_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, max_transmission_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, max_volume_bounce)
+ /* AO bounces. */
+ KERNEL_STRUCT_MEMBER(integrator, int, ao_bounces)
+ KERNEL_STRUCT_MEMBER(integrator, float, ao_bounces_distance)
+ KERNEL_STRUCT_MEMBER(integrator, float, ao_bounces_factor)
+ KERNEL_STRUCT_MEMBER(integrator, float, ao_additive_factor)
+ /* Transparency. */
+ KERNEL_STRUCT_MEMBER(integrator, int, transparent_min_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, transparent_max_bounce)
+ KERNEL_STRUCT_MEMBER(integrator, int, transparent_shadows)
+ /* Caustics. */
+ KERNEL_STRUCT_MEMBER(integrator, int, caustics_reflective)
+ KERNEL_STRUCT_MEMBER(integrator, int, caustics_refractive)
+ KERNEL_STRUCT_MEMBER(integrator, float, filter_glossy)
+ /* Seed. */
+ KERNEL_STRUCT_MEMBER(integrator, int, seed)
+ /* Clamp. */
+ KERNEL_STRUCT_MEMBER(integrator, float, sample_clamp_direct)
+ KERNEL_STRUCT_MEMBER(integrator, float, sample_clamp_indirect)
+ /* MIS. */
+ KERNEL_STRUCT_MEMBER(integrator, int, use_lamp_mis)
+ /* Caustics. */
+ KERNEL_STRUCT_MEMBER(integrator, int, use_caustics)
+ /* Sampling pattern. */
+ KERNEL_STRUCT_MEMBER(integrator, int, sampling_pattern)
+ KERNEL_STRUCT_MEMBER(integrator, float, scrambling_distance)
+ /* Volume render. */
+ KERNEL_STRUCT_MEMBER(integrator, int, use_volumes)
+ KERNEL_STRUCT_MEMBER(integrator, int, volume_max_steps)
+ KERNEL_STRUCT_MEMBER(integrator, float, volume_step_rate)
+ /* Shadow catcher. */
+ KERNEL_STRUCT_MEMBER(integrator, int, has_shadow_catcher)
+ /* Closure filter. */
+ KERNEL_STRUCT_MEMBER(integrator, int, filter_closures)
+ /* MIS debugging. */
+ KERNEL_STRUCT_MEMBER(integrator, int, direct_light_sampling_type)
++/* Light tree. */
++KERNEL_STRUCT_MEMBER(integrator, int, use_light_tree)
++KERNEL_STRUCT_MEMBER(integrator, float, splitting_threshold)
+ /* Padding */
+ KERNEL_STRUCT_MEMBER(integrator, int, pad1)
+ KERNEL_STRUCT_END(KernelIntegrator)
+ 
+ /* SVM. For shader specialization. */
+ 
+ KERNEL_STRUCT_BEGIN(KernelSVMUsage, svm_usage)
+ #define SHADER_NODE_TYPE(type) KERNEL_STRUCT_MEMBER(svm_usage, int, type)
+ #include "kernel/svm/node_types_template.h"
+ KERNEL_STRUCT_END(KernelSVMUsage)
+ 
+ #undef KERNEL_STRUCT_BEGIN
+ #undef KERNEL_STRUCT_MEMBER
+ #undef KERNEL_STRUCT_END
diff --cc intern/cycles/kernel/integrator/shade_background.h
index 495bcb1cdaa,a7edfffd175..171b756240c
--- a/intern/cycles/kernel/integrator/shade_background.h
+++ b/intern/cycles/kernel/integrator/shade_background.h
@@@ -66,12 -65,7 +66,11 @@@ ccl_device float3 integrator_eval_backg
  
      /* multiple importance sampling, get background light pdf for ray
       * direction, and compute weight with respect to BSDF pdf */
-     float pdf = background_light_pdf(kg, ray_P - ray_D * mis_ray_t, ray_D);
 -    const float pdf = background_light_pdf(kg, ray_P, ray_D);
++    float pdf = background_light_pdf(kg, ray_P, ray_D);
 +    if (kernel_data.integrator.use_light_tree) {
 +      const float3 N = INTEGRATOR_STATE(state, path, mis_origin_n);
 +      pdf *= distant_lights_pdf(kg, ray_P, N, kernel_data.background.light_index);
 +    }
      const float mis_weight = light_sample_mis_weight_forward(kg, mis_ray_pdf, pdf

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list