[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