[Bf-blender-cvs] [1f47e3b49cd] temp-T95933-object-mode-curve-selection: Viewport size aware.
Jeroen Bakker
noreply at git.blender.org
Fri Jul 1 13:19:40 CEST 2022
Commit: 1f47e3b49cd7be838b8d730912d05c6e87897cf6
Author: Jeroen Bakker
Date: Fri Jul 1 13:19:27 2022 +0200
Branches: temp-T95933-object-mode-curve-selection
https://developer.blender.org/rB1f47e3b49cd7be838b8d730912d05c6e87897cf6
Viewport size aware.
===================================================================
M source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_curves_vert.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 6b57cb27169..8dc240996ed 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
@@ -45,23 +45,24 @@ void main()
thickness,
thick_time);
- vec4 pos_ndc = point_world_to_ndc(world_pos);
+ vec4 pos_ndc;
if (hairThicknessRes > 1) {
if (thick_time == 0.0) {
- float thick_time = ((gl_VertexID % hairThicknessRes) == 0 ? -1.0 : 1.0) * 0.0001;
+ float thick_time = ((gl_VertexID % hairThicknessRes) == 0 ? -1.0 : 1.0) * 0.00001;
world_pos = center_world_pos + binor * thick_time;
}
- vec3 pos_view = point_world_to_view(world_pos);
- vec3 orig_pos_view = point_world_to_view(center_world_pos);
- vec3 d = pos_view - orig_pos_view;
- /* TODO: make screen size aware. */
- float distance = length(d.xy);
- if (distance < 0.0001) {
- distance = 0.0001;
- }
- pos_view = orig_pos_view + distance * normalize(d);
- pos_ndc = point_view_to_ndc(pos_view);
+ pos_ndc = point_world_to_ndc(world_pos);
+ vec4 orig_pos_ndc = point_world_to_ndc(center_world_pos);
+ vec4 d = pos_ndc - orig_pos_ndc;
+ float distance = max(length(d.xy),
+ (drw_view.viewport_size_inverse.x * drw_view.wininv[0][0] +
+ drw_view.viewport_size_inverse.y * drw_view.wininv[1][1]) /
+ 2.0);
+ pos_ndc = orig_pos_ndc + distance * normalize(d);
+ }
+ else {
+ pos_ndc = point_world_to_ndc(world_pos);
}
gl_Position = pos_ndc;
More information about the Bf-blender-cvs
mailing list