diff --git a/source/blender/draw/engines/overlay/overlay_armature.cc b/source/blender/draw/engines/overlay/overlay_armature.cc index 33b2fdb6050..f276919790a 100644 --- a/source/blender/draw/engines/overlay/overlay_armature.cc +++ b/source/blender/draw/engines/overlay/overlay_armature.cc @@ -464,7 +464,6 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata) DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo); DRW_shgroup_uniform_float_copy(grp, "alpha", 1.0f); DRW_shgroup_uniform_bool_copy(grp, "do_smooth_wire", do_smooth_wire); - DRW_shgroup_uniform_float_copy(grp, "width_compression", WIRE_WIDTH_COMPRESSION); DRW_shgroup_uniform_texture_ref(grp, "depthTex", depth_tex); DRW_shgroup_state_enable(grp, DRW_STATE_BLEND_ALPHA); diff --git a/source/blender/draw/engines/overlay/overlay_shader_shared.h b/source/blender/draw/engines/overlay/overlay_shader_shared.h index 11752d306ef..c160d125b06 100644 --- a/source/blender/draw/engines/overlay/overlay_shader_shared.h +++ b/source/blender/draw/engines/overlay/overlay_shader_shared.h @@ -51,6 +51,9 @@ ENUM_OPERATORS(OVERLAY_GridBits, CUSTOM_GRID) /* Match: #SI_GRID_STEPS_LEN */ #define OVERLAY_GRID_STEPS_LEN 8 +/* Due to the encoding clamping the passed in floats, the wire width needs to be scaled down. */ +#define WIRE_WIDTH_COMPRESSION 16 + struct OVERLAY_GridData { float4 steps[OVERLAY_GRID_STEPS_LEN]; /* float arrays are padded to float4 in std130. */ float4 size; /* float3 padded to float4. */ diff --git a/source/blender/draw/engines/overlay/shaders/infos/overlay_armature_info.hh b/source/blender/draw/engines/overlay/shaders/infos/overlay_armature_info.hh index fb9557ccdb7..aefab3234b2 100644 --- a/source/blender/draw/engines/overlay/shaders/infos/overlay_armature_info.hh +++ b/source/blender/draw/engines/overlay/shaders/infos/overlay_armature_info.hh @@ -151,7 +151,6 @@ GPU_SHADER_INTERFACE_INFO(overlay_armature_shape_wire_geom_noperspective_iface, GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire) .do_static_compilation(true) .push_constant(Type::BOOL, "do_smooth_wire") - .push_constant(Type::FLOAT, "width_compression") .sampler(0, ImageType::DEPTH_2D, "depthTex") .vertex_in(0, Type::VEC3, "pos") /* Per instance. */ @@ -163,6 +162,7 @@ GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire) .geometry_layout(PrimitiveIn::LINES, PrimitiveOut::TRIANGLE_STRIP, 4) .geometry_source("overlay_armature_shape_wire_geom.glsl") .fragment_source("overlay_armature_shape_wire_frag.glsl") + .typedef_source("overlay_shader_shared.h") .additional_info("overlay_frag_output", "overlay_armature_common", "draw_globals"); GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire_clipped) @@ -174,7 +174,6 @@ GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire_no_geom) .metal_backend_only(true) .do_static_compilation(true) .push_constant(Type::BOOL, "do_smooth_wire") - .push_constant(Type::FLOAT, "width_compression") .sampler(0, ImageType::DEPTH_2D, "depthTex") .vertex_in(0, Type::VEC3, "pos") .vertex_in(2, Type::MAT4, "inst_obmat") @@ -182,6 +181,7 @@ GPU_SHADER_CREATE_INFO(overlay_armature_shape_wire_no_geom) .vertex_out(overlay_armature_shape_wire_geom_noperspective_iface) .vertex_source("overlay_armature_shape_wire_vert_no_geom.glsl") .fragment_source("overlay_armature_shape_wire_frag.glsl") + .typedef_source("overlay_shader_shared.h") .additional_info("overlay_frag_output", "overlay_armature_common", "draw_globals"); #endif diff --git a/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert.glsl b/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert.glsl index e98abd3171f..cbeaf9d7377 100644 --- a/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert.glsl +++ b/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert.glsl @@ -16,7 +16,7 @@ void main() geometry_in.finalColor.rgb = mix(state_color.rgb, bone_color.rgb, 0.5); geometry_in.finalColor.a = 1.0; /* Because the packing clamps the value, the wire width is passed in compressed. */ - geometry_in.wire_width = bone_color.a * width_compression; + geometry_in.wire_width = bone_color.a * WIRE_WIDTH_COMPRESSION; view_clipping_distances(world_pos); } diff --git a/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert_no_geom.glsl b/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert_no_geom.glsl index 80bc0113e6c..d2af57a98ac 100644 --- a/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert_no_geom.glsl +++ b/source/blender/draw/engines/overlay/shaders/overlay_armature_shape_wire_vert_no_geom.glsl @@ -31,7 +31,7 @@ void main() geometry_out.finalColor.rgb = mix(state_color.rgb, bone_color.rgb, 0.5); geometry_out.finalColor.a = 1.0; /* Because the packing clamps the value, the wire width is passed in compressed. */ - float wire_width = (bone_color.a * width_compression) * sizeEdge; + float wire_width = bone_color.a * WIRE_WIDTH_COMPRESSION * sizeEdge; geometry_out.wire_width = wire_width; /* Fetch vertex positions and transform to clip space ("vertex shader"). */ diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 00b0ec100d5..d456b75af56 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -268,12 +268,6 @@ typedef struct bPoseChannel_Runtime { /* PoseChannel ------------------------------------ */ -#ifdef __cplusplus -/* Used in the armature drawing code. Due to the encoding clamping the passed in floats, the wire - * width needs to be scaled down. */ -static constexpr float WIRE_WIDTH_COMPRESSION = 16.0f; -#endif - /** * PoseChannel * diff --git a/source/blender/makesrna/intern/rna_pose.cc b/source/blender/makesrna/intern/rna_pose.cc index 200c27e3f13..da1a9b0075e 100644 --- a/source/blender/makesrna/intern/rna_pose.cc +++ b/source/blender/makesrna/intern/rna_pose.cc @@ -1166,7 +1166,7 @@ static void rna_def_pose_channel(BlenderRNA *brna) RNA_def_property_float_sdna(prop, nullptr, "custom_shape_wire_width"); RNA_def_property_ui_text( prop, "Custom Shape Wire Width", "Adjust the line thickness of custom shapes"); - RNA_def_property_range(prop, 1.0f, WIRE_WIDTH_COMPRESSION); + RNA_def_property_range(prop, 1.0f, 16.0f); RNA_def_property_ui_range(prop, 1.0f, 10.0f, 1, 1); RNA_def_property_update(prop, NC_OBJECT | ND_POSE, "rna_Pose_update");