pixel based brush size, Photoshop slider curve, improve abr import
This commit is contained in:
@@ -246,7 +246,7 @@ void NodeStrokePreview::draw_stroke()
|
||||
|
||||
const auto& b = m_brush;
|
||||
m_stroke.m_filter_points = false;
|
||||
m_stroke.m_max_size = m_size.y / 800.f * App::I.zoom;
|
||||
m_stroke.m_max_size = m_size.y * App::I.zoom;
|
||||
m_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_stroke.reset(true);
|
||||
@@ -266,11 +266,15 @@ void NodeStrokePreview::draw_stroke()
|
||||
dual_brush->m_jitter_spread = b->m_dual_scatter;
|
||||
dual_brush->m_jitter_angle = b->m_dual_rotate;
|
||||
dual_brush->m_tip_texture = b->m_dual_texture;
|
||||
m_dual_stroke.m_filter_points = false;
|
||||
m_dual_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_dual_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_dual_stroke.reset(true);
|
||||
m_dual_stroke.start(dual_brush);
|
||||
|
||||
if (b->m_dual_enabled)
|
||||
{
|
||||
m_dual_stroke.m_filter_points = false;
|
||||
m_dual_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_dual_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_dual_stroke.reset(true);
|
||||
m_dual_stroke.start(dual_brush);
|
||||
}
|
||||
|
||||
{
|
||||
float w = m_size.x;
|
||||
@@ -282,7 +286,8 @@ void NodeStrokePreview::draw_stroke()
|
||||
float t = (float)i / 20.f;
|
||||
float p = 1.f - glm::abs(t * 2.f - 1.f);
|
||||
m_stroke.add_point(glm::vec3(BezierCurve::Bezier2D(kp, t), 0), p);
|
||||
m_dual_stroke.add_point(glm::vec3(BezierCurve::Bezier2D(kp, t), 0), p);
|
||||
if (b->m_dual_enabled)
|
||||
m_dual_stroke.add_point(glm::vec3(BezierCurve::Bezier2D(kp, t), 0), p);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -363,8 +368,8 @@ void NodeStrokePreview::draw_stroke()
|
||||
}
|
||||
|
||||
ShaderManager::use(kShader::Stroke);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, f.col);
|
||||
ShaderManager::u_float(kShaderUniform::Alpha, f.pressure);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, { 0, 0, 0, 1 } /*f.col*/);
|
||||
ShaderManager::u_float(kShaderUniform::Alpha, glm::max(f.pressure, m_min_flow));
|
||||
auto rect = stroke_draw_samples(f.shapes, m_tex);
|
||||
}
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
@@ -383,6 +388,7 @@ void NodeStrokePreview::draw_stroke()
|
||||
float aspect = size.x / size.y;
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f / aspect, .5f / aspect, -1.f, 1.f));
|
||||
m_plane.draw_fill();
|
||||
//m_rtt.clear({ .3f, .3f, .3f, 1.f });
|
||||
m_tex_background.bind();
|
||||
glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, size.x, size.y);
|
||||
|
||||
@@ -462,28 +468,5 @@ void NodeStrokePreview::handle_resize(glm::vec2 old_size, glm::vec2 new_size)
|
||||
m_tex_dual.create((int)new_size.x, (int)new_size.y);
|
||||
m_tex_background.create((int)new_size.x, (int)new_size.y);
|
||||
|
||||
float w = new_size.x;
|
||||
float h = new_size.y;
|
||||
m_stroke.m_filter_points = false;
|
||||
m_stroke.m_max_size = m_size.y / 800.f * App::I.zoom;
|
||||
m_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_stroke.reset(true);
|
||||
m_stroke.start(m_brush);
|
||||
m_dual_stroke.m_filter_points = false;
|
||||
//m_dual_stroke.m_max_size = m_size.y / 800.f * App::I.zoom;
|
||||
m_dual_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_dual_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_dual_stroke.reset(true);
|
||||
m_dual_stroke.start(m_brush);
|
||||
std::vector<glm::vec2> kp = { { pad, pad },{ pad, h - pad },{ w - pad, pad },{ w - pad, h - pad } };
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
float t = (float)i / 20.f;
|
||||
float p = 1.f - glm::abs(t * 2.f - 1.f);
|
||||
m_stroke.add_point(glm::vec3(BezierCurve::Bezier2D(kp, t), 0), p);
|
||||
m_dual_stroke.add_point(glm::vec3(BezierCurve::Bezier2D(kp, t), 0), p);
|
||||
}
|
||||
|
||||
draw_stroke();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user