fix black sample

This commit is contained in:
2018-08-24 15:53:05 +02:00
parent 1c3e1b7e55
commit ea09b4edb7
2 changed files with 12 additions and 0 deletions

View File

@@ -183,6 +183,8 @@ std::vector<ui::StrokeSample> ui::Stroke::compute_samples()
s.angle += curve_angle;
}
m_prev_sample = s;
if (!s.valid())
LOG("Invalid sample");
samples.push_back(s);
}
return std::move(samples);
@@ -215,6 +217,8 @@ void ui::Stroke::add_point(glm::vec2 pos, float pressure)
m_keypoints.back().dist + glm::distance(m_keypoints.back().pos, pos);
if (m_keypoints.empty())
m_prev_sample.origin = pos;
else if (m_keypoints.back().pos == pos)
return; // skip same point, leading to black samples (NaN values)
Keypoint kp;
kp.pos = pos;
kp.pressure = pressure;

View File

@@ -47,6 +47,14 @@ struct StrokeSample
float size = 0;
float flow = 0;
float angle = 0;
bool valid() const
{
return !(
glm::any(glm::isnan(col)) ||
glm::any(glm::isnan(pos)) ||
glm::any(glm::isnan(origin))
);
}
};
class BrushMesh