Fix subpixel precision in transform node
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 5 Jun 2014 16:05:05 +0000 (22:05 +0600)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 5 Jun 2014 16:05:05 +0000 (22:05 +0600)
The node was using sampler from the callee node and passed
it to the input nodes. Since the fact that compositor output
node uses NEAREST interpolation (why it uses nearest is the
whole separate story) it's not possible to have subpixel
precision in such cases:

  <image> -> <translate> -> <output>

For now solving by hard-coding translate node to use BILINEAR
interpolation. It can't become worse in this node anyway and
the sampling pipeline is to be re-visited from scratch.

source/blender/compositor/operations/COM_TranslateOperation.cpp

index 64da954a2e10159b0b92f1af721952a2cb9adffc..191388a42fbedebd1073df8a443921dda43dcbe0 100644 (file)
@@ -59,7 +59,7 @@ void TranslateOperation::executePixelSampled(float output[4], float x, float y,
        float originalXPos = x - this->getDeltaX();
        float originalYPos = y - this->getDeltaY();
 
-       this->m_inputOperation->readSampled(output, originalXPos, originalYPos, sampler);
+       this->m_inputOperation->readSampled(output, originalXPos, originalYPos, COM_PS_BILINEAR);
 }
 
 bool TranslateOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output)