diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-23 21:16:11 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2017-11-23 21:16:11 +0300 |
commit | 4f8bffa7bfe46192b43c75d864e2117369cbffdd (patch) | |
tree | 3e869e57151f4d487106d59bba1f2282a9578a44 /source | |
parent | b79b8478ee3bb1b115c5d6b8bdb0cc74d5169955 (diff) | |
parent | debd9f6ea1286533d4d5c9262fa6724c862fe35e (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 5 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 2 | ||||
-rw-r--r-- | source/blender/nodes/shader/node_shader_tree.c | 4 | ||||
-rw-r--r-- | source/blender/render/intern/source/render_result.c | 14 |
4 files changed, 20 insertions, 5 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 4aaaab2c5ad..5d0ca35cc1f 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -3348,7 +3348,10 @@ float calc_gradient(vec3 p, int gradient_type) return atan(y, x) / (M_PI * 2) + 0.5; } else { - float r = max(1.0 - sqrt(x * x + y * y + z * z), 0.0); + /* Bias a little bit for the case where p is a unit length vector, + * to get exactly zero instead of a small random value depending + * on float precision. */ + float r = max(0.999999 - sqrt(x * x + y * y + z * z), 0.0); if (gradient_type == 5) { /* quadratic sphere */ return r * r; } diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index d2a7bd65d4a..cc139ec1b89 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -5245,7 +5245,7 @@ static void rna_def_scene_ffmpeg_settings(BlenderRNA *brna) }; static const EnumPropertyItem ffmpeg_crf_items[] = { - {FFM_CRF_NONE, "NONE", 0, "None; use constant bit-rate", + {FFM_CRF_NONE, "NONE", 0, "None; use custom bitrate", "Use constant bit rate, rather than constant output quality"}, {FFM_CRF_LOSSLESS, "LOSSLESS", 0, "Lossless", ""}, {FFM_CRF_PERC_LOSSLESS, "PERC_LOSSLESS", 0, "Perceptually lossless", ""}, diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index dc48aa324b2..bd22a2be647 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -348,7 +348,9 @@ static void ntree_shader_link_builtin_group_normal( * some internal re-linking in order to avoid cycles. */ bNode *group_output_node = ntreeFindType(group_ntree, NODE_GROUP_OUTPUT); - BLI_assert(group_output_node != NULL); + if (group_output_node == NULL) { + return; + } bNodeSocket *group_output_node_displacement_socket = nodeFindSocket(group_output_node, SOCK_IN, diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index 53169c256a9..0e7f35fbca3 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -921,6 +921,17 @@ bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *fil } } + /* We only store RGBA passes as half float, for + * others precision loss can be problematic. */ + bool pass_half_float = half_float && + (STREQ(rp->chan_id, "RGB") || + STREQ(rp->chan_id, "RGBA") || + STREQ(rp->chan_id, "R") || + STREQ(rp->chan_id, "G") || + STREQ(rp->chan_id, "B") || + STREQ(rp->chan_id, "A")); + + for (int a = 0; a < rp->channels; a++) { /* Save Combined as RGBA if single layer save. */ char passname[EXR_PASS_MAXNAME]; @@ -936,10 +947,9 @@ bool RE_WriteRenderResult(ReportList *reports, RenderResult *rr, const char *fil layname[0] = '\0'; } - /* Add channel. */ IMB_exr_add_channel(exrhandle, layname, passname, viewname, rp->channels, rp->channels * rr->rectx, rp->rect + a, - STREQ(rp->name, RE_PASSNAME_Z) ? false : half_float); + pass_half_float); } } } |