void compute_ibl( SamplingContext& sampling_context, const ShadingContext& shading_context, const EnvironmentEDF& environment_edf, const ShadingPoint& shading_point, const Vector3d& outgoing, const BSDF& bsdf, const void* bsdf_data, const int bsdf_sampling_modes, const int env_sampling_modes, const size_t bsdf_sample_count, const size_t env_sample_count, Spectrum& radiance) { assert(is_normalized(outgoing)); // Compute IBL by sampling the BSDF. compute_ibl_bsdf_sampling( sampling_context, shading_context, environment_edf, shading_point, outgoing, bsdf, bsdf_data, bsdf_sampling_modes, bsdf_sample_count, env_sample_count, radiance); // Compute IBL by sampling the environment. Spectrum radiance_env_sampling; compute_ibl_environment_sampling( sampling_context, shading_context, environment_edf, shading_point, outgoing, bsdf, bsdf_data, env_sampling_modes, bsdf_sample_count, env_sample_count, radiance_env_sampling); radiance += radiance_env_sampling; }
void compute_ibl( SamplingContext& sampling_context, const ShadingContext& shading_context, const EnvironmentEDF& environment_edf, const BSSRDF& bssrdf, const void* bssrdf_data, const ShadingPoint& incoming_point, const ShadingPoint& outgoing_point, const Dual3d& outgoing, const size_t bssrdf_sample_count, const size_t env_sample_count, Spectrum& radiance) { assert(is_normalized(outgoing.get_value())); // Compute IBL by sampling the BSSRDF. compute_ibl_bssrdf_sampling( sampling_context, shading_context, environment_edf, bssrdf, bssrdf_data, incoming_point, outgoing_point, outgoing, bssrdf_sample_count, env_sample_count, radiance); // Compute IBL by sampling the environment. Spectrum radiance_env_sampling; compute_ibl_environment_sampling( sampling_context, shading_context, environment_edf, bssrdf, bssrdf_data, incoming_point, outgoing_point, outgoing, bssrdf_sample_count, env_sample_count, radiance_env_sampling); radiance += radiance_env_sampling; }