[Bf-blender-cvs] [cbd0b7c7d09] temp-T95933-object-mode-curve-selection: Testing.
Jeroen Bakker
noreply at git.blender.org
Tue Jun 28 15:35:04 CEST 2022
Commit: cbd0b7c7d09a2d686ac237af122166edf39bc099
Author: Jeroen Bakker
Date: Tue Jun 28 13:51:26 2022 +0200
Branches: temp-T95933-object-mode-curve-selection
https://developer.blender.org/rBcbd0b7c7d09a2d686ac237af122166edf39bc099
Testing.
===================================================================
M source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl
M source/blender/draw/intern/shaders/common_hair_lib.glsl
===================================================================
diff --git a/source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl
index 94cba760f9d..04f69fe82cd 100644
--- a/source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl
+++ b/source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.glsl
@@ -43,7 +43,25 @@ void main()
thickness,
thick_time);
- gl_Position = point_world_to_ndc(world_pos);
+ vec4 pos_ndc = point_world_to_ndc(world_pos);
+
+ if (hairThicknessRes > 1) {
+ vec3 orig_pos;
+ orig_pos = world_pos + binor * -thick_time;
+ vec4 orig_pos_ndc = point_world_to_ndc(orig_pos);
+ vec3 orig_pos_view = point_world_to_view(orig_pos);
+ gl_Position.xyz = orig_pos_view;
+ return;
+ vec4 d = pos_ndc - orig_pos_ndc;
+ float distance = length(d.xy);
+ /*if (distance < 0.01) {
+ distance = 0.01;
+ }*/
+ pos_ndc = orig_pos_ndc + d * distance;
+ }
+
+ gl_Position = pos_ndc;
+
#ifdef USE_GEOM
vert.pos = point_world_to_view(world_pos);
#endif
diff --git a/source/blender/draw/intern/shaders/common_hair_lib.glsl b/source/blender/draw/intern/shaders/common_hair_lib.glsl
index e235da91e8d..d6bde2ac2ec 100644
--- a/source/blender/draw/intern/shaders/common_hair_lib.glsl
+++ b/source/blender/draw/intern/shaders/common_hair_lib.glsl
@@ -210,8 +210,9 @@ void hair_get_pos_tan_binor_time(bool is_persp,
/* Take object scale into account.
* NOTE: This only works fine with uniform scaling. */
float scale = 1.0 / length(mat3(invmodel_mat) * wbinor);
+ thick_time *= scale; // HACK: thick_time is now in world space...
- wpos += wbinor * thick_time * scale;
+ wpos += wbinor * thick_time;
}
else {
/* NOTE: Ensures 'hairThickTime' is initialized -
More information about the Bf-blender-cvs
mailing list