Fix T39189: Node editor Map Uv requires an scale node to work.

This is a regression caused by rB67134a7bf689279785e2e40b29cd24243813998b
The UV coordinates read from the UV input must be scaled by the Image
input size instead of the UV input size.

Also now this node uses the UV input resolution instead of the Image
resolution, since this is what determines the available resolution. The
image is EWA-sampled anyway, it's resolution does not have a direct
impact.
This commit is contained in:
Lukas Tönne 2014-03-15 10:24:07 +01:00
parent 2aff2435f0
commit caf5d90fb0

@ -29,6 +29,7 @@ MapUVOperation::MapUVOperation() : NodeOperation()
this->addOutputSocket(COM_DT_COLOR);
this->m_alpha = 0.0f;
this->setComplex(true);
setResolutionInputSocketIndex(1);
this->m_inputUVProgram = NULL;
this->m_inputColorProgram = NULL;
@ -84,8 +85,8 @@ bool MapUVOperation::read_uv(float x, float y, float &r_u, float &r_v, float &r_
else {
float col[4];
m_inputUVProgram->readSampled(col, x, y, COM_PS_BILINEAR);
r_u = col[0] * width;
r_v = col[1] * height;
r_u = col[0] * m_inputColorProgram->getWidth();
r_v = col[1] * m_inputColorProgram->getHeight();
r_alpha = col[2];
return true;
}