forked from 1b-agent/opencadstudio-upstream
fix(point): preserve relative marker sizing
Keep rendering, picking, block transforms, and plotted output on the same viewport-relative PDSIZE geometry without overloading wire width fields.
This commit is contained in:
1 parent
c5fe70627a
commit
7293bec1b9
69 files changed
+823
-221
No files matched your search
@@ -88,8 +88,14 @@ fn marker_relative(
|
||||
let normal = normalize(wire_const.marker_normal_scale.xyz);
|
||||
let axial = normal * dot(delta, normal);
|
||||
let planar = delta - axial;
|
||||
let world_size = wire_const.marker_normal_scale.w * 0.01
|
||||
* u.world_per_pixel * u.viewport_size.y;
|
||||
let origin_clip = u.view_rot * vec4<f32>(origin_relative, 1.0);
|
||||
let projection_scale = max(length(vec3<f32>(
|
||||
u.view_rot[0].y,
|
||||
u.view_rot[1].y,
|
||||
u.view_rot[2].y,
|
||||
)), 1e-12);
|
||||
let view_height = 2.0 * max(abs(origin_clip.w), 1e-6) / projection_scale;
|
||||
let world_size = wire_const.marker_normal_scale.w * 0.01 * view_height;
|
||||
return origin_relative + axial + planar * world_size;
|
||||
}
|
||||
|
||||
|
||||
@@ -116,7 +116,14 @@ fn marker_relative(position_high: vec3<f32>, position_low: vec3<f32>, instance:
|
||||
let normal = normalize(instance.marker_normal_scale.xyz);
|
||||
let axial = normal * dot(delta, normal);
|
||||
let planar = delta - axial;
|
||||
let world_size = instance.marker_normal_scale.w * 0.01 * u.world_per_pixel * u.viewport_size.y;
|
||||
let origin_clip = u.view_rot * vec4<f32>(origin_relative, 1.0);
|
||||
let projection_scale = max(length(vec3<f32>(
|
||||
u.view_rot[0].y,
|
||||
u.view_rot[1].y,
|
||||
u.view_rot[2].y,
|
||||
)), 1e-12);
|
||||
let view_height = 2.0 * max(abs(origin_clip.w), 1e-6) / projection_scale;
|
||||
let world_size = instance.marker_normal_scale.w * 0.01 * view_height;
|
||||
return origin_relative + axial + planar * world_size;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,14 @@ fn marker_relative(position_high: vec3<f32>, position_low: vec3<f32>, c: WireCon
|
||||
let normal = normalize(c.marker_normal_scale.xyz);
|
||||
let axial = normal * dot(delta, normal);
|
||||
let planar = delta - axial;
|
||||
let world_size = c.marker_normal_scale.w * 0.01 * u.world_per_pixel * u.viewport_size.y;
|
||||
let origin_clip = u.view_rot * vec4<f32>(origin_relative, 1.0);
|
||||
let projection_scale = max(length(vec3<f32>(
|
||||
u.view_rot[0].y,
|
||||
u.view_rot[1].y,
|
||||
u.view_rot[2].y,
|
||||
)), 1e-12);
|
||||
let view_height = 2.0 * max(abs(origin_clip.w), 1e-6) / projection_scale;
|
||||
let world_size = c.marker_normal_scale.w * 0.01 * view_height;
|
||||
return origin_relative + axial + planar * world_size;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user