diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-10-29 19:31:55 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-10-29 19:31:55 +0300 |
commit | 34859b285aff14b022c9b175fa2babfff7c63314 (patch) | |
tree | a07bfadfa50a516af32ee9ef6fdc0c68302c55fb | |
parent | 405980b1facff4a76e3661a412eab1d072d0236f (diff) | |
parent | 6099b2620d645f4129c42af2272cb6bd8538fc7a (diff) |
Merge branch 'master' into blender2.8
-rw-r--r-- | intern/cycles/kernel/kernel_random.h | 9 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/cachefile.c | 3 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_cachefile_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_cachefile.c | 9 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_meshsequencecache.c | 1 |
6 files changed, 25 insertions, 3 deletions
diff --git a/intern/cycles/kernel/kernel_random.h b/intern/cycles/kernel/kernel_random.h index e7a6134b8eb..7a96806edac 100644 --- a/intern/cycles/kernel/kernel_random.h +++ b/intern/cycles/kernel/kernel_random.h @@ -31,10 +31,17 @@ CCL_NAMESPACE_BEGIN #ifdef __SOBOL__ +/* Skip initial numbers that for some dimensions have clear patterns that + * don't cover the entire sample space. Ideally we would have a better + * progressive pattern that doesn't suffer from this problem, because even + * with this offset some dimensions are quite poor. + */ +#define SOBOL_SKIP 64 + ccl_device uint sobol_dimension(KernelGlobals *kg, int index, int dimension) { uint result = 0; - uint i = index; + uint i = index + SOBOL_SKIP; for(uint j = 0; i; i >>= 1, j++) { if(i & 1) { result ^= kernel_tex_fetch(__sobol_directions, 32*dimension + j); diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c index 9d02a27187c..f8215668034 100644 --- a/source/blender/blenkernel/intern/cachefile.c +++ b/source/blender/blenkernel/intern/cachefile.c @@ -211,8 +211,9 @@ bool BKE_cachefile_filepath_get( float BKE_cachefile_time_offset(CacheFile *cache_file, const float time, const float fps) { + const float time_offset = cache_file->frame_offset / fps; const float frame = (cache_file->override_frame ? cache_file->frame : time); - return cache_file->is_sequence ? frame : frame / fps; + return cache_file->is_sequence ? frame : frame / fps - time_offset; } /* TODO(kevin): replace this with some depsgraph mechanism, or something similar. */ diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index d7fac303d4e..c4bb50bb68b 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -4362,6 +4362,9 @@ void uiTemplateCacheFile(uiLayout *layout, bContext *C, PointerRNA *ptr, const c uiItemR(row, &fileptr, "frame", 0, "Frame", ICON_NONE); row = uiLayoutRow(layout, false); + uiItemR(row, &fileptr, "frame_offset", 0, "Frame Offset", ICON_NONE); + + row = uiLayoutRow(layout, false); uiItemL(row, IFACE_("Manual Transform:"), ICON_NONE); row = uiLayoutRow(layout, false); diff --git a/source/blender/makesdna/DNA_cachefile_types.h b/source/blender/makesdna/DNA_cachefile_types.h index a353c94ae64..c0e662d8a48 100644 --- a/source/blender/makesdna/DNA_cachefile_types.h +++ b/source/blender/makesdna/DNA_cachefile_types.h @@ -75,9 +75,12 @@ typedef struct CacheFile { float scale; float frame; /* The frame/time to lookup in the cache file. */ + float frame_offset; /* The frame offset to subtract. */ short flag; /* Animation flag. */ short draw_flag; + + char padding[4]; } CacheFile; #ifdef __cplusplus diff --git a/source/blender/makesrna/intern/rna_cachefile.c b/source/blender/makesrna/intern/rna_cachefile.c index bfe419ca8e3..0e59c3784bc 100644 --- a/source/blender/makesrna/intern/rna_cachefile.c +++ b/source/blender/makesrna/intern/rna_cachefile.c @@ -147,6 +147,15 @@ static void rna_def_cachefile(BlenderRNA *brna) " or to determine which file to use in a file sequence"); RNA_def_property_update(prop, 0, "rna_CacheFile_update"); + prop = RNA_def_property(srna, "frame_offset", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "frame_offset"); + RNA_def_property_range(prop, -MAXFRAME, MAXFRAME); + RNA_def_property_ui_text(prop, "Frame Offset", + "Subtracted from the current frame to use for " + "looking up the data in the cache file, or to " + "determine which file to use in a file sequence"); + RNA_def_property_update(prop, 0, "rna_CacheFile_update"); + /* ----------------- Axis Conversion ----------------- */ prop = RNA_def_property(srna, "forward_axis", PROP_ENUM, PROP_NONE); diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c index 86c2a24eddf..e28459814e2 100644 --- a/source/blender/modifiers/intern/MOD_meshsequencecache.c +++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c @@ -108,7 +108,6 @@ static DerivedMesh *applyModifier(ModifierData *md, const struct EvaluationConte Scene *scene = md->scene; const float frame = BKE_scene_frame_get(scene); const float time = BKE_cachefile_time_offset(mcmd->cache_file, frame, FPS); - const char *err_str = NULL; CacheFile *cache_file = mcmd->cache_file; |