Fix (unreported): TextureOperation inputs have no resolution

When compositor node tree has a texture node, TextureOperation vector inputs  has always {0, 0} resolution instead of having same resolution as TextureOperation which is the expected behaviour for resolutions propagation.

Current TextureOperation determineResolution implementation doesn't determine inputs resolution, breaking propagation of preferred resolution and that's the reason why they are always 0. Setting scene resolution always would mean it is its own resolution and could make sense, but setting it only when preferred resolution is 0, breaks preferred resolution logic affecting other operations as explained in D10972. In any case scene resolution is already the default preferred resolution on viewer and compositor nodes.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D11381
This commit is contained in:
Manuel Castilla 2021-05-31 12:26:46 +02:00
parent 83fe479c7f
commit e9f2f17e85
Notes: blender-bot 2023-02-14 10:21:10 +01:00
Referenced by commit b18a214ecb, Fix: Compositor test desintegrate failing on arm64
2 changed files with 8 additions and 11 deletions

View File

@ -75,16 +75,13 @@ void TextureBaseOperation::deinitExecution()
void TextureBaseOperation::determineResolution(unsigned int resolution[2],
unsigned int preferredResolution[2])
{
if (preferredResolution[0] == 0 || preferredResolution[1] == 0) {
int width = this->m_rd->xsch * this->m_rd->size / 100;
int height = this->m_rd->ysch * this->m_rd->size / 100;
resolution[0] = width;
resolution[1] = height;
}
else {
resolution[0] = preferredResolution[0];
resolution[1] = preferredResolution[1];
}
/* Determine inputs resolutions. */
unsigned int temp[2];
NodeOperation::determineResolution(temp, preferredResolution);
/* We don't use inputs resolutions because they are only used as parameters, not image data. */
resolution[0] = preferredResolution[0];
resolution[1] = preferredResolution[1];
}
void TextureAlphaOperation::executePixelSampled(float output[4],

View File

@ -44,7 +44,7 @@ class TextureBaseOperation : public NodeOperation {
protected:
/**
* Determine the output resolution. The resolution is retrieved from the Renderer
* Determine the output resolution.
*/
void determineResolution(unsigned int resolution[2],
unsigned int preferredResolution[2]) override;