From 1a71f9d2b8174009d1a79fd555ed33d20dc5c078 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 8 Jun 2022 16:52:13 +0200 Subject: Curves: use radius of middle point to determine curve shape See {rBb69aad60bda23a53482b2c2ae98715c23a715bc8} for more details. --- source/blender/draw/intern/draw_curves.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/blender/draw/intern/draw_curves.cc b/source/blender/draw/intern/draw_curves.cc index 749383edc6d..c40f2275968 100644 --- a/source/blender/draw/intern/draw_curves.cc +++ b/source/blender/draw/intern/draw_curves.cc @@ -339,8 +339,15 @@ DRWShadingGroup *DRW_shgroup_curves_create_sub(Object *object, blender::VArray radii = curves_component.attribute_get_for_read( "radius", ATTR_DOMAIN_POINT, 0.005f); const blender::IndexRange first_curve_points = curves.points_for_curve(0); + const float first_radius = radii[first_curve_points.first()]; + const float last_radius = radii[first_curve_points.last()]; + const float middle_radius = radii[first_curve_points.size() / 2]; hair_rad_root = radii[first_curve_points.first()]; hair_rad_tip = radii[first_curve_points.last()]; + hair_rad_shape = std::clamp( + safe_divide(middle_radius - first_radius, last_radius - first_radius) * 2.0f - 1.0f, + -1.0f, + 1.0f); } DRW_shgroup_uniform_texture(shgrp, "hairPointBuffer", curves_cache->final[subdiv].proc_tex); -- cgit v1.2.3