Cycles: experimental correlated multi-jittered sampling pattern that can be used
instead of sobol. So far one doesn't seem to be consistently better or worse than the other for the same number of samples but more testing is needed. The random number generator itself is slower than sobol for most number of samples, except 16, 64, 256, .. because they can be computed faster. This can probably be optimized, but we can do that when/if this actually turns out to be useful. Paper this implementation is based on: http://graphics.pixar.com/library/MultiJitteredSampling/ Also includes some refactoring of RNG code, fixing a Sobol correlation issue with the first BSDF and < 16 samples, skipping some unneeded RNG calls and using a simpler unit square to unit disk function.
This commit is contained in:
@@ -114,6 +114,11 @@ enum_use_layer_samples = (
|
||||
('IGNORE', "Ignore", "Ignore per render layer number of samples"),
|
||||
)
|
||||
|
||||
enum_sampling_pattern = (
|
||||
('SOBOL', "Sobol", "Use Sobol random sampling pattern"),
|
||||
('CORRELATED_MUTI_JITTER', "Correlated Multi-Jitter", "Use Correlated Multi-Jitter random sampling pattern"),
|
||||
)
|
||||
|
||||
|
||||
class CyclesRenderSettings(bpy.types.PropertyGroup):
|
||||
@classmethod
|
||||
@@ -219,6 +224,13 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
|
||||
default=1,
|
||||
)
|
||||
|
||||
cls.sampling_pattern = EnumProperty(
|
||||
name="Sampling Pattern",
|
||||
description="Random sampling pattern used by the integrator",
|
||||
items=enum_sampling_pattern,
|
||||
default='SOBOL',
|
||||
)
|
||||
|
||||
cls.use_layer_samples = EnumProperty(
|
||||
name="Layer Samples",
|
||||
description="How to use per render layer sample settings",
|
||||
|
||||
Reference in New Issue
Block a user