scale brush size on high dpi
This commit is contained in:
@@ -204,11 +204,11 @@ std::vector<NodeStrokePreview::StrokeFrame> NodeStrokePreview::stroke_draw_compu
|
||||
glm::vec2 mixer_bb_max(0, 0);
|
||||
for (int j = 0; j < 4; j++)
|
||||
{
|
||||
auto p = (xy(prev.pos) + s.scale * off_mix[j] * glm::orientate2(-s.angle));
|
||||
auto p = (xy(prev.pos) + App::I.zoom * s.scale * off_mix[j] * glm::orientate2(-s.angle));
|
||||
mixer_bb_min = glm::max({ 0, 0 }, glm::min(mixer_bb_min, p));
|
||||
mixer_bb_max = glm::min(mixer_sz, glm::max(mixer_bb_max, p));
|
||||
|
||||
B[j].pos = glm::vec4(xy(s.pos) + s.scale * off[j] * glm::orientate2(-s.angle) - glm::vec2(0, 1), 1, 1);
|
||||
B[j].pos = glm::vec4(xy(s.pos) + App::I.zoom * s.scale * off[j] * glm::orientate2(-s.angle) - glm::vec2(0, 1), 1, 1);
|
||||
B[j].uvs2 = p / mixer_sz;
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ void NodeStrokePreview::draw_stroke()
|
||||
|
||||
const auto& b = m_brush;
|
||||
m_stroke.m_filter_points = false;
|
||||
m_stroke.m_max_size = m_size.y * App::I.zoom;
|
||||
m_stroke.m_max_size = m_size.y;
|
||||
m_stroke.m_camera.fov = Canvas::I->m_cam_fov;
|
||||
m_stroke.m_camera.rot = Canvas::I->m_cam_rot;
|
||||
m_stroke.reset(true);
|
||||
@@ -280,12 +280,14 @@ void NodeStrokePreview::draw_stroke()
|
||||
{
|
||||
float w = m_size.x * App::I.zoom;
|
||||
float h = m_size.y * App::I.zoom;
|
||||
float pad = m_size.x * App::I.zoom * .15f;
|
||||
std::vector<glm::vec2> kp = { { pad, pad },{ pad, h - pad },{ w - pad, pad },{ w - pad, h - pad } };
|
||||
for (int i = 0; i < 20; i++)
|
||||
glm::vec2 pad = { 0, 0 };
|
||||
if (!b->m_tip_size_pressure)
|
||||
pad = m_size * App::I.zoom * .15f;
|
||||
std::vector<glm::vec2> kp = { pad, { pad.x, h - pad.y },{ w - pad.x, pad.y },{ w - pad.x, h - pad.y } };
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
float t = (float)i / 20.f;
|
||||
float p = 1.f - glm::abs(t * 2.f - 1.f);
|
||||
float t = (float)i / 100.f;
|
||||
float p = glm::pow(1.f - glm::abs(t * 2.f - 1.f), 2.f);
|
||||
m_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);
|
||||
@@ -312,7 +314,6 @@ void NodeStrokePreview::draw_stroke()
|
||||
ShaderManager::u_float(kShaderUniform::PatternDepth, b->m_pattern_depth);
|
||||
ShaderManager::u_int(kShaderUniform::PatternBlendMode, b->m_pattern_blend_mode);
|
||||
ShaderManager::u_vec2(kShaderUniform::PatternOffset, glm::vec2(b->m_pattern_rand_offset ? 0.5f : 0.0f));
|
||||
ShaderManager::u_int(kShaderUniform::UsePattern, b->m_pattern_enabled && b->m_pattern_eachsample);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, ortho_proj);
|
||||
|
||||
// DRAW DUAL BRUSH
|
||||
@@ -346,6 +347,7 @@ void NodeStrokePreview::draw_stroke()
|
||||
// DRAW MAIN BRUSH
|
||||
|
||||
ShaderManager::use(kShader::Stroke);
|
||||
ShaderManager::u_int(kShaderUniform::UsePattern, b->m_pattern_enabled && b->m_pattern_eachsample);
|
||||
ShaderManager::u_float(kShaderUniform::MixAlpha, b->m_tip_mix);
|
||||
ShaderManager::u_float(kShaderUniform::Wet, b->m_tip_wet);
|
||||
ShaderManager::u_float(kShaderUniform::Noise, b->m_tip_noise);
|
||||
|
||||
Reference in New Issue
Block a user