diff --git a/src/abr.cpp b/src/abr.cpp index baedeaa..a7049b3 100644 --- a/src/abr.cpp +++ b/src/abr.cpp @@ -278,7 +278,7 @@ std::vector> ABR::compute_brushes(const std::string& path b->m_dual_flow = .90f; b->m_dual_opacity = 1.f; - //b->m_tip_aspect = (1.f - samp->value("Rndn") * 0.01) * 0.5f + 0.5f; + b->m_dual_aspect = (1.f - samp->value("Rndn") * 0.01) * 0.5f + 0.5f; b->m_dual_size = samp->value("Dmtr") / b->m_tip_size; b->m_dual_spacing = samp->value("Spcn") * 0.01f; diff --git a/src/brush.h b/src/brush.h index 08d7d79..6cba418 100644 --- a/src/brush.h +++ b/src/brush.h @@ -24,6 +24,7 @@ public: glm::vec4 m_tip_color = { 0, 0, 0, 1 }; glm::vec2 m_tip_scale = { 1.f, 1.f }; + glm::vec2 m_dual_scale = { 1.f, 1.f }; float m_tip_size = 50; float m_tip_spacing = .25; float m_tip_flow = 1.f; @@ -44,47 +45,47 @@ public: float m_jitter_scale = 0; float m_jitter_angle = 0; float m_jitter_scatter = 0; - bool m_jitter_scatter_bothaxis = false; + bool m_jitter_scatter_bothaxis = false; float m_jitter_flow = 0; float m_jitter_opacity = 0; float m_jitter_hue = 0; float m_jitter_sat = 0; float m_jitter_val = 0; - int m_blend_mode = 0; + int m_blend_mode = 0; - bool m_tip_invert = false; - bool m_tip_flipx = false; - bool m_tip_flipy = false; - bool m_pattern_enabled = false; - bool m_dual_enabled = false; - int m_dual_blend_mode = 1; - bool m_dual_randflip = false; + bool m_tip_invert = false; + bool m_tip_flipx = false; + bool m_tip_flipy = false; + bool m_pattern_enabled = false; + bool m_dual_enabled = false; + int m_dual_blend_mode = 1; + bool m_dual_randflip = false; float m_dual_size = .75; float m_dual_spacing = .25; float m_dual_scatter = 0; - bool m_dual_scatter_bothaxis = false; - bool m_dual_invert = false; - bool m_dual_flipx = false; - bool m_dual_flipy = false; - bool m_tip_randflipx = false; - bool m_tip_randflipy = false; + bool m_dual_scatter_bothaxis = false; + bool m_dual_invert = false; + bool m_dual_flipx = false; + bool m_dual_flipy = false; + bool m_tip_randflipx = false; + bool m_tip_randflipy = false; float m_tip_aspect = 0.5f; float m_dual_flow = .75f; float m_dual_opacity = 1.f; float m_dual_rotate = .25f; float m_dual_angle = 0; - int m_dual_count = 1; - glm::vec2 m_dual_scale = { 1.f, 1.f }; + float m_dual_aspect = 0.5f; + int m_dual_count = 1; - int m_pattern_blend_mode = 1; - bool m_pattern_eachsample = false; - bool m_pattern_invert = false; - bool m_pattern_flipx = false; - bool m_pattern_flipy = false; + int m_pattern_blend_mode = 1; + bool m_pattern_eachsample = false; + bool m_pattern_invert = false; + bool m_pattern_flipx = false; + bool m_pattern_flipy = false; float m_pattern_scale = .25f; float m_pattern_brightness = 0.5f; float m_pattern_contrast = 0.5f; - bool m_pattern_rand_offset = false; + bool m_pattern_rand_offset = false; float m_pattern_depth = 1.f; bool load_tip(const std::string& path, const std::string& thumb); diff --git a/src/canvas.cpp b/src/canvas.cpp index a06135e..05749f4 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -921,6 +921,7 @@ void Canvas::stroke_start(glm::vec3 point, float pressure) dual_brush->m_jitter_scatter_bothaxis = m_current_brush->m_dual_scatter_bothaxis; dual_brush->m_jitter_angle = m_current_brush->m_dual_rotate; dual_brush->m_tip_texture = m_current_brush->m_dual_texture; + dual_brush->m_tip_aspect = m_current_brush->m_dual_aspect; m_dual_stroke = std::make_unique(); m_dual_stroke->m_camera.rot = m_cam_rot; m_dual_stroke->m_camera.fov = m_cam_fov; diff --git a/src/node_panel_brush.cpp b/src/node_panel_brush.cpp index de56679..68f5d24 100644 --- a/src/node_panel_brush.cpp +++ b/src/node_panel_brush.cpp @@ -536,6 +536,7 @@ bool NodePanelBrushPreset::save() i.m_dual_rotate = b->m_dual_rotate; i.m_dual_angle = b->m_dual_angle; i.m_dual_count = b->m_dual_count; + i.m_dual_aspect = b->m_dual_aspect; i.m_dual_scale = b->m_dual_scale; i.m_pattern_eachsample = b->m_pattern_eachsample; @@ -638,6 +639,7 @@ bool NodePanelBrushPreset::restore() b->m_dual_rotate = i.m_dual_rotate; b->m_dual_angle = i.m_dual_angle; b->m_dual_count = i.m_dual_count; + b->m_dual_aspect = i.m_dual_aspect; b->m_dual_scale = i.m_dual_scale; b->m_pattern_eachsample = i.m_pattern_eachsample; diff --git a/src/node_panel_brush.h b/src/node_panel_brush.h index 787a269..ad27037 100644 --- a/src/node_panel_brush.h +++ b/src/node_panel_brush.h @@ -105,6 +105,7 @@ class NodePanelBrushPreset : public Node glm::vec4 m_tip_color{ 0, 0, 0, 1 }; glm::vec2 m_tip_scale = { 1.f, 1.f }; + glm::vec2 m_dual_scale = { 1.f, 1.f }; float m_tip_size = 0; float m_tip_spacing = 0; float m_tip_flow = 0; @@ -125,37 +126,37 @@ class NodePanelBrushPreset : public Node float m_jitter_scale = 0; float m_jitter_angle = 0; float m_jitter_scatter = 0; - bool m_jitter_scatter_bothaxis = false; + bool m_jitter_scatter_bothaxis = false; float m_jitter_flow = 0; float m_jitter_opacity = 0; float m_jitter_hue = 0; float m_jitter_sat = 0; float m_jitter_val = 0; - int m_blend_mode = 0; + float m_dual_aspect = 0.5f; + int m_blend_mode = 0; - bool m_tip_invert = false; - bool m_tip_flipx = false; - bool m_tip_flipy = false; - bool m_pattern_enabled = false; - bool m_dual_enabled = false; - int m_dual_blend_mode = 0; - bool m_dual_randflip = false; + bool m_tip_invert = false; + bool m_tip_flipx = false; + bool m_tip_flipy = false; + bool m_pattern_enabled = false; + bool m_dual_enabled = false; + int m_dual_blend_mode = 0; + bool m_dual_randflip = false; float m_dual_size = 0; float m_dual_spacing = 0; float m_dual_scatter = 0; - bool m_dual_scatter_bothaxis = false; - bool m_dual_invert = false; - bool m_dual_flipx = false; - bool m_dual_flipy = false; - bool m_tip_randflipx = false; - bool m_tip_randflipy = false; + bool m_dual_scatter_bothaxis = false; + bool m_dual_invert = false; + bool m_dual_flipx = false; + bool m_dual_flipy = false; + bool m_tip_randflipx = false; + bool m_tip_randflipy = false; float m_tip_aspect = 0; float m_dual_flow = .75f; float m_dual_opacity = 1.f; float m_dual_rotate = .25f; float m_dual_angle = 0; - int m_dual_count = 1; - glm::vec2 m_dual_scale = { 1.f, 1.f }; + int m_dual_count = 1; bool m_pattern_eachsample = false; bool m_pattern_invert = false; diff --git a/src/node_stroke_preview.cpp b/src/node_stroke_preview.cpp index 2364a49..c3c5bac 100644 --- a/src/node_stroke_preview.cpp +++ b/src/node_stroke_preview.cpp @@ -269,6 +269,7 @@ void NodeStrokePreview::draw_stroke() dual_brush->m_jitter_scatter_bothaxis = b->m_dual_scatter_bothaxis; dual_brush->m_jitter_angle = b->m_dual_rotate; dual_brush->m_tip_texture = b->m_dual_texture; + dual_brush->m_tip_aspect = b->m_dual_aspect; if (b->m_dual_enabled) {