Commit: 83f01db7a96c6e86b22b1b28e9873b1c18f0a66a
Author: Sergey Sharybin
Date:   Fri Jul 10 11:37:51 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB83f01db7a96c6e86b22b1b28e9873b1c18f0a66a

Compositor: Fix node preview when input resolution is not known

The final render will use scene resolution in this case.

For example, when Color Input is plugger to preview and composite output
nodes, final render will flood-fill the final image which is a size of
scene resolution with this color. Before this fix the node preview was
empty. After this fix the node preview will be flood-filled with the
color.

Fixes T78586

Differential Revision: https://developer.blender.org/D8263

===================================================================

M       source/blender/compositor/operations/COM_PreviewOperation.cpp

===================================================================

diff --git a/source/blender/compositor/operations/COM_PreviewOperation.cpp 
b/source/blender/compositor/operations/COM_PreviewOperation.cpp
index 07bf534cd74..43d20271141 100644
--- a/source/blender/compositor/operations/COM_PreviewOperation.cpp
+++ b/source/blender/compositor/operations/COM_PreviewOperation.cpp
@@ -126,8 +126,21 @@ void PreviewOperation::determineResolution(unsigned int 
resolution[2],
                                            unsigned int preferredResolution[2])
 {
   NodeOperation::determineResolution(resolution, preferredResolution);
-  int width = resolution[0];
-  int height = resolution[1];
+
+  /* If resolution is 0 there are two possible scenarios:
+   * - Either node is not connected at all
+   * - It is connected to input which doesn't have own resolution (i.e. color 
input).
+   *
+   * In the former case we rely on the execution system to not evaluate this 
node.
+   *
+   * For the latter case we use 1 pixel preview, so that it's possible to see 
preview color in the
+   * preview. This is how final F12 render will behave (flood-fill final frame 
with the color).
+   *
+   * Having things consistent in terms that node preview is scaled down F12 
render is a very
+   * natural thing to do. */
+  int width = max_ii(1, resolution[0]);
+  int height = max_ii(1, resolution[1]);
+
   this->m_divider = 0.0f;
   if (width > height) {
     this->m_divider = (float)COM_PREVIEW_SIZE / (width);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to