blender/intern/cycles/kernel
Sergey Sharybin 69dc0c3192 Cycles: Fixes for Burley BSSRDF
There are several fixes in here, which hopefully will make the shader
working correct without too much magic in there.

First of all, this commit brings BURLEY_TRUNCATE down from 30 to 16
which reduces noise a lot. It's still higher than original truncate
from Brecht, but this reduces PDF value at a cutoff distance by an
order of magnitude (now it's 0.008387, previously it was 0.063521
for the albedo of 0.8 and radius 1.0). This should converge to a
proper result faster and don't have artifacts.

This kind of reverts fix for T47356, but after additional thinking
came to conclusion Burley is not being totally smooth, it is about
giving less waxy results which it's kind of doing in the file.

Second of all, this commit fixes burley_eval() to use normalized
diffusion reflectance. This matches the way we calculate CDF and
solves numeric instability close to 0, making PDF profile looking
closer to other SSS profiles:

  https://developer.blender.org/F282355
  https://developer.blender.org/F282356
  https://developer.blender.org/F282357

Reviewers: brecht

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D1792
2016-02-13 13:29:13 +01:00
..
closure Cycles: Fixes for Burley BSSRDF 2016-02-13 13:29:13 +01:00
geom Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
kernels Cycles: ifdef some extra code when building split kernels 2016-02-05 14:11:16 +01:00
osl Cleanup: Remove some OIIO code for versions prior to 1.5. 2016-02-13 13:21:47 +01:00
shaders Cycles / OSL: Updare stdosl.h to 1.7.1. 2016-02-05 00:05:26 +01:00
split Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
svm Cycles: Implement approximate reflectance profiles 2016-02-04 13:27:23 +05:00
CMakeLists.txt Cycles: Cleanup of OpenCL split kernel routines 2016-01-30 00:23:06 +01:00
kernel_accumulate.h Cycles: Fix SSS object not properly reflected in glossy object with indirect clamping 2015-12-02 16:00:01 +05:00
kernel_bake.h Fix T46550: Cycles combined baking black in some cases. 2016-02-06 21:02:02 +01:00
kernel_camera.h Cycles: Cleanup, spelling and indentation 2016-01-14 17:01:56 +05:00
kernel_compat_cpu.h Cycles: Make Blender importer more forward compatible 2016-02-12 15:27:33 +01:00
kernel_compat_cuda.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_compat_opencl.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_debug.h Cycles: Add debug pass which shows number of instance pushes during camera ray intersection 2015-06-12 00:12:03 +02:00
kernel_differential.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_emission.h Cycles: Remove few function arguments needed only for the split kernel 2016-01-28 18:59:27 +01:00
kernel_film.h Cycles: Use native saturate function for CUDA 2015-04-28 00:38:32 +05:00
kernel_globals.h Cycles: Remove few function arguments needed only for the split kernel 2016-01-28 18:59:27 +01:00
kernel_jitter.h Fix T46671: Cycles assert with CMJ sample function 2015-11-03 18:49:27 +05:00
kernel_light.h Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
kernel_math.h Cycles: Add fast math function module 2015-01-31 01:49:41 +05:00
kernel_montecarlo.h Cycles code refactor: minor refactoring and comments for volume code. 2014-03-29 13:03:49 +01:00
kernel_passes.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_path_branched.h Cycles: Refactor how we pass bounce info to light path node. 2016-01-06 23:43:29 +01:00
kernel_path_common.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_path_state.h Cycles: Refactor how we pass bounce info to light path node. 2016-01-06 23:43:29 +01:00
kernel_path_surface.h Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
kernel_path_volume.h Cycles: Refactor how we pass bounce info to light path node. 2016-01-06 23:43:29 +01:00
kernel_path.h Cycles: Tweak inline policy for some functions 2016-01-14 14:53:05 +05:00
kernel_projection.h Cycles: Add Mirror ball mapping to camera panorama options 2015-04-25 23:51:56 +02:00
kernel_queues.h Cycles: Code cleanup in split kernel, whitespaces 2015-07-03 11:03:56 +02:00
kernel_random.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel_shader.h Cycles: Cleanup, indentation and braces 2016-02-03 15:00:55 +01:00
kernel_shadow.h Cycles: Cleanup of OpenCL split kernel routines 2016-01-30 00:23:06 +01:00
kernel_subsurface.h Fix Burley BSSRDF NaNs and fireflies. 2016-02-06 11:52:43 +01:00
kernel_textures.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
kernel_types.h Cycles: Make Blender importer more forward compatible 2016-02-12 15:27:33 +01:00
kernel_volume.h Cleanup: Remove outdated comment in volume code. 2016-01-24 12:31:36 +01:00
kernel_work_stealing.h Cycles: OpenCL kernel split 2015-05-09 19:52:40 +05:00
kernel.h Cycles: Deduplicte CPU kernel declaration and definition code 2015-12-30 17:54:02 +05:00