Merge branch 'master' into blender2.8

This commit is contained in:
2018-07-13 12:22:21 +02:00
12 changed files with 222 additions and 1 deletions

View File

@@ -89,6 +89,18 @@ void MathNode::convertToOperations(NodeConverter &converter, const CompositorCon
case NODE_MATH_ATAN2:
operation = new MathArcTan2Operation();
break;
case NODE_MATH_FLOOR:
operation = new MathFloorOperation();
break;
case NODE_MATH_CEIL:
operation = new MathCeilOperation();
break;
case NODE_MATH_FRACT:
operation = new MathFractOperation();
break;
case NODE_MATH_SQRT:
operation = new MathSqrtOperation();
break;
}
if (operation) {

View File

@@ -356,3 +356,50 @@ void MathArcTan2Operation::executePixelSampled(float output[4], float x, float y
clampIfNeeded(output);
}
void MathFloorOperation::executePixelSampled(float output[4], float x, float y, PixelSampler sampler)
{
float inputValue1[4];
this->m_inputValue1Operation->readSampled(inputValue1, x, y, sampler);
output[0] = floor(inputValue1[0]);
clampIfNeeded(output);
}
void MathCeilOperation::executePixelSampled(float output[4], float x, float y, PixelSampler sampler)
{
float inputValue1[4];
this->m_inputValue1Operation->readSampled(inputValue1, x, y, sampler);
output[0] = ceil(inputValue1[0]);
clampIfNeeded(output);
}
void MathFractOperation::executePixelSampled(float output[4], float x, float y, PixelSampler sampler)
{
float inputValue1[4];
this->m_inputValue1Operation->readSampled(inputValue1, x, y, sampler);
output[0] = inputValue1[0] - floor(inputValue1[0]);
clampIfNeeded(output);
}
void MathSqrtOperation::executePixelSampled(float output[4], float x, float y, PixelSampler sampler)
{
float inputValue1[4];
this->m_inputValue1Operation->readSampled(inputValue1, x, y, sampler);
if (inputValue1[0] > 0)
output[0] = sqrt(inputValue1[0]);
else
output[0] = 0.0f;
clampIfNeeded(output);
}

View File

@@ -175,4 +175,28 @@ public:
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler);
};
class MathFloorOperation : public MathBaseOperation {
public:
MathFloorOperation() : MathBaseOperation() {}
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler);
};
class MathCeilOperation : public MathBaseOperation {
public:
MathCeilOperation() : MathBaseOperation() {}
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler);
};
class MathFractOperation : public MathBaseOperation {
public:
MathFractOperation() : MathBaseOperation() {}
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler);
};
class MathSqrtOperation : public MathBaseOperation {
public:
MathSqrtOperation() : MathBaseOperation() {}
void executePixelSampled(float output[4], float x, float y, PixelSampler sampler);
};
#endif